본문 바로가기
Algorithm

이중 for문 빠져나가기, break 하기 (python)

by 이호수 2023. 11. 22.

코테 문제를 풀던 중 출력예시가 나오지 않아서 무척 답답했다

분명 이론상으로는 완벽했는데,,!!!으아아아

 

print로 체크해보니 중첩 for문에서 break할 경우 한 겹만 break 되고 있었기 때문이었다.

 

예를 들어 a=10으로 놓고, 중첩 포문 안에서 0부터 수를 증가시키다 10이 나오면 break 하는 코드를 만들었다고 해보자.

a = 10

for i in range(0, 20):
    print(i)
    for j in range(0, 20):
        if j == a:
            break

내가 의도한 바는, j for문에서 10이 나오면 모든 for문을 빠져나오는 것이다.

때문에 원하는 결괏값은 0이다.

하지만, 결괏값은 0~19가 나오는데, 이중 포문의 안쪽 포문에서 break를 할경우, 안쪽 포문만 break되고 있다는 것을 확인할 수 있다.

 

이를 해결하기 위해 임의로 flag라는 변수를 만들었다.

flag의 초기값은 True이고, 10이 나올 경우 False로 바뀐다

다음과 같이 구현해주었다.

a = 10
flag = True

for i in range(0, 20):
    print(i)
    for j in range(0, 20):
        if j == a:
            flag = False
            break
    if flag == False:
        break

j for문에서 한번, i for문에서 한번. 총 두번 break를 해줌으로써 원하는 결괏값을 얻을 수 있었다.