백준/기초

[백준][함수] 4673번 셀프 넘버

Snowboarder 2022. 3. 11. 13:09

문제접근

  • 함수를 사용한다.

문제풀이

내풀이

numbers = set(range(1, 10000))
remove_set = set()  # 생성자가 있는 숫자 set
for num in numbers :
    for n in str(num):
        num += int(n)
    remove_set.add(num)  # add: 집합에 요소를 추가할 때

self_numbers = numbers - remove_set  # set의 '-' 연산자로 차집합을 구함
for self_num in sorted(self_numbers):  # sorted 함수로 정렬
    print(self_num)

다른사람풀이

snum=1
count=0
refcount=102
addcount=98
refmod=3
addmod=8
while snum<10000:
    print(snum)
    if count<refcount:
        if count%10 ==refmod or count<3:
            snum+=2
        else:
            snum+=11
    
    if count==refcount:
       snum+=15
       refcount+=addcount
       refmod=(refmod+addmod)%10
    
    count+=1