SseopE
SseopE
SseopE
전체 방문자
오늘
어제
  • 분류 전체보기 (44)
    • Programming (3)
      • JAVA (3)
    • Spring (7)
      • 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 (5)
      • Spring 공부 (0)
    • Infra (6)
      • Docker (3)
      • Kubernetes (3)
      • Kafka (0)
    • Machine Learning (2)
      • Scikit-Learn (1)
      • MLOps (1)
      • BentoML (0)
      • Kubeflow (0)
    • OS (2)
      • Linux (2)
    • Algorithm (23)
      • Sorting (7)
      • BOJ (15)
      • Programmers (0)
      • Data Structure (1)
    • 특강 (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • Spring
  • Kubernetes
  • container
  • 1931번
  • resource
  • boj
  • TransformMixin
  • 백준
  • Spring boot
  • 2981번
  • 스웜 모드
  • 1541번
  • 도커
  • java
  • BaseEstimator
  • scikit learn
  • 2275번
  • 자바
  • docker
  • 2580번

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
SseopE

SseopE

[BOJ] 2869번 : 달팽이는 올라가고 싶다 (JAVA/자바)
Algorithm/BOJ

[BOJ] 2869번 : 달팽이는 올라가고 싶다 (JAVA/자바)

2022. 3. 10. 20:46

문제


알고리즘 고민

이 문제는 아래의 문제와 비슷한 느낌이었다.

2022.03.10 - [Algorithm/BOJ] - [BOJ] 1712번 : 손익분기점 (JAVA/자바)

 

[BOJ] 1712번 : 손익분기점 (JAVA/자바)

문제 알고리즘 A는 고정적인 비용, B는 가변 비용, C는 가변 이득이라 생각하고 풀이를 시작했다. B가 C 보다 크거나 같다면 제작할수록 비용이 더욱 들기때문에 불가능하므로 -1을 출력하도록 하

shinscode.tistory.com

차이점으로는 B < A 라는 조건이 주어졌기 때문에 도달하지 못하는 경우는 없었다. 또, 손익분기점은 이득이 발생해야하기 때문에 1부터 본문의 문제는 정확히 도착만하면 되기때문에 0 이어도 상관이 없다. 또, 구매와 판매처럼 동시에 이루어지는것이 아닌 올라갔다가 그날 밤에 떨어지기 때문에 경계값인 마지막날을 위한 추가적인 처리가 필요했다.

 

달팽이는 하루에 A-B 만큼의 높이만큼 올라가는데 마지막 날에는 A 미터의 높이를 올라가면서 끝나게 된다.

따라서, 높이인 V 에서 A 를 빼면 A-B만큼씩 올라갈때 도달하면 다음날 도착을 보장할 수 있는 높이를 찾을 수 있다.

 

V-A 를 구하고 A-B 로 나누어 주면 몇일이 걸리는지 확인할 수 있는데 이때 정확히 값이 안나누어 떨어질때는 남은 높이가 있다는 뜻이기에 하루를 더 더해줘야한다. 

위의 방식을 이용해 걸리는 시간을 구하고 마지막으로 A 미터만큼 올라갈때 걸리는 1일을 더해주게 되면 끝이난다.


JAVA Code

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

public class Ex04_r {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine(), " ");

        int A = Integer.parseInt(st.nextToken());
        int B = Integer.parseInt(st.nextToken());
        int V = Integer.parseInt(st.nextToken());

        int move = A - B, height = (V - A);
        int day = height % move == 0 ? height / move : height / move + 1;
        System.out.println(day + 1);
    }
}

'Algorithm > BOJ' 카테고리의 다른 글

[BOJ] 2775번 : 부녀회장이 될테야 (JAVA/자바)  (0) 2022.03.11
[BOJ] 10250번 : ACM 호텔 (JAVA/자바)  (0) 2022.03.10
[BOJ] 1193번 : 분수찾기 (JAVA/자바)  (0) 2022.03.10
[BOJ] 2292번 : 벌집 (JAVA/자바)  (0) 2022.03.10
[BOJ] 1712번 : 손익분기점 (JAVA/자바)  (0) 2022.03.10
    'Algorithm/BOJ' 카테고리의 다른 글
    • [BOJ] 2775번 : 부녀회장이 될테야 (JAVA/자바)
    • [BOJ] 10250번 : ACM 호텔 (JAVA/자바)
    • [BOJ] 1193번 : 분수찾기 (JAVA/자바)
    • [BOJ] 2292번 : 벌집 (JAVA/자바)
    SseopE
    SseopE

    티스토리툴바