티스토리 뷰
문제 링크
https://algospot.com/judge/problem/read/STRJOIN
algospot.com :: STRJOIN
문자열 합치기 문제 정보 문제 프로그래밍 언어 C 의 큰 문제점 중 하나는 언어 차원에서 문자열 변수형을 지원하지 않는다는 것입니다. C 에서는 문자 배열로 문자열을 표현하되 \0 (NULL) 로 문자
algospot.com
가장 짧은 문자열 두 개를 선택해 두 문자열을 합치는 방식으로 모든 문자열을 더해나가면 최소 비용을 구할 수 있습니다.
구현 코드
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <iostream> | |
#include <vector> | |
#include <queue> | |
#define endl '\n' | |
#define fastio cin.sync_with_stdio(false); cin.tie(nullptr) | |
using namespace std; | |
int concat(const vector<int>& lengths){ | |
//우선순위 큐를 사용해서 작은 값을 항상 top쪽으로 위치시킨다. | |
priority_queue<int, vector<int>, greater<int>> pq; | |
for(int i=0;i<lengths.size();i++) | |
pq.push(lengths[i]); | |
int ret = 0; | |
while(pq.size() > 1){ | |
//가장 잛은 문자열 두 개를 찾아서 합치고 큐에 넣는다. | |
int min1 = pq.top(); pq.pop(); | |
int min2 = pq.top(); pq.pop(); | |
pq.push(min1 + min2); | |
ret += min1 + min2; | |
} | |
return ret; | |
} | |
int main(){ | |
fastio; | |
int _; | |
cin >> _; | |
while(_--){ | |
int n; | |
cin >> n; | |
vector<int> v(n); | |
for(int i=0;i<n;i++) | |
cin >> v[i]; | |
cout << concat(v) << endl; | |
} | |
return 0; | |
} |
'Coding Test > 알고스팟' 카테고리의 다른 글
[C++] 알고스팟/문자열 검색 - 팰린드롬 만들기 (0) | 2020.09.02 |
---|---|
[C++] 알고스팟/문자열 검색 - 작명하기 (0) | 2020.09.01 |
[C++] 알고스팟/탐욕법 - Microwaving Lunch Boxes (0) | 2020.08.28 |
[C++] 알고스팟/탐욕법 - 출전 순서 정하기 (0) | 2020.08.27 |
[C++] 알고스팟/동적계획법 - 두니발 박사의 탈옥 (0) | 2020.08.26 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- Sqoop
- 출전 순서 정하기
- 하이브
- 완전탐색
- 코딩인터뷰 완전분석
- Hadoop
- import
- Jaeha's Safe
- 하둡
- C++
- 스파크
- 알고스팟
- python
- 분할정복
- 두니발 박사의 탈옥
- hive
- Django
- 삼각형 위의 최대 경로
- 2225
- 배열과 문자열
- 합친 lis
- HiveQL
- 백준
- 종만북
- pyspark
- 삼각형 위의 최대 경로 수 세기
- HDFS
- microwaving lunch boxes
- 외발 뛰기
- 팰린드롬 구하기
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
글 보관함