Programming/백준

[브론즈 2] 백준 1233 - 주사위 (파이썬)

pental 2025. 5. 21. 19:23

https://www.acmicpc.net/problem/1233

풀이

  1. 합의 개수를 저장할 리스트 생성따라서 인덱스를 0부터 S1+S2+S3까지 만들고, 각 인덱스에 해당 합이 나오는 횟수를 저장한다.
  2. count = [0] * (S1 + S2 + S3 + 1)
  3. 최대 합은 S1 + S2 + S3이고, 최소 합은 3이다.
  4. 모든 주사위 눈 조합의 합을 카운트
    for i in range(1, S1 + 1):
        for j in range(1, S2 + 1):
            for k in range(1, S3 + 1):
                count[i + j + k] += 1
    
  5. 3중 for문을 돌며 각 눈의 합을 구하고, 그 합의 개수를 증가시킨다.
  6. 가장 자주 나온 합을 찾기
    max_val = -1
    who = -1
    for i in range(S1 + S2 + S3 + 1):
        if max_val < count[i]:
            max_val = count[i]
            who = i
    
  7. 최대값을 찾아 해당 합(who)을 저장한다.

코드

# 백준 1233 - 주사위
# 분류 : 브루트포스

S1, S2, S3 = map(int, input().split())

count = [0] * (S1 + S2 + S3 + 1)

for i in range(1, S1 + 1) :
    for j in range(1, S2 + 1) :
        for k in range(1, S3 + 1) :
            count[i + j + k] += 1

max_val = -1
who = -1
for i in range(S1 + S2 + S3 + 1) :
    if max_val < count[i] :
        max_val = count[i]
        who = i

print(who)