백준 1463번: 1로 만들기 / C++
2023. 2. 21. 20:55ㆍ개인공부/코딩테스트
처음 접근방법은 현재 입력값에서 한칸씩 내려가면서 찾을려고 했는데 실수한 부분이 낮은수와 높은 수를 비교할때 낮은 수의 경우에만 계산했기때문에 문제를 해결하지 못했다. 그래서 이번에는 반대로 역순으로 배열을 만들어서 문제를 해결하였다.
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
|
#include <iostream>
#include <vector>
using namespace std;
int arr[1000001] = { 0, 0, 0, 0};
int main()
{
int num = 0;
cin >> num;
vector<int> vec;
vec.push_back(1);
int i = 1;
if (num != 1)
{
while (arr[num] == 0)
{
vector<int> vec2;
for (auto iter = vec.begin(); iter != vec.end(); ++iter)
{
int X = *iter;
if (2 * X < 1000001 &&arr[2 * X] == 0)
{
arr[2 * X] = i;
vec2.push_back(2 * X);
}
if (3 * X < 1000001 && arr[3 * X] == 0)
{
arr[3 * X] = i;
vec2.push_back(3 * X);
}
if (X + 1 < 1000001 && arr[X + 1] == 0)
{
arr[X + 1] = i;
vec2.push_back(X + 1);
}
}
vec.clear();
vec = vec2;
++i;
}
}
cout << arr[num];
return 0;
}
|
cs |
'개인공부 > 코딩테스트' 카테고리의 다른 글
백준 2156번 : 포도주 시식 / C++ (0) | 2023.02.22 |
---|---|
백준 10844번 : 쉬운 계단 수 / C++ (0) | 2023.02.22 |
백준 2579번 : 계단 오르기 / C++ (0) | 2023.02.20 |
백준 24416번 : 알고리즘 수업 - 피보나치 수 1 / C++ (0) | 2023.02.20 |
백준 14889번: 스타트와 링크 / C++ (0) | 2023.02.19 |