728x90
반응형
백준 코딩 알고리즘 문제 1107번
백준 코딩 알고리즘 문제 1107번 풀이 - 사용 언어: C++
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
|
#include <iostream>
using namespace std;
int remocon[10] = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 };
int main() {
int N, M;
//목표 채널을 입력받음
cin >> N;
//고장난 버튼의 수를 입력받음
cin >> M;
int remoconNum;
for (int i = 0; i < M; i++) {
//망가진 버튼을 입력받음
cin >> remoconNum;
//망가진 부분의 리모콘 배열값을 0으로 만듦
remocon[remoconNum] = 0;
}
int MIN;
//기본채널100에서 ++혹은 --로만 이동하는 경우
if (N <= 100) {
MIN = 100 - N;
}
else {
MIN = N - 100;
}
int channel; //현재 채널
int length;
bool flag = false; //채널에 근접하게 도달하여 연산이 끝났는지 판별
//수학적방법
for (int i = 0; i <= 1000000; i++) {
channel = i; //각 채널마다 계산
length = 0; //채널 자리수 - 즉 숫자 버튼을 누르는 횟수
flag = false;
while (true) {
if (remocon[channel % 10]) { //버튼이 사용가능한 경우
channel = channel / 10;
length++;
if (channel == 0) { //채널번호를 끝까지 숫자 버튼으로 누를 수 있는 경우
flag = true;
break;
}
}
else { //버튼이 망가진경우
break; //이 채널은 버튼을 눌러서 갈 수 없으므로, 반복문을 빠져나감
}
}
int move;
if (flag) { //채널번호를 끝까지 숫자버튼으로 누를 수 있는 경우
if (i > N) {
move = i - N; // -버튼을 누르는 횟수
}
else {
move = N - i; // +버튼을 누르는 횟수
}
if (length + move < MIN)
MIN = length + move;
}
}
cout << MIN;
return 0;
}
|
cs |
문제풀이 참고 블로그: https://kwanghyuk.tistory.com/51
728x90
반응형
'Dev > BAEKJOON 백준' 카테고리의 다른 글
[백준/BOJ] 백준 코딩 알고리즘 1182번/C++ (0) | 2019.07.20 |
---|---|
[백준/BOJ] 백준 코딩 알고리즘 2503번/C++ (0) | 2019.07.20 |
[백준/BOJ] 백준 코딩 알고리즘 1018번/C++ (0) | 2019.07.17 |
[백준/BOJ] 백준 코딩 알고리즘 10448번/C++ (0) | 2019.07.17 |
[백준/BOJ] 백준 코딩 알고리즘 3085번/C++ (0) | 2019.07.17 |