[Problem Solving/Java] 백준 2869번 - 달팽이는 올라가고 싶다

2024. 1. 2. 15:54·알고리즘 문제 풀이 (Problem Solving)

https://www.acmicpc.net/problem/2869

 

2869번: 달팽이는 올라가고 싶다

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

www.acmicpc.net

문제

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

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

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

입력

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

출력

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

첫 번째 시도

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String[] a = br.readLine().split(" ");
        int up = Integer.parseInt(a[0]);
        int down = Integer.parseInt(a[1]);
        int h = Integer.parseInt(a[2]);
        if (h == up) {
            System.out.println(1);
        } else if ((h - up) / (up - down) == 0) {
            System.out.println((h - up) / (up - down) + 2);
        } else if ((h - up) % (up - down) < up) {
            System.out.println((h - up) / (up - down) + 1);
        } else if ((h - up) % (up - down) > up) {
            System.out.println((h - up) / (up - down) + 2);
        }
    }
}

 

위의 코드를 실행했을 때 시간초과 발생

두 번째 시도

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String[] a = br.readLine().split(" ");
        int up = Integer.parseInt(a[0]);
        int down = Integer.parseInt(a[1]);
        int h = Integer.parseInt(a[2]);
        int result = (h - down) / (up - down);
        if ((h - down) % (up - down) != 0) {
            result += 1;
            System.out.println(result);
        } else
            System.out.println(result);
    }
}

해결 방법

처음엔 for문으로 문제를 풀었는데, 시간초과로 틀렸다. 문제에서 요구하는 것은 for문을 쓰지 않고 계산인 것 같다. 코드를 수정해서 조건문에 접근할 때 (h-up)/(up-down) h:높이,up:올라가는 높이,down:내려가는 높이로 접근했는데, 참고한 코드를 보면 (h-down)/(up-down)로 접근한 것을 볼 수 있다. (h-down)/(up-down)의 연산 결과에 나머지가 0이면 그냥 값을 출력하고, 아니라면 1을 더해서 출력했다. 

반응형

'알고리즘 문제 풀이 (Problem Solving)' 카테고리의 다른 글

[Problem Solving/Java] 백준 2839번 - 설탕 배달  (2) 2024.01.05
[Problem Solving/Java] 백준 2775번 - 부녀회장이 될테야  (0) 2024.01.05
[Problem Solving/Java] 백준 1193번 - 분수찾기  (0) 2024.01.02
[Problem Solving/Java] 백준 2292번 - 벌집  (1) 2024.01.02
[Problem Solving/Java] 백준 1002번 - 터렛  (1) 2024.01.02
'알고리즘 문제 풀이 (Problem Solving)' 카테고리의 다른 글
  • [Problem Solving/Java] 백준 2839번 - 설탕 배달
  • [Problem Solving/Java] 백준 2775번 - 부녀회장이 될테야
  • [Problem Solving/Java] 백준 1193번 - 분수찾기
  • [Problem Solving/Java] 백준 2292번 - 벌집
LoopThinker
LoopThinker
모르는 것을 알아가고, 아는 것을 더 깊게 파고드는 공간
  • LoopThinker
    CodeMemoir
    LoopThinker
  • 전체
    오늘
    어제
    • 분류 전체보기 (192)
      • 개발 (Development) (128)
        • Algorithm (1)
        • Angular (1)
        • AWS (4)
        • DeepSeek (2)
        • Docker (6)
        • Git (3)
        • Java (23)
        • JavaScript (4)
        • Kafka (4)
        • Kubernetes (4)
        • Linux (6)
        • PostgreSQL (33)
        • Python (19)
        • React (3)
        • TypeScript (3)
        • Vue.js (5)
        • General (7)
      • 데이터 분석 (Data Analysis) (1)
      • 알고리즘 문제 풀이 (Problem Solving.. (27)
      • 자격증 (Certifications) (24)
        • ADsP (14)
        • 정보처리기사 (4)
        • Linux Master (5)
        • SQLD (1)
      • 기술 동향 (Tech Trends) (10)
      • 기타 (Others) (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Vue
    리눅스 마스터 2급 2차
    PostgreSQL
    JSON
    Linux
    Kubernetes
    백준알고리즘
    리눅스 마스터
    Kafka
    백준자바
    pandas
    백준
    AWS
    데이터분석
    Linux master
    typescript
    deepseek
    자바
    백준온라인저지
    ADsP
    리눅스 마스터 2급
    Vue.js
    javascript
    DevOps
    python
    MyBatis
    오답노트
    docker
    springboot
    java
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
LoopThinker
[Problem Solving/Java] 백준 2869번 - 달팽이는 올라가고 싶다
상단으로

티스토리툴바