김지팡의 저장소
article thumbnail
728x90

문제 설명

 int 타입 변수 n을 입력받아 나누었을 때 나머지가 1이 되도록 하는 자연수 x 중 가장 작은 x를 반환하는 문제이다. 코드를 보며 설명하도록 하겠다.

solution

 변수 n에 저장된 값은 3에서 1,000,000까지의 자연수 중 하나이다. 이 많은 수들 중 나머지가 1이 되도록 하는 x의 값은 1개일 수도 있지만 n에 저장된 값이 크면 클수록 그 x는 2개 이상일 것이다. 그들 중 가장 작은 x값을 구하기 위해서는 for 반복문을 이용하여 그 값을 구해야 한다. 우선 반복문의 범위는 1부터 n보다 작을 때까지로 하였다. 범위의 시작은 2부터 하여도 굳이 상관은 없으나(어차피 1은 n의 값이 무엇이던 무조건 나누어 떨어지게 하기 때문) 그냥 1로 하였고 n보다 작은 범위로 한 이유는 나머지가 1인 수를 보는 것인데 n까지 할 이유가 없기 때문에 n보다 작을 때까지로 설정하였다. 그러고 난 후, if 조건문을 사용하여 n을 i로 나눈 나머지가 1일 때 int 타입 변수 answer에 그 값을 저장하도록 하였다. 만약 이렇게 하고 바로 answer를 반환한다면 나머지가 1이 되게끔 나누는 x의 값들 중에서 가장 큰 값이 반환되게 될 것이다. 하지만 가장 작은 값을 반환하기 위해 n % i == 1이 되었을 때 바로 break 키워드를 사용하여 for 반복문을 빠져나오게 하는 것이다. 이렇게 되면 반복문에서 나왔기 때문에 answer에 가장 작은 값이 들어가게 된다. 

728x90
profile

김지팡의 저장소

@김지팡

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!