알고스팟 문제 링크: https://algospot.com/judge/problem/read/STRJOIN
여러개의 문자열이 주어졌을때 그 중 두개의 문자열을 선택해 하나의 문자열로 병합하는 과정을 반복하여 최종적으로 하나의 문자열을 만든다.
두개의 문자열을 하나로 합칠때에는 각각을 문자열의 길이만큼 훑어야 한다. 여러개의 문자열을 하나로 만들기 위해 훑어야 하는 문자열 길이의 최솟값을 구하는 문제이다.
문자열의 길이가 짧은 순서대로 병합하는 그리디 알고리즘으로 문제를 해결할 수 있다.
문자열의 길이가 짧은 순서대로 값을 꺼내어 합을 구한후 다시 삽입하여 정렬하는 과정이 필요하므로 priority_queue를 사용하면 간단히 구현할 수 있다.
코드 원본: https://github.com/sbl133/JongmanBook/blob/main/10.%20Greedy/STRJOIN.cpp
댓글을 통한 코드리뷰, 질문, 지적 언제든 환영입니다!
reference: 프로그래밍 대회에서 배우는 알고리즘 문제해결전략1
'Algorithm > algospot' 카테고리의 다른 글
algospot 게임판 덮기 2 (문제 ID: BOARDCOVER2) (0) | 2021.09.02 |
---|---|
algospot 미나스 아노르 (문제ID: MINASTIRITH) c++ (0) | 2021.09.01 |
algospot 도시락 데우기 (문제 ID: LUNCHBOX) c++ (0) | 2021.09.01 |
algospot 지니어스 (문제 ID: GENIUS) (0) | 2021.08.31 |
algospot 회전초밥(문제 ID: SUSHI) (0) | 2021.08.30 |