알고리즘

[백준] 셀프 넘버

hminor 2023. 7. 26. 11:28
# 1부터 10000까지 배열을 만들어 두고
# for 문을 이용해 1부터 10000까지 돌면서 
# hap이 있으면 result에서 지우는 방식으로 푼 방식
# 여기서 잠시 혼동이 왔던 부분 정리하자면
# del은 인덱스를 지우는 방식
# remove는 값을 지우는 방식
result = [i for i in range(1, 10001)]
for i in range(1, 10001):
    hap = i + sum(list(map(int,str(i))))
    if hap in result: result.remove(hap)
for i in result: print(i)
# 처음 접근한 방식
# 1부터 10000까지 돌면서 1부터 해당 숫자 아래의 모든 값을 조사하며 
# 해당 숫자의 값이 되는지 확인 하는 코드
# 의미 없는 탐색을 계속 하는 단점으로 많은 시간이 소요됨. 
stack = []
for i in range(1, 10001):
    flag = True
    for j in range(i-1, 0, -1):
        hap = j
        while j != 0:
            hap += j%10
            j = j//10
        if hap == i: 
            flag = False
            break
    if flag == True:
        stack.append(i)
for i in stack:
    print(i)