diekfk1   1년 전

이번 문제를 풀다가 궁금한 점이 생겨서 질문합니다.

다중 for문을 적다보니 break 한 번으로는 for문을 전부 탈출하지 못해서

바깥 for문 조건을 false로 만들어서 빠져나오는데 이런 코드 작성 방식은 안 좋은 코드인가요?

소스는 제가 다중 for문 탈출할 때 쓰는 코드 작성 방식의 예시 입니다.

siyamaki   1년 전

아래 방법으로 반복문의 탈출 위치를 정할 수 있습니다.

diekfk1   1년 전

@siyamaki

오... 감사합니다!

bamgoesn   1년 전

Java의 경우는 위 답변과 같이 루프에 이름을 붙여서 상위의 루프를 탈출할 수 있는 기능을 갖고 있습니다. 이를 루프 라벨링이라고 합니다. 루프에 라벨을 붙인다는 의미입니다.

반면 루프 라벨링을 지원하지 않는 언어들도 있습니다. 만약 그런 언어들을 쓰게 되신다면, 하신 것처럼 외부의 for문 탈출 조건을 만족하게끔 변수를 조작하는 건 그리 권장되지 않습니다. 그렇게 하면, 만약 내부 루프 뒤에 코드가 더 있는데 이 중간에 i를 멋대로 수정해버리면 i가 어떻게 변하는지 추적하기 어려워지기도 하고, 외부 루프 내에 저 내부 루프 말고 다른 코드도 있을 때 탈출하는 시점을 자유롭게 조절하기 어려워집니다.

일반적으로 이럴 땐 불리언 변수 flag를 하나 선언해서, 값을 false로 뒀다가 외부 루프를 탈출해야 할 때 flag를 true로 변경한 후, 내부 루프 밖에서 flag가 true면 외부 루프도 탈출하는 방식으로 구현하게 됩니다.

Java에선 걱정 안 하셔도 됩니다.

diekfk1   1년 전

@bamgoesn

반복문을 돌 때마다 if문을 매번 물어보는 게 마음에 들지 않아서 생각했던 코드였는데, if문 안에서만 i값에 변동이 와도 추적이 많이 힘들까요?

댓글을 작성하려면 로그인해야 합니다.