SSONG Cloud
[백준] 9205 맥주 마시면서 걸어가기 본문
반응형
문제 출처: www.acmicpc.net/problem/9205
9205번: 맥주 마시면서 걸어가기
송도에 사는 상근이와 친구들은 송도에서 열리는 펜타포트 락 페스티벌에 가려고 한다. 올해는 맥주를 마시면서 걸어가기로 했다. 출발은 상근이네 집에서 하고, 맥주 한 박스를 들고 출발한다.
www.acmicpc.net
: 집과 도착지 그리고 편의점을 하나의 배열에 저장한다.
: 집을 먼저 큐에 넣어주고 편의점들과 도착지를 검사하면서 맥주 20병 내로 이동할 수 있는 곳들을 찾아
: BFS 방식으로 이동시키고 도착지에 도달할 수 있으면 happy 를 도착하지 못하고 끝나면 sad를 출력한다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.Queue;
import java.util.StringTokenizer;
public class Main {
static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
static StringBuilder sb = new StringBuilder();
static StringTokenizer st;
static class Point{
int x, y;
public Point(int x, int y) {
super();
this.x = x;
this.y = y;
}
@Override
public String toString() {
return "Point [x=" + x + ", y=" + y + "]";
}
}
public static void main(String[] args) throws NumberFormatException, IOException {
int T = Integer.parseInt(br.readLine());
for(int tc = 0; tc < T; tc++) {
int N = Integer.parseInt(br.readLine());
Point[] point = new Point[N+2];
for(int i = 0; i < N+2; i++) { // 마지막은 도착지
st = new StringTokenizer(br.readLine());
int x = Integer.parseInt(st.nextToken());
int y = Integer.parseInt(st.nextToken());
point[i] = new Point(x, y);
}
// System.out.println(Arrays.toString(point));
boolean flag = false;
boolean[] v = new boolean[N+2];
Queue<Point> q = new LinkedList<>();
q.offer(point[0]);
v[0] = true;
while(!q.isEmpty()) {
Point p = q.poll();
if(p.x == point[N+1].x && p.y == point[N+1].y) {
flag = true;
break;
}
for(int i = 1; i < N+2; i++) {
int dx = Math.abs(point[i].x - p.x);
int dy = Math.abs(point[i].y - p.y);
if(v[i] || dx + dy > 1000) continue;
q.offer(point[i]);
v[i] = true;
}
}
if(flag) sb.append("happy\n");
else sb.append("sad\n");
}
System.out.println(sb);
}
}
반응형
'Algorithm > 백준' 카테고리의 다른 글
[백준] 4386 별자리 만들기 (0) | 2021.03.28 |
---|---|
[백준] 2644 촌수계산 (0) | 2021.03.27 |
[백준] 14502 연구소 (0) | 2021.03.26 |
[백준] 17472 다리 만들기2 (0) | 2021.03.26 |
[백준] 3184 양 (0) | 2021.03.26 |
Comments