해결된 질문
작성
·
73
·
수정됨
답변 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 인턴입니다. 유림님.
질문해주신 조건문과 반복문 예제의 매커니즘에 대해 유사한 질문과 답변을 포함한 게시물이 있습니다. 해당 게시물을 참고하시면 많은 도움이 될 것 같습니다.
질문하신 내용은 조건문과 반복문에서 i++
과 j++
의 작동 방식과 break
문에 대한 회로를 이해하는 데 도움이 됩니다. 간단히 설명드리자면:
- i++
과 j++
는 각각 반복문 한 번 실행 후 증가합니다.
- break
문은 현재 반복문을 완전히 종료시키며, 그 뒤에 있는 코드(i++과 j++)는 실행되지 않습니다.
- 출력문이 하나인 이유는 특정 조건이 실행되는 경우에만 출력되기 때문에 그렇습니다.
이런 개념들이 각 예제에서의 작동 방식을 이해하는 데 중요합니다.
이와 같이 관련된 예제와 설명을 참고하시면 유림님의 질문에 대한 이해가 크게 도움이 될 것이라 생각합니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
i랑 j가 동시에 21이되었을때
Value-j값이 O이 였다가 21이되면서 프림트가 나오고 break문으로 다 나왔다고 생각하면되나요?
i++ j++모두 while문. 안에 있는거구요?
Break문 괄호 밖에 i++ j++이 있어서 여쭤봐요
네 너무 잘이해되었습니다 감사합니다