주의사항
- JAVA를 사용하여 프로그램을 사용하였습니다.
- 백준에서 코드를 작성하였을 때 아래 형태에서 Main에서 결과가 출력되어야 합니다.
public class Main{
public static void main(String[] args){
}
}
문제 설명
![](https://blog.kakaocdn.net/dn/0AFRc/btrB6RzMdmS/DgeBT1cMgWS43b6sboHiN1/img.png)
![](https://blog.kakaocdn.net/dn/b0mvcB/btrB6udLogB/jJh2L9STKT90LkL4Zwcr3K/img.png)
접근 방법
이 문제에 핵심은
1. N개의 성냥을 W×H크기의 박스에 담아야 한다.
2. 성냥을 박스에 넣을 때는 밑면에 닿아야 한다.
3. 박스 안에 들어갈 수 있으면 DA, 들어갈 수 없으면 NE를 출력한다.
박스에서 가장 길게 성냥을 놓을 수 있는 방법은
아래 그림처럼 대각선으로 놓았을 때입니다.
결과적으로 입력되는 성냥의 길이들이 대각선의 길이보다 작으면 넣을 수 있는 성냥입니다.
대각선 길이보다 크면 넣을 수 없는 성냥입니다.
대각선을 구하는 방법은 피타고라스 법칙을 사용하여 구하면 됩니다.
문제를 해결한 알고리즘의 과정입니다.
1. W와 H을 받아서 대각선의 길이를 구합니다.
2. N개의 성냥의 길이와 대각선의 길이를 비교합니다.
3. 성냥의 길이가 대각선의 길이보다 작거나 같을 경우 DA를 출력합니다.
4. 성냥의 길이가 대각선의 길이보다 클 경우 NE를 출력합니다.
- BufferedReader를 사용하여 입력 값을 받았습니다.
- StringTokenizer을 통해서 N, W, H를 분리하였습니다.
- 피타고라스 법칙을 이용하여 대각선의 길이를 구합니다.
- N개의 입력되는 성냥의 길이와 대각선의 길이를 비교합니다.
- 성냥의 길이가 크면 NE, 작거나 같으면 DA를 BufferedWrtier에 저장합니다.
- BufferedWriter에 저장된 결과값을 출력하였습니다.
import java.util.*;
import java.io.*;
public class Main{
static int N,W,H;
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
//입력값 처리하는 BufferedReader
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
//결과값 출력하는 BufferedWriter
StringTokenizer st = new StringTokenizer(br.readLine()," ");
//입력값 저장
N = Integer.parseInt(st.nextToken());
W = Integer.parseInt(st.nextToken());
H = Integer.parseInt(st.nextToken());
//피타고라스 법칙을 이용한 대각선 길이 구하기
int maxlength = (int)Math.sqrt(Math.pow(W, 2) + Math.pow(H, 2));
for(int i=0;i<N;i++) { //N개 성냥과 대각선 길이 비교하기
st = new StringTokenizer(br.readLine()," ");
int matcheLength = Integer.parseInt(st.nextToken());
if(matcheLength <= maxlength) //성냥의 길이가 작거나 같은 경우
bw.write("DA\n");
else
bw.write("NE\n"); //성냥의 길이가 클 경우
}
bw.flush(); //결과 출력
bw.close();
br.close();
}
}
'백준' 카테고리의 다른 글
[백준] 단계별로 풀어보기(단계:13, 기하1,JAVA)2477번, 참외밭 (0) | 2022.05.16 |
---|---|
[백준] code.plus(시뮬레이션과 구현,JAVA)15662번, 톱니바퀴 (2) (0) | 2022.05.15 |
[백준] 단계별로 풀어보기(단계:12, 집합과 맵,JAVA)11478번, 서로 다른 부분 문자열의 개수 (0) | 2022.05.14 |
[백준] code.plus(시뮬레이션과 구현,JAVA)14890번, 경사로 (0) | 2022.05.14 |
[백준] 단계별로 풀어보기(단계:12, 집합과 맵,JAVA)1620번, 나는야 포켓몬 마스터 이다솜 (0) | 2022.05.10 |
댓글