1945

HoRi·2022년 7월 25일
0

SWEA_PY

목록 보기
23/32

1945. 간단한 소인수분해

숫자 N은 다음과 같다.

N이 주어질 때 a, b, c, d, e를 출력하라.

[제약사항]

N은 2이상 10,000,000이하이다.

[입력]

가장 첫 줄에는 테스트 케이스의 개수 T가 주어지고, 그 아래로 각 테스트 케이스가 주어진다.
각 테스트 케이스의 첫 번째 줄에 N이 주어진다.

[출력]

출력의 각 줄은 '#t'로 시작하고, 공백을 한 칸 둔 다음 정답을 출력한다.
(t는 테스트 케이스의 번호를 의미하며 1부터 시작한다.)

코딩

T = int(input())						# 값을 입력 받아 정수형으로 변환한 후 T에 저장(테스트 케이스)

for i in range(1, T+1):					# 1부터 T까지 1씩 증가하는 반복문
    N = int(input())					# 값을 입력 받아 정수형으로 변환한 후 N에 저장(소인수분해 할 수)
    a = 0								# 2의 제곱 수를 0으로 초기화
    b = 0								# 3의 제곱 수를 0으로 초기화
    c = 0								# 5의 제곱 수를 0으로 초기화
    d = 0								# 7의 제곱 수를 0으로 초기화
    e = 0								# 11의 제곱 수를 0으로 초기화
    if N < 2 or N > 10000000:			# N이 2 미만이거나 10000000 초과인 경우
        print('#{} -1'.format(i))		# 제약사항에서 벗어나기 때문에 오류 문구인 테스트 케이스 번호와 -1을 출력
        continue						# 계속 실행
    else:								# 제약사항에 해당할 경우
        while True:						# 무한 반복
            if N % 2 == 0:				# 만약 N을 2로 나눈 값의 나머지가 0이면
                a += 1					# 2의 제곱 수인 a에 1을 더해주고
                N = N / 2				# 입력 받은 값(소인수분해할 값)을 2로 나누어 다시 N에 저장
            elif N % 3 == 0:			# 만약 N을 3으로 나눈 값의 나머지가 0이면
                b += 1					# 3의 제곱 수인 b에 1을 더해주고
                N = N / 3				# 입력 받은 값(소인수분해할 값)을 3으로 나누어 다시 N에 저장
            elif N % 5 == 0:			# 만약 N을 5로 나눈 값의 나머지가 0이면
                c += 1					# 5의 제곱 수인 c에 1을 더해주고
                N = N / 5				# 입력 받은 값(소인수분해할 값)을 5로 나누어 다시 N에 저장
            elif N % 7 == 0:			# 만약 N을 7로 나눈 값의 나머지가 0이면
                d += 1					# 7의 제곱 수인 d에 1을 더해주고
                N = N / 7				# 입력 받은 값(소인수분해할 값)을 7로 나누어 다시 N에 저장
            elif N % 11 == 0:			# 만약 N을 11로 나눈 값의 나머지가 0이면
                e += 1					# 11의 제곱 수인 e에 1을 더해주고
                N = N / 11				# 입력 받은 값(소인수분해할 값)을 11로 나누어 다시 N에 저장
            elif N == 1:				# 만약 N이 1이면(위에 해당하는 모든 수로 나누어 졌을 때의 값이 1이 된다.)
                break					# 반복문 탈출
            else:						# 이 중 어떤 것에도 해당하지 않는다면
                print('#{} -1'.format(i))
                						# 해당 테스트 케이스와 -1 오류 문구를 출력
                break					# 반복문 탈출
    print('#{} {} {} {} {} {}'.format(i, a, b, c, d, e))  
    									# 테스트 케이스와 각 제곱 수를 출력



모든 출처는 SW Expert 아카데미에 있습니다.

해당 글은 영리적 목적이 아닌 학습의 기록으로 사용되었습니다. 오기나 잘못된 부분은 말씀해주시면 수정하겠습니다.

profile
무지성 작성소

0개의 댓글