단계별로 차근차근 풀다보니, 쉬운 문제지만 자신감도 생기고 재밌어졌다
알고리즘은 순수하게 내 머리로 푸는게 실력 아닐까 하는 생각에 사로잡혀
나에게는 버거운 문제부터 시작하다보니 못 풀어서 재미없고 멀리하게 됐던 것 같다.
기반지식이 없으면서 욕심은..
일단 해보고 안되면 힌트받고 안되면 답 보면서 이렇게 푸는구나 하고 기반지식을 쌓는 것이 나에게는 맞는 방법같다.
역시 프로 똥찍먹러의 인생길은 험난하다
개인 풀이
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