달마루
기획자에서 개발자로
달마루
전체 방문자
오늘
어제
  • 분류 전체보기 (334)
    • 기획 이야기 (3)
    • 개발자로 전향한 이유 (1)
    • Github Address (1)
    • 개발자, 그 여정 (11)
      • 기초특강 (4)
      • 국비학원 선정 (4)
      • BitCamp_수업내용 (1)
      • 학원 프로젝트 후기 (1)
      • 정보처리기사 (1)
      • 개발 이야기 (0)
    • 개념 창고 (126)
      • JAVA (50)
      • CS (1)
      • Database (27)
      • NetWork (2)
      • 자료 구조 (2)
      • React (8)
      • Spring (3)
      • JPA (1)
      • HTML & CSS (18)
      • JS (3)
    • algorithm (186)
      • 백준 (161)
      • 프로그래머스 (23)
    • 사는 이야기 (0)

블로그 메뉴

  • Github
  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • math
  • select
  • 알고리즘풀이
  • 혼공MySQL
  • SQL고득점Kit
  • 자바
  • BOJ
  • Bronze III
  • 백준
  • Algorithm
  • BRONZE
  • SQL
  • 백준알고리즘
  • programmers
  • Bronze V
  • Scanner
  • MySQL
  • java
  • Bronze IV
  • 문제풀이
  • 혼자공부하는SQL
  • 프로그래머스
  • sql 문제풀이
  • BOJ algorithm
  • 알고리즘
  • java algorithm
  • HTML
  • 혼공SQL
  • react
  • 백준문제풀이

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
달마루

기획자에서 개발자로

[백준] 폰 노이만과 파리 - 14924 Java[자바]
algorithm/백준

[백준] 폰 노이만과 파리 - 14924 Java[자바]

2023. 3. 10. 23:27

[Bronze IV] 폰 노이만과 파리 - 14924

문제 링크

 

14924번: 폰 노이만과 파리

역사상 최고의 천재중 하나인 폰 노이만에게는 다음과 같은 재밌는 일화가 있다. 그의 동료는 어느 날 폰 노이만의 천재성을 시험해보기 위해서 다음과 같은 질문을 던졌다. “200마일 길이의 철

www.acmicpc.net

성능 요약

메모리: 17612 KB, 시간: 208 ms

분류

사칙연산(arithmetic), 수학(math)

문제 설명

역사상 최고의 천재중 하나인 폰 노이만에게는 다음과 같은 재밌는 일화가 있다.

그의 동료는 어느 날 폰 노이만의 천재성을 시험해보기 위해서 다음과 같은 질문을 던졌다.

“200마일 길이의 철로의 양쪽 끝에 서 있는 두 대의 기차가 시속 50마일의 속도로 서로를 향해 출발했습니다. 이때부터 두 기차가 서로 충돌할 때까지 파리가 시속 75마일의 속도로 두 기차사이를 왔다 갔다 했습니다. 파리가 이동한 거리는 모두 몇 마일일까요?”

폰 노이만은 문제를 듣고 1초의 지체도 없이 150마일이라고 답했다. 그의 동료는 크게 실망하며 말했다.

“역시 당신은 똑똑하군요. 보통 사람들은 이 문제를 무한급수를 이용해서 풀려고 하지만 그렇게 하면 매우 긴 시간이 걸리죠. 하지만 간단한 논리를 사용하면 순식간에 파리가 이동한 거리를 구할 수 있습니다. 당신도 그 논리를 이용한 것이죠?”

그러자 폰 노이만은 이렇게 답했다.

“아니요, 무한급수로 풀었는데요?”

이 문제를 무한급수를 통해 푸는 방법은 다음과 같다. 수직선 위에 기차 A, B가 있다고 하자. 파리와 같이 출발하는 기차를 A라 하고, 그 위치를 기준점으로 하면 기차 B는 기준점에서 200마일 만큼 떨어진 지점에 있다. 이때 시간 t에서 파리의 위치는 75t 이고 기차 B의 위치는 200 – 50t 이다. 이를 이용하면 파리와 기차 B가 처음 만나는 위치는 기준점에서 120마일 떨어진 지점임을 알 수 있다. 120마일은 파리의 첫 이동거리 이고 이를 a1이라고 하자. 한편 이때 기차 A는 80마일 떨어진 지점에 위치한다 (기차 A의 속도는 파리의 속도의 2/3 이므로). 그러므로 기차 A와 B의 사이가 40마일로 줄어들었고, 같은 식으로 파리의 두 번째 이동거리 a2는 (1/5)a1임을 알 수 있다. 이와 같이 생각하면, ai+1은 (1/5)ia1이고, 파리의 총 이동거리는 Σ(1/5)ia1 = 150 즉 150마일임을 알 수 있다.

이 문제를 푸는 “간단한 논리”는 다음과 같다. 두 기차는 200/(50*2) = 2 시간 후에 만난다. 파리는 2시간동안 시간당 75마일의 속도로 이동하므로 2*75 = 150 마일을 이동한다.

우리는 위에서 제시한 문제를 풀 수 있는 프로그램을 만들고 싶다. 하지만 우리의 컴퓨터는 안타깝게도 폰 노이만의 두뇌보다 성능이 좋지 못하기 때문에 무한급수를 이용하여 프로그램을 만들 수는 없다. 위에서 말한 “간단한 논리”를 이용하여 기차의 속도 S, 파리의 속도 T, 그리고 처음 두 기차 사이의 거리 D가 주어졌을 때 두 기차가 만날 때까지 파리의 이동거리 F를 계산하는 프로그램을 작성하라.

입력

S T D 
  • 각각 10,000보다 작거나 같은 양의 정수, T>S, D는 2*S의 배수

출력

F



답 :기차의 속도, 파리의 속도, 두 기차 사이의 거리를 입력 받아
기차가 만날 때까지 걸리는 시간을 계산,
파리가 이동한 거리까지 계산하여 출력한다.

import java.util.Scanner;

public class Main {
        public static void main(String [] args) {
                Scanner sc = new Scanner(System.in);

                // 기차의 속도, 파리의 속도, 처음 두 기차 사이의 거리 입력 받기
                int S = sc.nextInt();
                int T = sc.nextInt();
                int D = sc.nextInt();

                // 두 기차가 만날 때까지 걸리는 시간 계산하기
                int time = D / (S * 2);

                // 파리가 이동한 거리 계산하기
                int F = time * T;

                System.out.println(F);
                sc.close();
            }
        }
저작자표시 비영리 변경금지 (새창열림)

'algorithm > 백준' 카테고리의 다른 글

[백준] 앵그리 창영 - 3034 Java[자바]  (0) 2023.03.13
[백준] 연세대학교 - 15680 Java[자바]  (0) 2023.03.11
[백준] 과목 선택 - 11948 Java[자바]  (0) 2023.03.10
[백준] 전자레인지 - 14470 Java[자바]  (0) 2023.03.10
[백준] 13866 - 팀 나누기 Java[자바]  (0) 2023.03.09
    'algorithm/백준' 카테고리의 다른 글
    • [백준] 앵그리 창영 - 3034 Java[자바]
    • [백준] 연세대학교 - 15680 Java[자바]
    • [백준] 과목 선택 - 11948 Java[자바]
    • [백준] 전자레인지 - 14470 Java[자바]
    달마루
    달마루
    항상 어제보다 좋은 코드를 지향합니다. https://github.com/LimDongHyun99

    티스토리툴바