작성
·
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번 반복하는 반복문이 몇 번으로 중첩되어 이루어지는가가 중요합니다.