Programming/백준

[실버 4] 백준 9575 - 행운의 수 (파이썬)

pental 2025. 6. 30. 10:18

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

풀이

for a in A:
    for b in B:
        for c in C:
  • 세 배열 A, B, C에서 각각 하나씩 고른다 (총 경우의 수는 N × M × K).
  • 합 sum = a + b + c가 “행운의 수”인지 판별한다:
    • 10으로 나누며 각 자릿수가 5 또는 8만 있는지 확인함.
  • 조건을 만족하면 lucky 리스트에 추가.
  • 중복 제거 후 행운의 수 개수 출력.
while sum > 0:
    if sum % 10 not in [5, 8]:
        good = False
        break
    sum //= 10
  • sum의 각 자릿수를 검사함.
  • 5 또는 8이 아닌 숫자가 있으면 good = False로 탈락.

코드

# 백준 9575 - 행운의 수
# 분류 : 브루트포스

T = int(input())
for _ in range(T) :
    N = int(input())
    A = list(map(int, input().split()))
    M = int(input())
    B = list(map(int, input().split()))
    K = int(input())
    C = list(map(int, input().split()))

    lucky = []
    for a in A :
        for b in B :
            for c in C :
                sum = a + b + c
                good = True
                while sum > 0 :
                    if sum % 10 not in [5, 8] :
                        good = False
                        break
                    sum //= 10
                
                if good :
                    lucky.append(a + b + c)

    lucky = list(set(lucky))
    print(len(lucky))