[풀이]
답이 하나만 정해져있는 것이 아닌 문제였는데요,
저는 예제처럼 33이 아닌 1과 4만 사용해서 Greedy하게 해결했습니다.
단순하게 KBS1 찾아서 제일 위로 올리고 KBS2 찾아서 그 위로 올려버렸습니다.
이렇게 하면 만약 채널 수가 최대값(100) 이더라도 눌러야할 버튼 수가 400번이 안됩니다.(문제 조건은 500개 미만)
아래는 해당 코드입니다 :)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
#include <iostream>
#include <string>
using namespace std;
int main(void) {
int n;
cin >> n;
int kbs1_idx, kbs2_idx;
for (int i = 0; i < n; i++) {
string chnl;
cin >> chnl;
if (chnl == "KBS1") kbs1_idx = i;
if (chnl == "KBS2") kbs2_idx = i;
}
if (kbs1_idx > kbs2_idx) kbs2_idx++;
for (int i = 0; i < kbs1_idx; i++) cout << '1';
for (int i = 0; i < kbs1_idx; i++) cout << '4';
if (kbs2_idx != 1) {
for (int i = 0; i < kbs2_idx; i++) cout << '1';
for (int i = 1; i < kbs2_idx; i++) cout << '4';
}
return 0;
}
|
cs |
질문이나 지적사항 답글 부탁드립니다 :)
'알고리즘 > BOJ' 카테고리의 다른 글
[백준] 14502번 연구소 (0) | 2019.09.11 |
---|---|
[백준] 1260번 DFS와 BFS (0) | 2019.09.07 |
[백준] 3109번 빵집 (0) | 2019.08.19 |
[백준] 8980번 택배 (2) | 2019.08.10 |
[백준] 1543번 문서 검색 (0) | 2019.07.30 |