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

유림님의 프로필 이미지
유림

작성한 질문수

(2025) 일주일만에 합격하는 정보처리기사 실기

비교연산자와 반복문+조건문 문제 풀이 (v2)

조건문 반복문 예제 마지막 문제

해결된 질문

작성

·

63

·

수정됨

0

각각 if의 매커니즘은 이해가 되는데요

i와 j가 한개씩 커지는게 break문 밑에 i++ j++때문인가요?

 

if가 연달아 있으니 순서가 헷깔려요

 

첫번째 if의 i구문따로 보고 두번째 if의 j구문 따로보고 마지막 if의 프린트를 따로 보면 이해가 되는데 전체적으로볼때

i++과 j++이 따로 밑에 있는게 이해가안되네요ㅠ그럼 동시에 계속 같이 커지고 있고 i는 i대로보고 j는 j대로 보면 되는가요?

 

 

 

 

 

답변 2

0

주말코딩님의 프로필 이미지
주말코딩
지식공유자

안녕하세요,

 

while 반복문 안에서 if는 모두 한 번씩은 수행됩니다. 다만 "참"이 아닌 경우에는 통과하는 것 뿐이죠.

 

말씀하신 대로 가장 아래 부분에 i++, j++가 있어서 각 변수에 1를 높인 값을 반영하고 다음 반복으로 넘어가는 것입니다.

 

while 반복문은 for문와 다르게 언제 탈출해야 하는 지가 반복문에 명시되어 있지 않고, 반복문 아래 블럭을 봐야 알 수 있습니다.

 

제 생각에 해당 문제가 헷갈리시는 이유는 봐야 할 변수가 너무 많아서 그렇습니다.

일단 i, j, count_i, count_j 4개의 변수는 무시하시고,

 

탈출 조건만 먼저 보겠습니다. 지금 탈출 조건은 위의 4개 변수가 아닌 value_i, value_j가 둘 다 0이 아니어야합니다.

둘 다 0이 아니려면 둘 다 다른 숫자가 들어가는 순간 탈출해서 나오겠죠?

 

이제 count_i, count_j 변수로 가봅시다.

이 변수는 i와 j가 하나씩 늘어나고 있는 와중에 i가 짝수인 경우에는 count_i가 늘어나고, j가 3의 배수인 경우에 count_j가 늘어납니다.

이 둘은 애초에 겹칠 수가 없습니다.

같이 하나씩 늘어나고 있는데 i는 짝수일 때 j도 짝수일 것이고, i가 3의 배수일 때는 j도 3의 배수입니다.

그냥 둘 다 같은 쌍둥이인데 해석하기 어렵게 만들기 위해 코드를 복잡하게 만들어둔 것 뿐입니다.

 

어쨌든, 코드를 전체적으로 다시 보자면

처음에는 둘 다 0, 0일 것이고 아래로 내려가면 1, 1로 바뀝니다. 계속 가다가 2, 2로 갑니다.

이 경우에는 i(첫 번째 숫자)가 2로 짝수가 되죠? 그러면 카운트가 되면서, count_i를 하나 올립니다.

 

이렇게 50까지 쭉 가다보면,

i가 5번째 짝수를 만났을 때 value_i를 세팅합니다.

그리고 j가 7번째 3의 배수를 만났을 때 value_j를 세팅합니다.

 

여기서가 중요합니다.

지금 출력값은 해당 수를 만났을 때 저장된 변수인 value_i, value_j를 출력합니다.

그 값은 i가 5번째 짝수를 만났을 때의 i고, j가 7번째 3의 배수를 만났을 때의 j이죠.


 

제 해설을 읽으시고 나서, 조금 어려움이 있으시다면

while문을 직접 A4용지에 숫자를 써가면서 해석해보기를 권장드립니다.

50까지 할 필요도 없습니다. 그냥 12까지만 해보세요. (3의 배수 4번째인)

탈출조건까지 하려면 21까지 세야하겠지만, value_i, value_j가 올라가는 것을 깨닫는 순간 별 것 아니라고 이해하실 겁니다.

 

그러면 전체적으로 코드가 어떻게 돌아가는지 이해하실 수 있을 것입니다.

 

이해에 도움이 되셨을까요?

유림님의 프로필 이미지
유림
질문자

네 너무 잘이해되었습니다 감사합니다

0

안녕하세요, 인프런 AI 인턴입니다. 유림님.

질문해주신 조건문과 반복문 예제의 매커니즘에 대해 유사한 질문과 답변을 포함한 게시물이 있습니다. 해당 게시물을 참고하시면 많은 도움이 될 것 같습니다.

관련된 질문 URL:

요약:

질문하신 내용은 조건문과 반복문에서 i++j++의 작동 방식과 break 문에 대한 회로를 이해하는 데 도움이 됩니다. 간단히 설명드리자면:
- i++j++는 각각 반복문 한 번 실행 후 증가합니다.
- break 문은 현재 반복문을 완전히 종료시키며, 그 뒤에 있는 코드(i++과 j++)는 실행되지 않습니다.
- 출력문이 하나인 이유는 특정 조건이 실행되는 경우에만 출력되기 때문에 그렇습니다.

이런 개념들이 각 예제에서의 작동 방식을 이해하는 데 중요합니다.

유사한 질문 URL:

이와 같이 관련된 예제와 설명을 참고하시면 유림님의 질문에 대한 이해가 크게 도움이 될 것이라 생각합니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

유림님의 프로필 이미지
유림
질문자

i랑 j가 동시에 21이되었을때

Value-j값이 O이 였다가 21이되면서 프림트가 나오고 break문으로 다 나왔다고 생각하면되나요?

i++ j++모두 while문. 안에 있는거구요?

Break문 괄호 밖에 i++ j++이 있어서 여쭤봐요

유림님의 프로필 이미지
유림

작성한 질문수

질문하기