강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

australialove19님의 프로필 이미지
australialove19

작성한 질문수

파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)

1. 환경설정 및 K번째 약수 풀이

break를 넣지 않으면 3,4,5,-1이 출력되는 이유가 궁금합니다.

작성

·

287

1

n,k의 값을 6과 3으로 지정했습니다.

13분10초의 코드에 break를 빼고 실행해보니

3,4,5,-1이 출력이 되는 이유를 모르겠습니다.

제가 예상한 답은 3,-1입니다.

왜냐하면 cnt==k가 되는 순간은 3이고 4,5는 해당하지 않으니까요.. 반복문을 다 돌고나서 else문이 실행되는 -1까지

3,-1이 정상 아닐까요..?

답변 4

1

왜 4, 5가 출력되냐면 6 % 4 != 0, 6 % 5 != 0이기 때문입니다.

이걸 이해하면 "6이 출력돼지않은이유는 cnt가 4이기 때문입니다."라는 것을 이해했었겠죠.

우와 저도 이렇게 세세하게 분석해보는 습관을 들여야겠어요 ! 꼼꼼한 답변 너무 감사합니다 !!

저도 딱봤을때 3과 -1만출력될줄알았어요.

1

6의 약수는 [1, 2, 3, 6]입니다.

그래서 흐름을 설명할깨요.

n는 6, k는 3, 6번반복하니까 i는 1, 2, 3, 4, 5, 6여기까지는 괜찮죠? i가 ?의 경우

i = 1: 6 % 1 == 0 -> count += 1, count == 1

i = 2: 6 % 2 == 0 -> count += 1, count == 2

i = 3: 6 % 3 == 0 -> count += 1, count == 3 == k, print(i)

i = 4: 6 % 4 == 2 -> count == 3 == k, print(i)

i = 5: 6 % 5 == 1 -> count == 3 == k, print(i)

i = 6: 6 % 6 == 0  ->count += 1 count == 4 != k

for loop end! -> else: print(-1)

결과 3, 4, 5, -1

0

생각해보니까 count가아니라 cnt였네~

0

여기서 break가 있으면 i를 출력했기때문에 끝나지만

없으니까 계속 반복합니다.

australialove19님의 프로필 이미지
australialove19

작성한 질문수

질문하기