일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- c
- SWEA
- SECS-II
- 회귀
- python
- MYSQL
- modern c++
- SECS/GEM
- 파이썬
- spring boot
- Spotify Api
- java
- Computer Science
- SW Expert Academy
- programmers
- SECS
- 스포티파이
- 프로그래머스
- 백준
- Gem
- linux
- 자바
- Spring
- Spring JPA
- C++
- spotify
- CS
- regression
- 회원가입
- Baekjoon
- Today
- Total
비버놀로지
[SWEA SW Expert Academy] 6019. 기차 사이의 파리 (JAVA) 본문
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWajaTmaZw4DFAWM
궁금증이 많은 한 소녀는 존 폰 노이만(John von Neumann)에게 다음과 같은 문제를 질문했다.
“두 기차 A, B가 서로를 향해 달리고 있다. 두 기차의 전면부는 250마일 떨어져 있고 기차 A는 시속 10마일, B는 시속 15마일로
달리고 있다.
파리가 기차 A의 전면부에서 기차 B로 시속 20마일의 속력으로 날아간다. 파리가 기차 B의 전면부에 닿으면 바로 방향을 바꿔
기차 A를 향해 같은 속력으로 날아간다.
그러다 기차 A와 B가 충돌하면 파리는 죽을 것이다. 파리는 죽기 전 까지 몇 마일의 거리를 이동했을까?”
폰 노이만은 소녀의 질문에 대해 즉시 무한 급수를 이용해 답이 200마일이라는 것을 계산해냈다.
소녀가 질문한 문제의 조금 더 일반화된 버전을 해결해보자.
[입력]
첫 번째 줄에 테스트 케이스의 수 T가 주어진다.
각 테스트 케이스의 첫 번째 줄에는 네 정수 D, A, B, F (1 ≤ D ≤ 103, 1 ≤ A ≤ B < F ≤ 102) 가 주어진다.
D는 두 기차 전면부 사이의 거리, A는 기차 A의 속력, B는 기차 B의 속력, F는 파리의 속력이다.
[출력]
각 테스트 케이스마다 ‘#t’(t는 테스트케이스 번호를 의미하며 1부터 시작한다)를 출력하고 한 칸을 띄운 후,
각 테스트 케이스마다 파리가 이동한 거리를 출력한다. 정답과의 절대오차나 상대오차가 10-6 이하이면 정답으로 인정한다.
이 문제를 푸는 방식으로 거리, 속력, 시간을 활용을 해서 문제를 해결했습니다.
두 기차 A와 B가 충돌하는 시간을 구해서 파리가 그 시간동안 일정한 속도로 비행을 하기 때문에 시간과 속력을 곱해서 답을 도출하게 됩니다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Solution {
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 t = 1; t <= T; t++) {
st=new StringTokenizer(br.readLine()," ");
int D =Integer.parseInt(st.nextToken());
double A =Double.parseDouble(st.nextToken());
double B =Double.parseDouble(st.nextToken());
double F =Double.parseDouble(st.nextToken());
double mok=D/(A+B);
double result=mok*F;
System.out.println("#"+t+" "+result);
}
}
}
'ALGORITM > JAVA' 카테고리의 다른 글
[Programmers 프로그래머스] 83201 상호평가 (JAVA) (0) | 2021.09.08 |
---|---|
[Programmers 프로그래머스] 82612 부족한 금액 계산하기 (JAVA) (0) | 2021.09.06 |
[SWEA SW Expert Academy] 1953. [모의 SW 역량테스트] 탈주범 검거 (JAVA) (0) | 2021.07.23 |
[SWEA SW Expert Academy] 1952. [모의 SW 역량테스트] 수영장 (JAVA) (0) | 2021.07.23 |
[SWEA SW Expert Academy] 1949. [모의 SW 역량테스트] 등산로 조성 (JAVA) (0) | 2021.07.23 |