[C++] 백준 1697번 문제풀이

2021. 2. 11. 16:41·문제풀이/백준

문제를 보고 든 생각은 내가 숫자를 X2 또는 +1 또는 -1 을 이용하여

K에 도달하도록 만드는 것이 였다.

그러나 문제를 풀수록 멍청한 생각이였단걸 알았고

BFS를 통해 쉽게 풀 수 있었다.

(내가 풀지 말고 컴퓨터를 이용하여 풀도록 하자)

BFS를 배워도 그것을 떠올리고 풀기가 쉽지 않았다....

문제를 보고 어떤식으로 풀어야겠다 이 단계에서 BFS DFS 트리 등등을 떠올릴 수 있어야 하는데

그 단계 까지 가진 못했다. 그 동안 배운 자료구조를 풀어서 정리 해봐야겠다...

#include<iostream>
#include<algorithm>
#include<queue>
using namespace std;
bool visited[1000001];
int main() {
	ios_base::sync_with_stdio(0);
	cin.tie(NULL);
	int N, K;
	cin >> N >> K;
	queue<pair<int, int>>q;
	q.push(pair<int, int>(N, 0));
	while (!q.empty()) {
		int first = q.front().first;
		int second = q.front().second;
		if (first == K)
			break;
		q.pop();
		visited[first] = true;
		if (first + 1 <= 1000000 && !visited[first+1])
			q.push(pair<int, int>(first + 1, second + 1));
		if (first - 1 >= 0 && !visited[first - 1])
			q.push(pair<int, int>(first - 1, second + 1));
		if (first * 2 <= 100000 && !visited[first * 2])
			q.push(pair<int, int>(first * 2, second + 1));

	}
	cout << q.front().second << "\n";
}

'문제풀이 > 백준' 카테고리의 다른 글

[C++] 백준 1389번 문제풀이  (0) 2021.02.14
[C++] 백준 1764번 문제풀이  (0) 2021.02.11
[C++] 백준 1620번 문제풀이  (0) 2021.02.11
[C++] 백준 1463번 문제풀이  (0) 2021.02.09
[C++]백준 1074 번 문제 풀이  (0) 2021.02.09
'문제풀이/백준' 카테고리의 다른 글
  • [C++] 백준 1389번 문제풀이
  • [C++] 백준 1764번 문제풀이
  • [C++] 백준 1620번 문제풀이
  • [C++] 백준 1463번 문제풀이
Viper1
Viper1
  • Viper1
    생각의 흐름
    Viper1
  • 전체
    오늘
    어제
    • 분류 전체보기 (69)
      • 문제풀이 (40)
        • 백준 (25)
        • 프로그래머스 (15)
      • 딥러닝 공부 (6)
      • 스프링 (8)
      • 자바 (9)
      • DevOps (2)
      • DB (4)
      • 회고 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Viper1
[C++] 백준 1697번 문제풀이
상단으로

티스토리툴바