[Baekjoon]- 4673. 셀프 넘버

jjiani·2021년 2월 6일
0

Baekjoon

목록 보기
5/16

https://www.acmicpc.net/problem/4673

def sequence():
	# 빈 리스트를 우선 만들어, 생성자가 있는 숫자를 담고자 함. 
    infi = []
    # 10,000보다 작거나 같은 수를 돌면서
    for n in range(1, 10001):
    	# 한번 돌고나서 num을 초기화해주기!
        num=0
        # n을 str로 변환한 뒤 순회하면서
        for i in str(n) :
        	# num에 다시 int로 변환해 숫자를 더해주고
            num += int(i)
        # 숫자 n 또한 더해줌    
        num += n
        # infi에는 셀프넘버가 아닌 숫자들만 담는다. 
        infi.append(num)
	# 다시 순회하면서
    for n in range(1, 10001):
    	# 생성자가 있는 리스트에 없다면 그 숫자는 셀프넘버이다. 
        if n not in infi:
            print(n)

sequence()

🔑의도치않았지만 특별한 함수없이 풀어보았다.
이렇게 쓰니 코드도 길어지고 큰 수를 for문으로 두번 돌다보니 불필요한 반복으로 인해 시간이 오래걸린다....😓
내 머리로는 이게 최선이었으나 스터디원의 다른 코드를 보니 참 깔끔하고 좋았다...!

  • HE님의 코드를 허락맡고 퍼왔다!👏

🔗출처 : https://codinghani.tistory.com/2

🔎똑똑하신 HE님은 두가지방법으로 푸셨다.
우선 set을 사용하셨다는 것에 대해 나는 생각도 못했던방법,,, 생성자가 2개 있는 수가 있다고 문제에서 말했지만 나는 별 대수롭지 않게 생각햇지만 HE님은 캐치하심...!
이런거 하나하나가 쉬운 문제일때는 별일 아니지만 어려운 문제일수록 중요할 것 같다!
for문이 많을 수록 시간적인 면에서 비효율적이니 없애고자 map함수와 sum을 활용하신 면에서 따봉드려용,,,👍👍
HE님 코드에 비하니 내 코드는 쪼랩이다,,,시간도 오래걸렸고 코드도 길고 메모리도 많이 잡아먹음😢
노력하자~!

profile
¡Bienvenido a mi velog!🐣

0개의 댓글