백준/브론즈4

[Python/C] 백준 2480번 - 주사위 세개

두부마라탕 2025. 4. 13. 14:58

문제

 

[Python] 코드

a, b, c = map(int, input().split())

if a == b == c:
    price = 10000 + a * 1000
elif a == b or b == c:
    price = 1000 + b * 100
elif a == c:
    price = 1000 + a * 100
else:
    price = max(a,b,c) * 100

print(price)

 

풀이

1. map함수와 split 함수를 이용해서 문자열을 나눈 뒤에 정수로 abc에 저장한다 (map함수의 사용법을 알게됐따!)

2. 이제 조건별로 나눠서 상금을 저장하고

    2-1. 눈이 두 개가 같았을 경우는 ab bc, ac로 나누었다. ac bc, ab로 나눠도 상관없다. 그냥 코드 줄이려고 문자 겹치는 걸 사용했다.

3. 상금을 출력했다.

 

[C] 코드

#include <stdio.h>

int main() {
    int a, b, c, price;

    scanf("%d %d %d", &a, &b, &c);

    if (a == b && b == c) {
        price = 10000 + a * 1000;
    }
    else if (a == b || b == c) {
        price = 1000 + b * 100;
    }
    else if (a == c) {
        price = 1000 + a * 100;
    }
    else {
        int max = a;
        if (b > max) max = b;
        if (c > max) max = c;
        price = max * 100;
    }

    printf("%d\n", price);

    return 0;
}

 

풀이

1. scanf로 주사위 눈을 받아준다.

2. 조건별로 상금을 설정한다.

    2-1. c같은 경우는 파이썬 처럼 a==b==c가 안되기 때문에 &&를 사용해준다

    2-2. c의 max 함수같은 경우는 2개 요소를 비교하는 거라 3가지 요소를 비교하는 현 상황엔 적합하지 않다. 그래서 일단 a를 max로 설정하고 b가 a보다 크다면 b가 max가 되게, a보다 큰 b가 c보다 작다면 c가 max가 되게 설정했고 그렇게 나온 max에 100을 곱했다. c가 b보다 작다면 if(c>max)가 성립이 안되기에 max는 b로 나오게 된다.

3. 그리고 나온 상금을 출력한다.