본문 바로가기

알고리즘/BOJ

[백준] 2816번 디지털 티비

[풀이]

답이 하나만 정해져있는 것이 아닌 문제였는데요, 

저는 예제처럼 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