Chef.Yeon
Code Cook
Chef.Yeon
전체 방문자
오늘
어제
  • 분류 전체보기 (230)
    • 게임 개발 (1)
      • Unity (1)
    • Android (27)
      • Kotlin (19)
      • 우아한테크코스 5기 (4)
    • Language (11)
      • 파이썬 (3)
      • Java (7)
    • DB (2)
      • SQL (16)
    • Spring (25)
    • 코딩테스트 (56)
    • Git (1)
    • TIL (85)
    • DevOps (6)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 문자열
  • Wil
  • java
  • 레포지토리
  • enum
  • 코딩테스트
  • 프로그래머스
  • webflux
  • kibana
  • 코틀린
  • til
  • kotlin
  • 프리코스
  • 우아한테크코스
  • Docker
  • elasticsearch
  • spring
  • 파이썬
  • grafana
  • 다이나믹 프로그래밍
  • 안드로이드
  • 내림차순
  • Android
  • rsocket
  • 백준
  • SQL
  • ec2
  • 에라토스테네스의 체
  • MariaDB
  • 코틀린 인 액션

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Chef.Yeon

Code Cook

코딩테스트

[백준/Java] 달팽이는 올라가고 싶다

2023. 3. 7. 00:15
728x90

문제

땅 위에 달팽이가 있다. 이 달팽이는 높이가 V미터인 나무 막대를 올라갈 것이다.

달팽이는 낮에 A미터 올라갈 수 있다. 하지만, 밤에 잠을 자는 동안 B미터 미끄러진다. 또, 정상에 올라간 후에는 미끄러지지 않는다.

달팽이가 나무 막대를 모두 올라가려면, 며칠이 걸리는지 구하는 프로그램을 작성하시오.


입력

첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000)


출력

첫째 줄에 달팽이가 나무 막대를 모두 올라가는데 며칠이 걸리는지 출력한다.


내 풀이

하루 동안 올라갈 수 있는 높이는 a - b 즉, (낮 동안 오르는 길이 - 밤 동안 내려오는 길이)

나무 막대의 길이가 v 일때, v 를 a - b 로 나눈 몫과 나머지로 계산하면 되지 않을까 싶지만, 문제에는 중요한 포인트가 있습니다.

 

'정상에 올라간 후에는 미끄러지지 않는다'

달팽이가 낮 동안에 정상에 오르게 되면 밤에 미끄러지는 것을 고려하지 않습니다.

만약 v를 그대로 사용한다면, a = 2, b = 1, v = 5 일 때, 5일이 소요됩니다. 정상에 도달했음에도 미끄러지기 때문이죠.

때문에 v = v - b 를 통해 낮을 기준으로 계산해주어야 합니다.

이후, v % dayHeight != 0 즉, 남은 길이가 있으면 하루가 더 필요하기 때문에 day를 +1 해줍니다.

import java.io.*;
import java.util.*;

public class Main {

    public static void main(String[] args) throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer tk = new StringTokenizer(br.readLine());
        int a = Integer.parseInt(tk.nextToken());
        int b = Integer.parseInt(tk.nextToken());
        int v = Integer.parseInt(tk.nextToken());
        int dayHeight = a - b;
        int day = 0;
        
        v -= b;
        day = v / dayHeight;

        if (v % dayHeight != 0) {
            day++;
        }
        System.out.println(day);
    }
}
728x90

'코딩테스트' 카테고리의 다른 글

[백준/Java] 소수 구하기  (0) 2023.03.07
[백준/Java] ACM 호텔  (0) 2023.03.07
[백준/Java] 베르트랑 공준  (0) 2023.03.06
[백준/Java] 설탕 배달  (0) 2023.03.06
[백준/Kotlin] 11286번 - 절대값 힙  (0) 2023.01.22
    '코딩테스트' 카테고리의 다른 글
    • [백준/Java] 소수 구하기
    • [백준/Java] ACM 호텔
    • [백준/Java] 베르트랑 공준
    • [백준/Java] 설탕 배달
    Chef.Yeon
    Chef.Yeon
    보기 좋고 깔끔한 코드를 요리하기 위해 노력하고 있습니다.

    티스토리툴바