A. 어떤 문제가 있었는지

Q.  자연수 n이 매개변수로 주어집니다. 
n을 x로 나눈 나머지가 1이 되도록 하는 가장 작은 자연수 x를 return 하도록 solution 함수를 완성해주세요. 
답이 항상 존재함은 증명될 수 있습니다.

 

오류가 발생하지 않지만 테스트 통과가 불가능했다.

 

B. 내가 시도해본 것

def solution(n):
    for i in range(2,n):
        n % i == 1
    return i

 

11개의 테스트 중 4개 항목만 통과되어 36.4점의 정확도를 나타냈다.

 

C. 어떻게 해결했는지

for 반복문에 break를 걸어줌으로써 정확도를 높일 수 있었다.

def solution(n):
    answer = 0    
    
    for i in range(1,n):   
        if n%i == 1:
            answer = i
            break 
    return answer


D. 무엇을 새롭게 알았는지

1) break 정의: 반복문 흐름을 제어하고자 사용하는 함수

2) break 사용 이유: 루프를 조기에 종료하여 불필요한 반복을 피하기 위하여 사용된다.

 

코드 단계별 설명

def solution(n):
    answer = 0    	    # 변수 초기화, 조건을 만족하는 i 값 저장
    
    for i in range(1,n):    # i를 1부터 n-1까지 순차적으로 증가시키며 반복
        if n%i == 1:        # n을 i로 나눈 나머지가 1인지 검사 
            answer = i      # 조건이 True 인 경우, answer 변수에 현재 i 값 저장
            break           # 루프 조기 종료
  
    return answer           # answer 값 반환

 

break를 사용하면 조건을 만족하는 첫번째 i 를 찾았을 때 바로 루프가 종료되어 불필요한 반복을 피할 수 있어 효율적이다.

break가 없는 코드는 조건을 만족하는 i를 찾은 후에도 루프를 계속해서 실행하므로 정확도가 낮을 수 밖에 없다.

 

+ Recent posts