카테고리 없음

(백준) 셀프 넘버(Python3)

레인보우떡 2022. 5. 25. 17:17

단계별로 차근차근 풀다보니, 쉬운 문제지만 자신감도 생기고 재밌어졌다

 

알고리즘은 순수하게 내 머리로 푸는게 실력 아닐까 하는 생각에 사로잡혀

나에게는 버거운 문제부터 시작하다보니 못 풀어서 재미없고 멀리하게 됐던 것 같다.

기반지식이 없으면서 욕심은..

 

일단 해보고 안되면 힌트받고 안되면 답 보면서 이렇게 푸는구나 하고 기반지식을 쌓는 것이 나에게는 맞는 방법같다.

 

역시 프로 똥찍먹러의 인생길은 험난하다

 

개인 풀이

arr = [0] * 10050
def solve(a):
    for num in range(a):
        num = str(num)
        score = 0
        for n in num:
            score += int(n)

        score += int(num)
        arr[score]+=1
    for i in range(10000):
        if not arr[i]:
            print(i)
solve(10000)

각 자리의 수를 구하는 과정에서 또 mod 연산을 쓰지 않고 문자열 이터레이션을 사용하여 구하였다.

mod 연산을 못 떠올린 것은 아니었는데, 확실하게 응용할 수 있다는 자신이 없었던 것 같다.

 

아래는 다른 사람의 코드를 참고하여 O(N^2) 에서 O(N) 으로 변경한 코드이다

참고 풀이

def solve(a):
    arr = [0] * 10050
    for num in range(a):
        score = 0
        num_sum = num + (num // 1000) + ((num % 1000) // 100) + ((num % 100) // 10) + (num % 10) # 참고한 코드
        score += int(num_sum)
        arr[score] += 1
    for i in range(10000):
        if not arr[i]:
            print(i)
solve(10000)

 

 

 

 

728x90