최's 먹공로그
BOJ9205 맥주 마시면서 걸어가기 본문
<Solution>
※ 음수좌표의 경우를 생각 못함
1. 입력받은 좌표를 더해서 하나의 상수로 생각
2. 상근위치 + 맥주 최대거리 계산 >= 페스티벌 위치 이면 happy
3. 상근위치 + 맥주 최대거리 계산 >= 편의점 중 가장 멀리 갈 수 있는 편의점 이면 상근위치를 해당 편의점 위치로 갱신
4. 갈 수 없는 경우는 현재위치에서 페스티벌 장소로 갈 수 없고 편의점으로도 갈 곳이 없을 때 sad
<Source Code>
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Collections;
import java.util.StringTokenizer;
public class BOJ9205_맥주마시면서걸어가기 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine(), "");
int t = Integer.parseInt(st.nextToken());
for(int tc = 0; tc < t; tc++) {
st = new StringTokenizer(br.readLine(), "");
int n = Integer.parseInt(st.nextToken()); // 편의점 개수
Integer[] n_array = new Integer[n]; // 편의점 위치 배열
int[] n_visit = new int[n];
st = new StringTokenizer(br.readLine(), " ");
int house = Integer.parseInt(st.nextToken()) + Integer.parseInt(st.nextToken()); // 상근이네
for(int ni = 0; ni < n; ni++) {
st = new StringTokenizer(br.readLine(), " ");
n_array[ni] = Integer.parseInt(st.nextToken()) + Integer.parseInt(st.nextToken());
}
st = new StringTokenizer(br.readLine(), " ");
int festival = Integer.parseInt(st.nextToken()) + Integer.parseInt(st.nextToken()); // 축제위치
int beer = 20; // 최초 맥주 20개로 시작
Arrays.sort(n_array, Collections.reverseOrder());
// 맥주 먹으면 걸어가보기
while(house < festival) {
// 1. 현재 맥주 최대로 먹고 페스티벌 위치까지 갈수있나??
if((beer * 50) + house >= festival) {
System.out.print("happy");
house = festival;
break;
}
// 2. 현재 맥주 최대로 먹고 편의점 갈 수 있는 곳이 있는가??
int house_temp = house;
for(int ni = 0; ni < n; ni++) {
if((beer * 50) + house >= n_array[ni] && n_visit[ni] == 0) {
house = n_array[ni];
n_visit[ni] = 1;
}
}
// 3. 갈수없다 -> 현재위치에서 페스티벌 장소로 갈 수도 없고 더 갈수있는 편의점이 없다
if((beer * 50) + house < festival && house == house_temp) {
System.out.print("sad");
break;
}
}
}
}
}
생각 못한 경우 다 음수로 들어왔을 때
1
2
-1 -1
-1000 0
-1000 -1000
-2000 -1000
위 경우 갈 수 있어야함 그런데 안됨 다시 생각해보자...
'APS' 카테고리의 다른 글
BOJ17779 게리맨더링2 (0) | 2022.07.24 |
---|---|
BOJ14503 로봇청소기 (0) | 2022.06.26 |
BOJ2573 빙산 (0) | 2022.06.26 |
BOJ2468 안전영역 (0) | 2022.06.13 |
BOJ5014 스타트링크 (0) | 2022.06.13 |