코딩테스트 파이썬/백준
수 나누기 게임 ( 27172 번 )
세용용용용
2025. 6. 29. 19:31
🧠 알고리즘
입력 리스트 n_list의 값들을 키로 하는 딕셔너리 n_dict 생성
각 수 에 대해, i의 배수 들을 탐색
최종적으로 n_dict 값 들을 리스트로 변환해 출력
🧾 코드
import sys
def _main(n, n_list):
n_dict, max_value = {}, 0
for i in n_list:
n_dict[i] = 0
max_value = max(max_value, i)
for i in n_list:
for j in range(i*2, max_value + 1, i):
if j in n_dict:
n_dict[i] += 1
n_dict[j] -= 1
answer = list(n_dict.values())
return ' '.join(map(str, answer))
n = int(sys.stdin.readline().rstrip())
n_list = list(map(int, sys.stdin.readline().rstrip().split()))
print(_main(n, n_list))
⏱️ 시간 복잡도
for i in n_list : i를 순회 ( 선형 시간 복잡도 )
for j in range(i*2, max_value + 1, i) : 배수 탐색 ( 선형 시간 복잡도 )
해당 알고리즘 시간 복잡도 : 이차형 시간 복잡도 O(n ** 2)