-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[Gold V] Title: ZOAC, Time: 0 ms, Memory: 2156 KB -BaekjoonHub
- Loading branch information
Showing
2 changed files
with
89 additions
and
0 deletions.
There are no files selected for viewing
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,36 @@ | ||
# [Gold V] ZOAC - 16719 | ||
|
||
[문제 링크](https://www.acmicpc.net/problem/16719) | ||
|
||
### 성능 요약 | ||
|
||
메모리: 2156 KB, 시간: 0 ms | ||
|
||
### 분류 | ||
|
||
구현, 재귀, 문자열 | ||
|
||
### 제출 일자 | ||
|
||
2024년 2월 8일 16:47:45 | ||
|
||
### 문제 설명 | ||
|
||
<p>2018년 12월, 처음 시작하게 된 ZOAC의 오프닝을 맡은 성우는 누구보다 화려하게 ZOAC를 알리려 한다.</p> | ||
|
||
<p>앞 글자부터 하나씩 보여주는 방식은 너무 식상하다고 생각한 성우는 문자열을 보여주는 새로운 규칙을 고안해냈다!</p> | ||
|
||
<p>규칙은 이러하다. 아직 보여주지 않은 문자 중 추가했을 때의 문자열이 사전 순으로 가장 앞에 오도록 하는 문자를 보여주는 것이다.</p> | ||
|
||
<p>예를 들어 ZOAC를 보여주고 싶다면, A → AC → OAC → ZOAC 순으로 보여주면 된다.</p> | ||
|
||
<p>바쁜 성우를 위하여 이 규칙대로 출력해주는 프로그램을 작성하시오.</p> | ||
|
||
### 입력 | ||
|
||
<p>첫 번째 줄에 알파벳 대문자로 구성된 문자열이 주어진다. 문자열의 길이는 최대 100자이다.</p> | ||
|
||
### 출력 | ||
|
||
<p>규칙에 맞게 순서대로 문자열을 출력한다.</p> | ||
|
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,53 @@ | ||
#include <iostream> | ||
#include <algorithm> | ||
#include <vector> | ||
#include <queue> | ||
using namespace std; | ||
|
||
#define INF 1000000000 | ||
|
||
vector<char> res; | ||
string str; | ||
|
||
void printRes() { | ||
for (int i = 0; i < res.size(); i++) { | ||
if (res[i] != ' ') { | ||
cout << res[i]; | ||
} | ||
} | ||
cout << '\n'; | ||
} | ||
|
||
void getChar(int s) { | ||
priority_queue<pair<char, int>, vector<pair<char, int>>, greater<pair<char, int>>> pq; | ||
for (int i = s; i < str.size(); i++) { | ||
if (res[i] == ' ') { | ||
pq.push({str[i], i}); | ||
} | ||
} | ||
while(!pq.empty()) { | ||
char temp = pq.top().first; | ||
char index = pq.top().second; | ||
pq.pop(); | ||
if (res[index] != ' ') { | ||
continue; | ||
} | ||
res[index] = temp; | ||
printRes(); | ||
getChar(index + 1); | ||
} | ||
return; | ||
} | ||
|
||
int main() | ||
{ | ||
ios_base::sync_with_stdio(0); | ||
cin.tie(0); | ||
//freopen("input.txt", "r", stdin); | ||
|
||
getline(cin, str); | ||
res.assign(str.size(),' '); | ||
|
||
getChar(0); | ||
return 0; | ||
} |