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

세진:)님의 프로필 이미지
세진:)

작성한 질문수

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

11. 임시반장정하기

임시 반장 - break를 하는 이유

작성

·

367

·

수정됨

0

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.

 

안녕하세요~

제가 문제의 요지를 잘 파악 못해서 그런거 같은데 break를 하는 이유가 뭔지 잘 이해가 안됩니다.

7:50부분

저같은 경우는 2학년(k)때 3번학생(j)과 4번학생(i)이 같고

3학년(k)때도 3번학생(j)과 4번학생(i)이 같은 경우를 카운팅 했었는데요

break를 해야 한다는걸 문제의 어떤 줄을 보고 바로 깨달을 수 있을까요?

 

같았던 횟수를 구하는게 아니고, 같았던 학생의 명수를 구하는거라서 한번 같았으면 break하는거라고 이해하면 되는게 맞을까요?

 다시 말해서, i와 j가 고정된 상태에서 k를 순회하는 중에 한번이라도 같으면 break를 하면 되는건가요?

 

--

 

그리고 추가 질문으로

if ( i != j )를 안해도 된다고 하셨는데, 이 조건문을 추가함으로써 순회하는 과정을 일부 제외해서 성능이 더 좋아지지 않을까 생각해보는데 이런 생각도 맞는지 궁금합니다! 이미 for문의 조건문으로 설정된 부분이라 if문을 걸어도 시간복잡도에 영향은 없나요?

답변 1

0

김태원님의 프로필 이미지
김태원
지식공유자

안녕하세요^^

1학년때부터 5학년때까지 한 번이라도 같은 반을 한 학생수를 구하는 겁니다. 만약 1번 학생과 같은 반을 한 학생수를 구할 때 1번학생과 3번 학생이 2학년때 같은반을 했고, 3학년때도 같을 반을 했어도 1번 핵생과 같은 반을 한 학생으로 3번 학생을 한 번만 카운팅해야 한다는 것입니다.

if문 하나 추가되고 안되고로 시간복잡도를 따지지는 않습니다. 시간복잡도는 입력크기 n이라면 n번 반복하는 반복문이 몇 번으로 중첩되어 이루어지는가가 중요합니다.

세진:)님의 프로필 이미지
세진:)

작성한 질문수

질문하기