yky2798   7년 전


제 코드를 채점해보면 틀렸습니다 라고 뜹니다. 

런타임 에러도 아니고 왜 처음부터 틀렸다고 하는지 이해가 잘 안되네요.

알고리즘은 선택정렬을 사용했습니다.

도움을 주시면 감사하겠습니다.

ljh6274   7년 전

선택 정렬 잘못 구현 하셨네요, 보통의 선택정렬이면 아래와 같이 구현 합니다.

for (int i = 0; i < arr.length; i++) {         
            for (int j = i + 1; j < arr.length; j++) {
                if (arr[i] > arr[j]) {
                    temp = arr[i]; arr[i] = arr[j]; arr[j] = temp;

                }
            }          
        }

하지만 이 문제는 일반적인 정렬로 풀리는 문제가 아닙니다. 입력이 1000만까지 주어지기 때문에 선택 정렬이 아니라, 퀵 정렬을 사용해도 출력으로 인해 아마 시간초과가 날 것으로 예상 됩니다.

숫자가 1~10,000 까지 주어지는 것을 이용하여 해당 숫자가 몇번 입력이 되는지를 세어서 이 횟수만큼 순차적으로 출력 시키는 방법으로 하셔도 제한 시간내에 통과는 됩니다.

다만, 시간을 더 줄이려면 출력할 숫자를 문자열 형태로 저장하였다가 출력하는 방식으로 출력 횟수를 최소화 하면 되겠습니다.

chokojung12   7년 전

입력 숫자 갯수와 입력 숫자의 범위에 대해서 고민해보시면 좋겠네요

 

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