본문 바로가기
IT관련 공부/백준(BaekJoon)

2480번

by 행복한 위드 2023. 1. 13.

2480번

문제를 보면 

1. 같은 눈이 3개가 나오면 10000원 + (같은 눈)*1000원의 상금을 받고

2. 같은 눈이 2개만 나오는 경우에는 1000원+(같은 눈)*100원의 상금을 받고

3. 모두 다른 눈이 나오는 경우에는 (그 중 가장 큰 눈)*100원의 상금을 받게 된다.

 

a, b, c= map(int, input().split())
ab_count = 0
ac_count = 0
bc_count = 0

if a==b: ab_count+= 1
elif b==c: bc_count+= 1
elif c==a: ac_count+= 1

if (a+b+c)/3 == a:
    print(10000+(a*1000))
elif ab_count==1 or ac_count:
    print(1000+(a*100))
elif bc_count == 1:
    print(1000+(b*100))
else:
    n = 0
    if a>b: n=a 
    else: n=b
    if b>c: n=b
    else: n=c
    if c>a: n=c
    else: n=a
    print(n*100)

처음에 생각했던 구상인데 되게 복잡하다.

주사위 카운트를 만들고 더하고 나눠서 맞는값이면 출력하고 이렇게했는데 당연히 결과는 틀렸다.

이 방법은 안되는 것 같아서 다른방법으로 구상했는데 결과는 다음과 같다.

array = list(map(int, input().split()))
count = 0
for i in range(1, 7):
    if array.count(i) == 3:
        print(10000+i*1000)
        count += 1
    elif array.count(i) ==2:
        print(1000+i*100)
        count += 1
    elif i == 6 and count == 0:    
        print(max(array)*100)

배열을 만들어서 숫자를 저장하고

반복문을 이용하여 배열의 count를 재서 출력하는 것이다.

array.count(1) 이면 배열안의 1이 있을경우 count는 올라가고 3개가 있을경우 if문을 실행시키게 하는 코드이다.

결과는 당연히 성공이고 

위의 코드도 될거같은데 해서 고민을 했다.

a, b, c= map(int, input().split())
ab_count = 0
ac_count = 0
bc_count = 0

if a==b: ab_count+= 1
elif b==c: bc_count+= 1
elif c==a: ac_count+= 1

if (a+b+c)/3 == a:
    print(10000+(a*1000))
elif ab_count==1 or ac_count:
    print(1000+(a*100))
elif bc_count == 1:
    print(1000+(b*100))
else:
    n = 0
    if a>=b: 
        n = a
    else:
        n = b
    if n>=c:
        n = n
    else:
        n = c
    print(n*100)

위의 코드를 정리를 했는데 a와 b가 같은경우 b와 c가 같은경우 c와 a가 같은경우 카운트를 올렸고

만약 세 숫자가 같은경우 /3을 하면 나머지 한개의 값이랑 같으니 1번째 조건이 출력되게 하였고

2번째조건은 카운트가 한개있을경우 두개의 숫자가 같은경우니 2번째 조건을 출력하게 된다.

마지막으로 else문은 한개일경우 제일 큰 숫자를 출력하는 것으로 a와 b를 비교 그후 n값을 c와 비교하여 제일 큰수를 n에 넣어 출력하는 것이다.

 

여기서 생각을 좀더 해서 if문 코드를 합칠 수 있을 것 같아 합쳐봤는데 결과가 잘 나왔다.

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

if (a+b+c)/3 == a:
    print(10000+(a*1000))
elif a==b  or a==c:
    print(1000+(a*100))
elif b==c:
    print(1000+(b*100))
else:
    n = 0
    if a>=b: 
        n = a
    else:
        n = b
    if n>=c:
        n = n
    else:
        n = c
    print(n*100)

위의 if문을 합쳐 계산한 결과이다

잘 되는 것을 확인할 수 있다.

조건문 파트는 여기까지고 조만간 정리해서 조건문 파트를 따로 올릴 계획이다.

'IT관련 공부 > 백준(BaekJoon)' 카테고리의 다른 글

백준 1010번  (0) 2025.06.10
2739번, 10950번, 8393번,  (0) 2023.01.13
14681번, 2884번, 2525번  (0) 2022.10.21
1330번, 9498번, 2753번  (0) 2022.10.14
10171번, 10172번, 25083번  (0) 2022.10.12