티스토리 뷰

728x90

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

 

9575번: 행운의 수

각각의 테스트 케이스마다 입력으로 주어진 수열을 이용해 만들 수 있는 서로 다른 행운의 수의 개수를 한 줄에 하나씩 출력한다.

www.acmicpc.net

 

시간은 1초지만 N이 각 수열의 최대 크기가 50이란 점을 빠르게 파악해야 합니다.

대략 1초가 1억 정도의 값이란 점을 고려했을 때 50^3은 1억보다 작으므로 3중 for문을 이용하여 구현하면 해결되는 문제입니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
= int(input())
for _ in range(N):
    a = int(input())
    lst_a = set(list(map(int, input().split())))
    b = int(input())
    lst_b = set(list(map(int, input().split())))
    c = int(input())
    lst_c = set(list(map(int, input().split())))
    res = []
    for i in lst_a:
        for j in lst_b:
            for k in lst_c:
                chk = True
                tmp = str(i + j + k).rstrip()
                for char in tmp:
                    if char == '5' or char == '8':
                        pass
                    else:
                        chk = False
                        break
                if chk and int(tmp) not in res:
                    res.append(int(tmp))
    print(len(res))
cs
댓글