※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※

 

이번에 볼 문제는 백준 25558번 문제인 내비게이션이다.
문제는 아래 링크를 확인하자.

https://www.acmicpc.net/problem/25558 

 

25558번: 내비게이션

1번 내비게이션이 안내한 경로는 $(0,0) \rightarrow (11,1) \rightarrow (9,9) \rightarrow (10,10)$으로, 총 거리는 $12 + 10 + 2 = 24$이다. 2번 내비게이션이 안내한 경로는 $(0,0) \rightarrow (1,12) \rightarrow (9,9) \ri

www.acmicpc.net

안내하는 경로의 길이가 가장 짧은 내비게이션을 찾아 문제를 해결하자. 이는 반복문을 이용해 간단히 구현해낼 수 있다.

 

출발지와 첫번째 경유지 사이의 거리, 마지막 경유지와 도착지 사이의 거리의 처리에 유의해 구현하자.

 

아래는 제출한 소스코드이다.

#include <iostream>
using namespace std;
typedef long long ll;

int N;
ll Sx, Sy, Ex, Ey;
ll X[100], Y[100];
ll ans = 0, dist = 1000000000000000007LL;

int main() {
	ios::sync_with_stdio(0);
	cin.tie(0);

	cin >> N >> Sx >> Sy >> Ex >> Ey;

	for (int i = 1; i <= N; i++) {
		ll val = 0;
		int M; cin >> M;
		for (int m = 0; m < M; m++) cin >> X[m] >> Y[m];
		for (int m = 1; m < M; m++) val += abs(X[m] - X[m - 1]) + abs(Y[m] - Y[m - 1]);
		val += abs(X[0] - Sx) + abs(Y[0] - Sy) + abs(X[M - 1] - Ex) + abs(Y[M - 1] - Ey);
		
		if (val < dist) ans = i, dist = val;
	}

	cout << ans;
}
728x90

'BOJ' 카테고리의 다른 글

[BOJ 26942 // C++] Gruppindelning  (1) 2023.01.11
[BOJ 6600 // C++] 원의 둘레  (0) 2023.01.10
[BOJ 18130 // C++] 여름나기  (0) 2023.01.10
[BOJ 27110 // C++] 특식 배부  (0) 2023.01.10
[BOJ 26949 // C++] Kylskåpstransport  (0) 2023.01.10

+ Recent posts