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 |
Tags
- OpenGL
- DP
- 계단 함수
- deep learning
- 다익스트라
- union-find
- 3d
- feedforward neural network
- 순방향 신경망
- 손실 함수
- dijkstra
- c++
- 백준
- 이진 분류
- 경사하강법
- 단층 퍼셉트론
- Perceptron
- vanishing gradient
- 동적계획법
- 범용 근사 정리
- 딥러닝
- 이진분류
- 알고리즘
- 베르누이 분포
- BOJ
- 베버의 법칙
- 과대적합
- bfs
- 기울기 소실
- dl
Archives
- Today
- Total
Hello COCOBALL!
C++ [BOJ] 백준 12851번 숨바꼭질 2 본문
https://www.acmicpc.net/problem/12851
12851번: 숨바꼭질 2
수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 때
www.acmicpc.net
SOLUTION
처음엔 무작정 제출했다가 메모리 초과가 떴는데 해결하기 위해 배열 하나를 만들고 123456789로 초기화 한뒤, 이동하려는 위치 좌표의 배열값보다 이동 시간이 작거나 같으면 큐에 push해준다.
코드
#include <iostream>
#include <queue>
#include <vector>
using namespace std;
#define MAX 100001
#define INF 123456789
int n, k;
int visited[MAX], arrival[MAX];
vector<pair<int, int>>v;
void bfs(int a, int k) {
fill(arrival, arrival + MAX, INF);
queue<pair<int, int>>q;
q.push(make_pair(a, 0));
while (!q.empty()) {
int num = q.front().first;
int cnt = q.front().second;
q.pop();
if (num == k) {
cout << cnt << '\n';
int count = 1;
while (!q.empty()) {
if (q.front().first == k && q.front().second == cnt) count++;
q.pop();
}
cout << count << "\n";
return;
}
if (num - 1 >= 0 && !visited[num - 1]) {
if (cnt + 1 <= arrival[num - 1]) {
arrival[num - 1] = cnt + 1;
q.push(make_pair(num - 1, cnt + 1));
}
}
if (num + 1 < MAX && !visited[num + 1]) {
if (cnt + 1 <= arrival[num + 1]) {
arrival[num + 1] = cnt + 1;
q.push(make_pair(num + 1, cnt + 1));
}
}
if (num * 2 < MAX && !visited[num * 2]) {
if (cnt + 1 <= arrival[num * 2]) {
arrival[num * 2] = cnt + 1;
q.push(make_pair(num * 2, cnt + 1));
}
}
}
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int n, k;
cin >> n >> k;
bfs(n, k);
}
'BOJ' 카테고리의 다른 글
C++ [BOJ] 백준 5972번 택배 배송 (0) | 2022.07.07 |
---|---|
C++ [BOJ] 백준 1504번 특정한 최단 경로 (0) | 2022.07.07 |
C++ [BOJ] 백준 13549번 숨바꼭질 3 (0) | 2022.07.05 |
C++ [BOJ] 백준 1991번 트리 순회 (0) | 2022.07.04 |
C++ [BOJ] 백준 13424번 비밀 모임 (1) | 2022.07.02 |