ook505   4달 전

으어.. IT학과생인데 정답률 85%짜리를 못 풀고 있는 제 자신이 너무 안타깝습니다ㅠㅠ 예제 코드 입력하면 정답이 출력되는데 왜 자꾸 틀렸다고 할까요? 제가 뭘 깜빡한걸까요?

zasxer   4달 전

for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 3; j++) {
            if (sum[i] < sum[i + 1]) {
                temp = sum[i + 1];
                sum[i + 1] = sum[i];
                sum[i] = temp;
            }
        }
   }

이 부분이 정렬되는 지 다시 생각해보세요

ook505   4달 전

하하하... 감사합니다. 허탈하군요.

tjdgns9246   4달 전

저도 코딩이 허접하지만 답변 드려봅니다..

먼저 문제는 각 역에서 기차에서 "사람들이 내린 후 다시 탔을 때", 그 역에서의 인원을 셉니다.

그리고 님의 소스에서 13번째 줄의 for문 속 j는 전혀 쓰이지 않고있으므로 지워도 무방하다고 봅니다.

그리고 14번째줄의 if문 속의 내용을 보면, 단순히 "i번째 역의 인원" 과 "(i + 1)번째 역의 인원"을 비교해서

(i + 1)번째 역의 인원이 더 크다면, i번째의 역의 인원의 값과 서로 바꿔주기만 하고있습니다.


1번째 역의 인원 < 2번째 역의 인원 < 3번째 역의 인원 이라고 가정하면, 원래의 정답은 3번째 역의 인원을 출력해야 합니다.

소스에 따르면,

1번째 역 & 2번째 역 => sum[1] 과 sum[2]를 바꿈

2번째 역 & 3번째 역 => sum[2] 과 sum[3]을 바꿈

3번째 역 & 4번째 역 => sum[3] 과 sum[4]를 바꿈

이렇게 되면 결국 아무 의미가 없게됩니다.


소스를 보니.. sum[0]에 가장 큰 값을 저장하셔서 출력을 하시려는 것 같은데,  그렇게 되면 이렇게 바꾸시면 될 것 같습니다.


댓글을 작성하려면 로그인해야 합니다.