[BOJ / C++] 스타트링크 (BFS)

2025. 7. 8. 18:16·코딩테스트/BOJ

 

문제링크: https://www.acmicpc.net/problem/5014

 

1. 코드

#include <bits/stdc++.h>
using namespace std;

int main() {
	int f, s, g, u, d;
	cin >> f >> s >> g >> u >> d;

	vector<int> level(1000002, -1);

	queue<int> Q;
	Q.push(s);
	level[s] = 0;

	while (!Q.empty()) {
		int now = Q.front(); Q.pop();
		
		for (int step : {u, -d}) {
			int nxt = now + step;
			if (nxt < 1 || nxt > f) continue;
			if (level[nxt] != -1) continue;

			level[nxt] = level[now] + 1;
			Q.push(nxt);

			if (level[g] != -1) {
				cout << level[g];
				return 0;
			}
		}
	}
	cout << "use the stairs";
}

 

2. 분석

    처음에 level 배열을 0으로 초기화했는데 이 때문에 오류가 발생했었다. level[s]를 처음에 0으로 초기화하고 if (level[nxt] != 0) continue;로 계속 확인했어서 level[s]를 체킹하지 못한 것이다. level 배열 초깃값을 -1로 세팅하고 0부터 시작하면 이 부분이 해결된다!! 앞으로 이 부분을 신경쓰자!

 

3. 시간복잡도

    건물에는 f 층이 있으므로 bfs에서 방문하는 것도 최대 f번이다. 따라서 시간복잡도는 O(f)이다.

'코딩테스트 > BOJ' 카테고리의 다른 글

[BOJ / C++] 하노이 탑 이동 순서 (재귀)  (0) 2025.07.10
[BOJ / C++] 곱셈 (재귀)  (0) 2025.07.09
[BOJ / C++] 안전 영역 (BFS)  (0) 2025.07.08
[BOJ / C++] 단지번호붙이기 (BFS)  (0) 2025.07.07
[BOJ / C++] 영역 구하기 (BFS)  (0) 2025.07.06
'코딩테스트/BOJ' 카테고리의 다른 글
  • [BOJ / C++] 곱셈 (재귀)
  • [BOJ / C++] 안전 영역 (BFS)
  • [BOJ / C++] 단지번호붙이기 (BFS)
  • [BOJ / C++] 영역 구하기 (BFS)
sophon
sophon
sophon 님의 블로그 입니다.
  • sophon
    sophon 님의 블로그
    sophon
    • 카테고리 (172) N
      • 컴퓨터공학 (36)
        • 데이터베이스 (19)
        • 네트워크 (15)
        • 기타 이슈 (2)
      • 프로젝트 (16)
        • Java (8)
        • Spring (4)
        • Docker (4)
      • 코딩테스트 (95) N
        • BOJ (74)
        • 프로그래머스 (7)
        • 프로그래머스 SQL (12) N
        • PS Snippets (2)
      • 🌱 잡담 (22)
        • 자격증 (7)
        • 좋은 시 모음 (12)
        • 책과 영화 (3)
        • 기록 (0)
  • 전체
    오늘
    어제
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
sophon
[BOJ / C++] 스타트링크 (BFS)
상단으로

티스토리툴바