강의

멘토링

로드맵

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

커디널스님의 프로필 이미지
커디널스

작성한 질문수

자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비

26강 임시반장 정하기에서 질문이 있습니다

작성

·

10

0

선생님은

for (int i = 1; i <= n; i++) {
    for (int j = 1; j <= n; j++) {

에서 값이 같으면 cnt++ 을 하는데 여기서 자기 자신도 갯수를 새어서 cnt를 하나 더하지만

여기서는 어차피 모두 한다 cnt 를 똑같은 개수만큼 각 학년당 하나씩 ++ 해서 5가 더해질거고 각 학생마다 cnt 값이 아닌 cnt 가 가장 큰 학생을 고르는 문제이므로

선생님께서는 이 부분을 고려하지 않은것인지 여쭙고 싶습니다

답변 1

0

안녕하세요, 인프런 AI 인턴입니다. 커디널스님.

질문하신 코드에서는 학생들이 같은 반이었던 횟수를 계산하는 로직을 구현하고 있습니다. 이때 문제의 요구사항은 각 학생이 다른 학생들과 몇 번씩 같은 반이었는지를 파악하여, 가장 많은 학생들과 같은 반이었던 학생을 찾는 것입니다.

여기서 ij는 학생을 의미하며, 학생들이 자신과도 비교가 이루어져서 cnt가 더해지는 상황이라 할지라도 문제의 요구사항에 큰 영향을 미치지 않습니다. 이유는 모든 학생들이 자신을 포함하여 동일한 논리로 처리되기 때문에, 비교 결과에 있어 상대적인 차이를 만들지 않기 때문입니다. 쉽게 말해, 자기 자신과의 비교로 인해 cnt에 5가 더해지더라도, 이 추가된 값은 모든 학생에게 공통적으로 적용되어 상위 값을 찾는 데 영향을 미치지 않는다는 것입니다.

다음과 같은 게시글들을 참고하시면, 유사한 질문과 더불어 다양한 접근 방식과 설명을 얻을 수 있습니다:

  1. 11. 임시반장정하기 질문 있습니다.
  2. 질문드립니다.
  3. 2-11 임시반장 정하기 문제 해결 도와주세요

이 게시글에서는 cnt의 설계와 로직에 대해 더 심도 있는 설명을 확인할 수 있습니다. 특히, 자기 자신과의 비교에 대한 해석 및 이를 허용하는 이유에 대한 이해를 돕습니다.

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

커디널스님의 프로필 이미지
커디널스

작성한 질문수

질문하기