wodus0129   3년 전

다음과 같이 작성했더니 메모리 초과 현상이 발생합니다.

어떻게 해결 가능한가요?

knight2995   3년 전

문제의 제약조건을 확인해 주세요(메모리).

sun6996   3년 전

고수가 아니라서 이론적으로 설명하지는 못하겠으나 제가 이해하는데로 설명을 드리겠습니다.

 문제에 보면 1~10,000범위 내에 숫자를 최대 10,000,000개를 받겠다고 되어 있습니다.

이때 Data를 List에 하나 씩 입력을 받아서 넣으면 List[10,000,000]가 할당되고 이를 한번 더 정렬하면 저 리스트가 다시 위치 별로 옮겨야 하는 문제가 발생합니다.

예를 호텔로 들어 보면 한명 씩 10,000,000개의 방에 투숙시키고 방이 순서가 잘못 됬다고 전부 밀어서 방을 옮기라고 하는 꼴입니다.

해결하려면 List는 Index:value가 대응되는 형식을 이용해서 Data를 묶어서 list의 할당량을 줄여 주면됩니다.

미리 List[10,001]를 만들고 index 기준  0~10,000 각 입력 숫자가 Index와 일치하면 나온 횟수로 Value 값을 넣으면 list에 할당된 숫자가 1/1000되어 해결 됩니다.

위에 예를 이어 설명하면 10,000,000명은 모두 10,000가족이고 이를 가족 별로 한방에 넣는다고 생각하시면 됩니다.

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