Lumpy Space Princess - Adventure Time
코딩테스트/파이썬 알고리즘 문제풀이 입문

[파이썬 알고리즘 문제풀이 입문] 코드 구현력 기르기 - 주사위 게임

yaebb_82 2023. 4. 25.

*문제 본문은 강의 내용과 관련되어 있어 자세하게 적지 않았습니다.

 

 

 

 

문제

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()로 최댓값을 구했는데, 원래 답안에서는 변수만을 가지고 최댓값을 구하는 방법을 사용했었다.

 

 

 

반응형

댓글