본문 바로가기

PS/백준

[BOJ] 백준 4673 셀프 넘버 (Swift)

728x90
반응형

문제

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부터 10000까지 셀프 넘버가 아닌 숫자를 구해준다. (생성자가 있는 숫자)
    • (각 자리수 + 자기 자신의 수) 연산을 해서 나온 수는 생성자가 있는 숫자일 것
  • 생성자가 있는 숫자를 집합에 넣어준다.
    • Array에 넣어줘도 상관없지만, 생성자가 2개 이상인 경우 중복이 되므로 Set을 생각했음
  • 1 ~ 10,000까지 집합에 있는지 확인하고 집합에 없다면 출력
    • 집합에 없다면 셀프 넘버

소스코드

후기

  • 1 ~ 10000까지의 수를 가지고 만들 수 있는 수를 찾는게 가장 쉬운 방법이라고 생각함
  • 셀프 넘버가 될 수 없는 숫자들을 구해야 하는게 핵심인 것 같다.
728x90
반응형