반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 공무원
- springboot
- 퇴사후공무원
- 한남동맛집
- 한성대맛집
- 통영예쁜카페
- 통영에어비앤비
- 방이편백육분삼십성신여대
- 국가직
- tomcat7
- 파이썬
- 꼴뚜기회
- 성신여대편백집
- 자바스크립트에러처리
- 영화추천
- ubuntu자바설치
- 돈암동맛집
- 뚝섬역맛집
- 통영
- react
- 통영여행
- npm
- gradle
- JavaScript
- 성신여대맛집
- 서울숲누룽지통닭구이
- ELK
- 성북구맛집
- 스페인여행
- 방이편백육분삼십
Archives
- Today
- Total
코린이의 기록
[BOJ] 1463 - 1로 만들기 (C++) 본문
반응형
1. 알고리즘
- DP문제
- 이 문제는 BFS 알고리즘으로 풀 수 있는 문제이다. 즉, Queue를 사용하여 문제를 푼다.
2. 전체 소스
#include <iostream>
#include <queue>
using namespace std;
const int MAX = 1000000;
int check[MAX+1];
int dist[MAX+1];
int main(){
int n;
cin >> n;
queue <int> q;
q.push(n);
check[n] = true;
dist[n] = 0;
while(!q.empty()){
int now = q.front();
q.pop();
if(now == 1)
break;
if(now%3 == 0 && check[now/3] == false){
q.push(now/3);
check[now/3] = true;
dist[now/3] = dist[now] + 1;
}
if(now%2 == 0 && check[now/2] == false){
q.push(now/2);
check[now/2] = true;
dist[now/2] = dist[now] + 1;
}
if(now-1 > 0 && check[now-1] == false){
q.push(now-1);
check[now-1] = true;
dist[now-1] = dist[now] + 1;
}
}
cout<<dist[1] <<endl;
return 0;
}
3. 참고 사항
4. 문제
백준 알고리즘 : https://www.acmicpc.net/problem/1463
반응형
'c&c++ > 백준' 카테고리의 다른 글
[BOJ] 9095 - 1,2,3 더하기 (C++) (0) | 2018.05.08 |
---|---|
[BOJ] 11727 - 타일링2 (C++) (0) | 2018.05.08 |
[BOJ] 1697 - 숨바꼭질 (C++) (0) | 2018.05.08 |
[BOJ] 10971 - 외판원 순회2 (C++) (0) | 2018.05.08 |
[BOJ] 10819 - 차이를 최대로 (C++) (0) | 2018.05.08 |
Comments