알고리즘/구름 edu

[구름LEVEL 유형 트레이닝 / 구현] 어려운 문제 (python)

난감 2024. 6. 14. 16:12
728x90

문제 설명

N!의 결과값을 한자리로 출력하는 문제이다.

N!의 결과값이 한자리가 아닌 경우 각 자리의 합을 더하는 과정을 반복하여 한자리 수로 출력한다.

풀이

N = int(input())
answer = 1

for i in range(2, N + 1):
	answer *= i

while True:
	str_answer = str(answer)
	if len(str_answer) == 1:
		print(answer)
		break
	
	answer = 0
	for i in str_answer:
		answer += int(i)

 

정석대로 N!의 값을 구한다.

for문을 2부터 N + 1까지 돌면서 곱하면 N! 값을 구할 수 있다. 1은 의미가 없으므로 넣지 않았다.

 

그리고 while문을 돌면서 answer 값이 한 자리인지 확인한다. 한 자리라면 정답을 출력 한 뒤 while문을 빠져나온다.

아니라면 각 자리를 더해 다시 answer 값을 갱신한다. 그리고 한 자리 수가 될때까지 위 과정을 반복한다.

 

숫자의 자리수가 한 자리인지 확인하는 방법은 str 함수를 사용했다.

len(str(answer)) == 1

int형인 answer 변수를 str로 변환하면, len 함수를 이용해 자리수를 구할 수 있다. 이때 이 값이 1이면 한자리 수 임을 알 수 있다.

반응형