코딩테스트/파이썬 알고리즘 문제풀이 입문
[파이썬 알고리즘 문제풀이 입문] 코드 구현력 기르기 - 주사위 게임
*문제 본문은 강의 내용과 관련되어 있어 자세하게 적지 않았습니다.
문제
1에서 6까지의 눈을 가진 3개의 주사위를 던져서 다음과 같은 규칙에 따라 상금을 받는 게임이 있다.
규칙(1) 같은 눈이 3개가 나오면 10,000원 + (같은 눈) * 1,000원의 상금을 받게 된다.
규칙(2) 같은 눈이 2개만 나오는 경우에는 1,000원 + (같은 눈) * 100원의 상금을 받게 된다.
규칙(3) 모두 다른 눈이 나우는 경우에는 (그 중 가장 큰 눈) * 100원의 상금을 받게 된다.
N명이 주사위 게임에 참여했을 때, 가장 많은 상금을 받은 사람의 상금을 출력하는 프로그램을 작성하시오.
풀이
• 답안 : Python
import sys
input = sys.stdin.readline
N = int(input())
money = list()
for i in range(N):
dices = input().split()
dices.sort()
a, b, c = map(int, dices)
if a == b and b == c:
result = 10000 + a * 1000
elif a == b or a == c:
result = 1000 + a * 100
elif b == c:
result = 1000 + b * 100
else:
result = c * 100
money.append(result)
print(max(money))
• 답안 : Kotlin (내가 바꿔본 것 / 정확X)
import java.io.*
import java.util.*
fun main(args: Array<String>) = with(BufferedReader(InputStreamReader(System.`in`))){
var N = readLine().toInt()
var result = 0
var money : MutableList<Int> = mutableListOf()
for(i in 0 until N) {
var nums = readLine().split(" ").map{ it.toInt() }
nums.sorted()
if(nums[0] == nums[1] && nums[1] == nums[2]) {
result = 10000 + nums[0] * 1000
} else if(nums[0] == nums[1] || nums[0] == nums[2]) {
result = 1000 + nums[0] * 100
} else if(nums[1] == nums[2]) {
result = 1000 + nums[1] * 100
} else {
result = nums[2] * 100
}
money.add(result)
}
println(money.max())
}
- 처음에 눈의 개수를 비교하는 로직을 바로 생각해내지 못했다. 답안을 보니 쉬운 방법으로 진행되는걸 알 수 잇었다.
- 나는 리스트를 사용해서 max()로 최댓값을 구했는데, 원래 답안에서는 변수만을 가지고 최댓값을 구하는 방법을 사용했었다.
반응형
'코딩테스트 > 파이썬 알고리즘 문제풀이 입문' 카테고리의 다른 글
[파이썬 알고리즘 문제풀이 입문] 탐색&시뮬레이션 - 회문 문자열 검사 (0) | 2023.04.25 |
---|---|
[파이썬 알고리즘 문제풀이 입문] 코드 구현력 기르기 - 점수계산 (0) | 2023.04.25 |
[파이썬 알고리즘 문제풀이 입문] 코드 구현력 기르기 - 뒤집은 소수 (0) | 2023.04.24 |
[파이썬 알고리즘 문제풀이 입문] 코드 구현력 기르기 - 소수의 개수 (에라토스테네스 체) (0) | 2023.04.24 |
[파이썬 알고리즘 문제풀이 입문] 코드 구현력 기르기 - 자릿수의 합 (0) | 2023.04.11 |
댓글