문제 링크
https://www.acmicpc.net/problem/15803
문제 설명
한때 굉장히 유행하고 유명했던 게임, PLAYERJINAH’S BOTTLEGROUNDS는 FPS(First-Person Shooter) 장르의 게임이다. 전 세계적으로 많은 사람을 열광시킨 이 게임은 영화 Bottle Royale 을 모티브로 만들어졌다. 영화 Bottle Royale 에서는 한 학급의 학생들을 한 섬에 가두고, 그들에게 각자 병을 지급한 뒤, 단 한 명의 승자가 남을 때까지 서로 병 던지기를 시키는 내용이 나온다. 이 게임은 그와 비슷하게 100명의 플레이어가 각자 거대한 수송기에서 낙하산으로 낙하하여 한 명의 승자가 남을 때까지 진행된다.
이 게임을 즐기는 진아는 굉장한 실력의 게이머로서, 그녀의 실력은 화면 속의 적을 동시에 3명까지 맞춰 쓰러뜨릴 정도로 잘한다. 대신에 그녀가 제 실력을 발휘하기 위해선 한 가지 조건이 있다. 그건 적들이 진아의 화면 속에서 직선으로 있을 때만 동시에 쓰러뜨릴 수 있다는 것인데, 몇 번의 승부로 이를 알아챈 준서는 BOTTLEGROUNDS 대회에서 진아를 쓰러뜨리고 우승하기 위해 같은 스쿼드의 팀원들과 특훈을 시작했다. 특훈 내용은 상대방의 화면 속에서 각자의 위치가 직선이 안 되도록 포지션을 잡는 것이다. 준서는 이 연습을 위해서 당신에게 현재 팀원들의 상대방 화면 속 위치들이 직선이 되는지를 판별하는 기계를 만들어 달라고 요청했다. 당신에게 의뢰비로 대회 상금의 30%를 약속했기 때문에 당신은 흔쾌히 제안을 수락했다. 이제 그들에게 전달할 기계의 프로그램을 만들어 보도록 하자.
즉, 직선이 되는지 안되는지 확인하는 프로그램
입력
프로그램의 입력은 표준 입력으로 받는다. 스쿼드는 총 4명으로 구성되며 준서는 멀리서 저격을 하기 때문에 좌표가 주어지지 않는다. 따라서 첫 번째 줄부터 세 번째 줄까지 x, y (1 ≤ x, y ≤ 1000) 두 개의 자연수가 각각 주어진다. 각 줄의 x, y는 한 명의 팀원이 상대방 화면에서 어떤 위치인지 나타낸다. 그리고 팀원들은 항상 서로 다른 위치에 있다.
출력
프로그램의 출력은 표준 출력으로 한다. 팀원의 위치가 직선이 될 때 ‘WHERE IS MY CHICKEN?’ 을, 아닌 경우 ‘WINNER WINNER CHICKEN DINNER!’ 를 출력한다.
구조화
걸린 시간: 20분
직선인지 아닌지 유무 체크
- 가로 직선(x가 다 같으면 됨)
- 세로 직선(y가 다 같으면 됨)
- 대각선(기울기가 같으면 됨)
가로, 세로 직선을 위해 수마다 카운트하는 cntX, cntY배열을 만듦
소스 코드
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
int[] cntX = new int[1001];
int[] cntY = new int[1001];
int[][] map = new int[3][2];
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
for (int i = 0; i < 3; i++) {
st = new StringTokenizer(br.readLine());
int x = Integer.parseInt(st.nextToken());
int y = Integer.parseInt(st.nextToken());
cntX[x]++;
cntY[y]++;
map[i][0] = x;
map[i][1] = y;
}
if (cntX[map[0][0]] >= 3) {
System.out.println("WHERE IS MY CHICKEN?");
}
else if (cntY[map[0][1]] >= 3) {
System.out.println("WHERE IS MY CHICKEN?");
}
// 기울기가 같은지 확인
else {
double m1 = (double) (map[1][1] - map[0][1])/(map[1][0]-map[0][0]);
double m2 = (double) (map[2][1] - map[1][1])/(map[2][0]-map[1][0]);
if (m1 == m2) System.out.println("WHERE IS MY CHICKEN?");
else System.out.println("WINNER WINNER CHICKEN DINNER!");
}
}
}
'Algorithm > 백준' 카테고리의 다른 글
[백준] 1236 성 지키기 🏰 (Java) (1) | 2024.11.24 |
---|---|
[백준] 13305 주유소 🚗 (Java) (0) | 2024.11.22 |
[백준] 10093 숫자 🔢 (Java) (1) | 2024.11.20 |
[백준] 10282 해킹 💻 (Java) (1) | 2024.11.19 |
[백준] 1197 최소 스패닝 트리 🎄 (Java) (1) | 2024.11.19 |
문제 링크
https://www.acmicpc.net/problem/15803
문제 설명
한때 굉장히 유행하고 유명했던 게임, PLAYERJINAH’S BOTTLEGROUNDS는 FPS(First-Person Shooter) 장르의 게임이다. 전 세계적으로 많은 사람을 열광시킨 이 게임은 영화 Bottle Royale 을 모티브로 만들어졌다. 영화 Bottle Royale 에서는 한 학급의 학생들을 한 섬에 가두고, 그들에게 각자 병을 지급한 뒤, 단 한 명의 승자가 남을 때까지 서로 병 던지기를 시키는 내용이 나온다. 이 게임은 그와 비슷하게 100명의 플레이어가 각자 거대한 수송기에서 낙하산으로 낙하하여 한 명의 승자가 남을 때까지 진행된다.
이 게임을 즐기는 진아는 굉장한 실력의 게이머로서, 그녀의 실력은 화면 속의 적을 동시에 3명까지 맞춰 쓰러뜨릴 정도로 잘한다. 대신에 그녀가 제 실력을 발휘하기 위해선 한 가지 조건이 있다. 그건 적들이 진아의 화면 속에서 직선으로 있을 때만 동시에 쓰러뜨릴 수 있다는 것인데, 몇 번의 승부로 이를 알아챈 준서는 BOTTLEGROUNDS 대회에서 진아를 쓰러뜨리고 우승하기 위해 같은 스쿼드의 팀원들과 특훈을 시작했다. 특훈 내용은 상대방의 화면 속에서 각자의 위치가 직선이 안 되도록 포지션을 잡는 것이다. 준서는 이 연습을 위해서 당신에게 현재 팀원들의 상대방 화면 속 위치들이 직선이 되는지를 판별하는 기계를 만들어 달라고 요청했다. 당신에게 의뢰비로 대회 상금의 30%를 약속했기 때문에 당신은 흔쾌히 제안을 수락했다. 이제 그들에게 전달할 기계의 프로그램을 만들어 보도록 하자.
즉, 직선이 되는지 안되는지 확인하는 프로그램
입력
프로그램의 입력은 표준 입력으로 받는다. 스쿼드는 총 4명으로 구성되며 준서는 멀리서 저격을 하기 때문에 좌표가 주어지지 않는다. 따라서 첫 번째 줄부터 세 번째 줄까지 x, y (1 ≤ x, y ≤ 1000) 두 개의 자연수가 각각 주어진다. 각 줄의 x, y는 한 명의 팀원이 상대방 화면에서 어떤 위치인지 나타낸다. 그리고 팀원들은 항상 서로 다른 위치에 있다.
출력
프로그램의 출력은 표준 출력으로 한다. 팀원의 위치가 직선이 될 때 ‘WHERE IS MY CHICKEN?’ 을, 아닌 경우 ‘WINNER WINNER CHICKEN DINNER!’ 를 출력한다.
구조화
걸린 시간: 20분
직선인지 아닌지 유무 체크
- 가로 직선(x가 다 같으면 됨)
- 세로 직선(y가 다 같으면 됨)
- 대각선(기울기가 같으면 됨)
가로, 세로 직선을 위해 수마다 카운트하는 cntX, cntY배열을 만듦
소스 코드
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
int[] cntX = new int[1001];
int[] cntY = new int[1001];
int[][] map = new int[3][2];
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
for (int i = 0; i < 3; i++) {
st = new StringTokenizer(br.readLine());
int x = Integer.parseInt(st.nextToken());
int y = Integer.parseInt(st.nextToken());
cntX[x]++;
cntY[y]++;
map[i][0] = x;
map[i][1] = y;
}
if (cntX[map[0][0]] >= 3) {
System.out.println("WHERE IS MY CHICKEN?");
}
else if (cntY[map[0][1]] >= 3) {
System.out.println("WHERE IS MY CHICKEN?");
}
// 기울기가 같은지 확인
else {
double m1 = (double) (map[1][1] - map[0][1])/(map[1][0]-map[0][0]);
double m2 = (double) (map[2][1] - map[1][1])/(map[2][0]-map[1][0]);
if (m1 == m2) System.out.println("WHERE IS MY CHICKEN?");
else System.out.println("WINNER WINNER CHICKEN DINNER!");
}
}
}
'Algorithm > 백준' 카테고리의 다른 글
[백준] 1236 성 지키기 🏰 (Java) (1) | 2024.11.24 |
---|---|
[백준] 13305 주유소 🚗 (Java) (0) | 2024.11.22 |
[백준] 10093 숫자 🔢 (Java) (1) | 2024.11.20 |
[백준] 10282 해킹 💻 (Java) (1) | 2024.11.19 |
[백준] 1197 최소 스패닝 트리 🎄 (Java) (1) | 2024.11.19 |