2331 BOJ Python

슬기로운 FE 세상·2022년 4월 28일
0

푸는 아이디어는 들어가있는 최초의 배열의 값에서 각 자릿수의 값을 p 제곱을 해서 나오는 값을 계속 배열에 추가를 한다. 그러면 반복되는 것이 발생할 것이고 그 반복되는 값을 제외하는 것이 몇개냐는 문제이다. 여기서의 핵심은 제곱해서 나온 값이 기존 배열에 최초로 들어온 순간 그 index를 안다면, 그 앞까지는 반복되지 않는 다는 것이기 때문에 그 것을 구하면 된다.

a, b = map(int, input().split())
nums = [a] # 배열에 최초 값 넣어준다.

while True: 
	num = 0 # 자릿수의 p 제곱 값을 더한 값
    
    for i in str(nums[-1]) # 맨 마지막에 들어온 값의 자릿수를 구할 것이기 때문에 str 처리
    	num += int(i) ** b
    if num in nums:
    	break
   	else:
    	nums.append(num)

print(nums.index(num)) # num이 nums에 있을 때 break 했기 때문에 그 앞까지는 반복되지 않는 값이다.
profile
자 드가자~~

0개의 댓글

관련 채용 정보