13975번 - 파일 합치기 3
알고리즘 초보가 부족한 머리로 고민하다 모르겠어서 도움을 청합니다.
일단 제가 생각한 방법을 설명하겠습니다.
두 파일을 합쳐서 작게 만들수 있는것부터 합치자 생각하고 풀었습니다.
일단 덱을 두개 썼습니다 a - 파일들 리스트 dq - 두 파일의 값을 합친 리스트
1) 파일들을 a에 담고 오름차순 정렬
2) a size 만큼 for문을 돌면서 dq 의 제일 작은값(front) 과 a[ i +1 ]과 비교해서 제일 작은값이 더 작으면 이 값을 빼고 이값에 a[i]를 더해서 이것을 또 dq의 마지막과 비교해서 크면 뒤에 작으면 앞에 담는다 반대로 a[i+1]이 더 작으면 a[i] + a[i+1] 를 dq의 뒤에 담는다
3) a에 dq를 넣고 dq size가 1이 될때까지 반복
테스트케이스 2번에서 826 대신 829가 나옵니다
예외처리가 잘못되었나 아니면 접근방식이 아예 잘못되었나 모르겠어서 도움을 청합니다.
https://ko.wikipedia.org/wiki/...
이 문제와 같습니다.
jseo 님 답변 감사합니다
그 알고리즘은 나중에 한번 보겠습니다
댓글을 작성하려면 로그인해야 합니다.
kgrass99 6년 전
알고리즘 초보가 부족한 머리로 고민하다 모르겠어서 도움을 청합니다.
일단 제가 생각한 방법을 설명하겠습니다.
두 파일을 합쳐서 작게 만들수 있는것부터 합치자 생각하고 풀었습니다.
일단 덱을 두개 썼습니다 a - 파일들 리스트 dq - 두 파일의 값을 합친 리스트
1) 파일들을 a에 담고 오름차순 정렬
2) a size 만큼 for문을 돌면서 dq 의 제일 작은값(front) 과 a[ i +1 ]과 비교해서 제일 작은값이 더 작으면 이 값을 빼고 이값에 a[i]를 더해서 이것을 또 dq의 마지막과 비교해서 크면 뒤에 작으면 앞에 담는다 반대로 a[i+1]이 더 작으면 a[i] + a[i+1] 를 dq의 뒤에 담는다
3) a에 dq를 넣고 dq size가 1이 될때까지 반복
테스트케이스 2번에서 826 대신 829가 나옵니다
예외처리가 잘못되었나 아니면 접근방식이 아예 잘못되었나 모르겠어서 도움을 청합니다.