반응형
문제 출처 : www.acmicpc.net/problem/2231
1 . 문제 접근 방식
- 알고리즘에 대한 고민
1. n을 입력 받음
2. n의 자리수 = m
3. n - m * 9 = x 생성자를 구하는 과정에서 나올 수 있는 최소값
4. x부터 n까지의 수를 검사하며 합을 구했을 떄 n값과 같아지는 최소 값 출력
2 . 내가 푼 코드
n = str(input())
m = int(len(n))
x = int(n) - m * 9
new_num = int(x) + sum(map(int, str(x)))
new_list = []
for i in range(int(x), int(n)+1):
if int(n) == i + sum(map(int, str(i))):
new_list.append(i)
if len(new_list) == 0:
print(0)
else:
print(min(new_list))
3 . 결과 및 느낀점
- 실패! 런타임 에러(Value Error) -> vscode에서 돌렸을 떄는 값이 잘 나오는데 막상 채점을 돌리면 잘 안되는 것이다. 그래서 조금 더 단순히 생각해보았다. 1부터 n까지 범위를 바꾸고 하나하나 비교하는 방식으로 바꿔보았다.
4. 새로운 코드 및 결과
# n값을 문자열의 형태로 입력 받기
n = input()
# 입력받은 n의 길이를 구하기
m = int(len(n))
# 생성자 값들이 들어갈 수 있는 배열 생성
new_list = []
# 1부터 n까지 돌며 n과 같아지는 경우 new_list에 추가
# i + sum(int, str(i)) => i 하나씩 돌며 int로 만들고 각 자리수의 합 구하기
for i in range(1, int(n)):
if int(n) == i + sum(map(int, str(i))):
new_list.append(i)
# 생성자가 없는 경우 0 출력
# 생성자가 있는 경우 min 함수를 이용해 최소값 출력
if len(new_list) == 0:
print(0)
else:
print(int(min(new_list)))
- 정답! 아직 뭐가 잘못된건지 잘 모르겠다. 조금 더 공부해보고 다음에 알게된다면 이유도 첨부해야겠군....
반응형
'개인 공부 > Algorithm' 카테고리의 다른 글
[개인공부] 알고리즘 공부 #Intro (0) | 2021.04.04 |
---|---|
[Baekjoon/백준] 1182번 Python (0) | 2021.04.04 |
[Baekjoon/백준] 11721번 Python (0) | 2021.04.02 |
[Baekjoon/백준] 2750번 Python (0) | 2021.03.31 |
[Baekjoon/백준] 9086번 Python (0) | 2021.03.30 |