© 2025 anveloper.dev
GitHub·LinkedIn·Contact

목차

  • 문제
  • 입력
  • 출력
  • 예제
  • 풀이
  • 코드
  • 복잡도
풀이 목록으로 돌아가기

BOJ 2774 - 아름다운 수

2025-07-15
BOJ
브론즈 II
python
원본 문제 보기
구현

문제

BOJ 2774 - 아름다운 수

자연수가 주어졌을 때, 그 수에 포함된 서로 다른 숫자(digit)의 개수를 구하라. 이를 아름다운 수의 정도라 한다.

입력

테스트 케이스 수 T, 이후 각 줄에 자연수가 주어진다.

출력

각 자연수의 아름다운 수의 정도를 출력한다.

예제

입력출력
3 11 123 112341 3 4

풀이

주어진 수의 각 자릿수를 순회하면서 서로 다른 숫자의 개수를 센다.

  1. 입력 수를 문자열로 처리하여 각 자릿수를 순회한다
  2. 이미 등장한 숫자가 아니면 카운트를 증가시키고 리스트에 추가한다
  3. 최종 카운트를 출력한다

핵심 아이디어: 문자열의 각 문자를 순회하며 중복을 제거한 뒤 개수를 세면 된다. set을 사용하면 len(set(x))로 더 간결하게 구현할 수 있다.

코드

t = int(input())
 
for _ in range(t):
    x = input()
    data = []
 
    result = 0
    for i in range(len(x)):
        if int(x[i]) not in data:
            result += 1
            data.append(int(x[i]))
 
    print(result)

복잡도

  • 시간: O(T * D) — T는 테스트 케이스 수, D는 자릿수
  • 공간: O(1) — 서로 다른 숫자는 최대 10개