https://www.acmicpc.net/problem/4673
4673번: 셀프 넘버
셀프 넘버는 1949년 인도 수학자 D.R. Kaprekar가 이름 붙였다. 양의 정수 n에 대해서 d(n)을 n과 n의 각 자리수를 더하는 함수라고 정의하자. 예를 들어, d(75) = 75+7+5 = 87이다. 양의 정수 n이 주어졌을 때,
www.acmicpc.net
입력은 따로 없고 1부터 10,000 까지의 수 중에 셀프넘버가 없는 수를 출력하는 문제입니다.
셀프 넘버를 구하는 방법은 주어진 수의 각자리의 숫자를 더하고 주어진 수를 더한 값입니다.
예를 들어서 주어진 수가 76 일경우 셀프 넘버는 6 + 7 + 67 = 80 입니다.
제가생각한 방법은 for문을 사용해서 1부터 10,000 까지의 셀프넘버를 구해서
1부터 10,000을 가지고있는 리스트에서 해당 수를 제외해주는 방법입니다.
[ 2 ] d 라는 함수를 만들고 인수를 val로 받습니다.
[ 3 ] val1 에 val의 자료형을 문자열로 변환해 저장 해줍니다.
[ 5 ~ 14 ] len()을 사용해 인수의 길이에 따라 셀프넘버를 구하는 if 문입니다.
[ 16 ] 셀프넘버 값을 리턴해줍니다.
[ 18 ] list_result 를 선언해줍니다.
[ 19 ~ 20 ] 결과 리스트에 1부터 10,000 까지의 수를 추가해줍니다.
[ 22 ~ 25 ] 1부터 10001 까지 수를 d 함수에 하나씩 넣어서 셀프 넘버값을 받아 a에 저장하고 중복된 값이 나올수도 있기때문에 list_result.count()를 사용하여 a값이 있는지 확인하고 a 값이 있다면 list_result에서 a값을 제거합니다.
[ 27 ~ 28 ] 위의 과정을 마치고 결과물을 출력합니다.
문제를 풀긴 풀었지만 다른분들보다 시간도 오래걸리고 코드길이도 길어서 더 공부해야 할 것 같습니다.
'알고리즘 > Solved_Silver' 카테고리의 다른 글
[Python Silver V 1193] (0) | 2023.03.09 |
---|---|
[Python Silver V 2751] (0) | 2023.03.09 |
[Python Silver V 2941] (0) | 2023.03.09 |
[Python Silver V 1316] (0) | 2023.03.08 |
[Python Silver V 1978] (0) | 2023.03.07 |