[백준 / BOJ] 4673번 셀프 넘버 (C++, Python)◎ 자료구조와 알고리즘/백준(BOJ) 문제풀이2021. 9. 6. 23:44
Table of Contents
반응형
링크 : https://www.acmicpc.net/problem/4673
문제
문제 풀이
문제가 살짝 이해가 가지 않아 처음에 많이 고생했던 문제다. 생성자? 셀프 넘버? 생성자가 없는 숫자를 어떻게 구하지?
결국 역으로 생각하는 수밖에 없었다. 일단 생성자가 있는 숫자를 1부터 10000까지 구하고, 없었던 숫자만 출력하는 식으로 해결했다.
C++ 상세 풀이
더보기
int non_self_num(int num)
{
int sum = num;
while (num != 0)
{
sum += num % 10;
num = num / 10;
}
return sum;
}
for (int i = 1; i <= 10000; i++)
{
temp = non_self_num(i);
if (temp <= 10000)
number[temp] = true;
}
1부터 10000까지 생성자가 있는 숫자를 구한다. non_self_num 함수에 i를 넣으면 sum, 즉 생성자가 있는 숫자가 리턴되므로 temp는 생성자가 있는 숫자가 된다. 크기가 10000인 number 배열을 true로 만들어 준 후 false인 숫자들만 출력하면 그 숫자들이 생성자가 없는 숫자, 즉 셀프 넘버가 된다.
Python 상세 풀이
더보기
def non_self_num(num):
sum = 0
for i in str(num):
sum += int(i)
return int(num) + sum
for i in range(1, 10001):
temp = non_self_num(i)
number.append(temp)
1부터 10000까지 생성자가 있는 숫자를 구한다. non_self_num 함수에 i를 넣으면 sum, 즉 생성자가 있는 숫자가 리턴되므로 temp는 생성자가 있는 숫자가 된다. 크기가 10000인 number 배열을 true로 만들어 준 후 false인 숫자들만 출력하면 그 숫자들이 생성자가 없는 숫자, 즉 셀프 넘버가 된다.
코드 전문
C++ 코드 전문
Python 코드 전문
소감
백준을 풀면서 아마 처음으로 막막했던 문제가 아닐까 싶다.
반응형
'◎ 자료구조와 알고리즘 > 백준(BOJ) 문제풀이' 카테고리의 다른 글
[백준 / BOJ] 11654번 아스키 코드 (C++, Python) (0) | 2022.01.17 |
---|---|
[백준 / BOJ] 1065번 한수 (C++, Python) (0) | 2021.09.07 |
[백준 / BOJ] 15596번 정수 N개의 합 (C++, Python) (0) | 2021.09.05 |
[백준 / BOJ] 4344번 평균은 넘겠지 (C++, Python) (0) | 2021.09.05 |
[백준 / BOJ] 8958번 OX퀴즈 (C++, Python) (0) | 2021.09.05 |
@Reo :: 코드 아카이브
자기계발 블로그