본문 바로가기
study/CodingTest

백준 2869 달팽이는 올라가고 싶다(Java)

by 고기만두(개발자) 2021. 11. 28. 20:31
728x90
반응형

2869

일단 시간 제한이 상당히 빡세서 스캐너는 탈락

 

언뜻 보기에는 굉장히 쉬운 문제처럼 보였다.

(올라간 길이 - 내려간 길이) * 일수 >= 총 막대길이

로 생각해서 부등식 풀면 되지 않을까? 이거 중학생도 풀겠네 라고 생각하고

코드짜기전에 예제 1 케이스를 대입해봤는데 바로 안 맞는다.

 

올라간 길이 = 2

내려간 길이 = 1

총 길이 = 5

라서 일수 = 5 / (2-1)  = 5 겠네 라고 생각했는데 웬걸 예제 답에 4라고 떡하니 적혀있네?

 

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

라는 전제조건 때문이다.

 

1일차: 2 up 1 down = 최종위치 1

2일차: 2 up 1 down = 최종위치 2

3일차: 2 up 1 down = 최종위치 3

4일차: 2 up => 여기서 이미 5가 되어 버리고, 여기서 멈춘다.

 

그렇다면 하루에 내려가는 길이를 고려하지 않기 위해

일수 = (총길이 - 내려간 길이) / (올라간 길이 - 내려간 길이)로 수식을 세우면 어떻게 될까?

(5-1) /(2-1) = 4 로 맞는데, 이게 2-1 이 1이라서 그냥 우연히 맞은건 아닐까?

 

예제 2로 케이스 하나 더 검증해보자.

 

올라간 길이 = 5

내려간 길이 = 1

총 길이 = 6

 

1일차: 5 up 1 down = 최종위치 4

2일차: 5 up ...? => 이미 올라가다 끝 6까지 다 갔네?

 

(6-1) / (5-1) = 5/4 = 1.25.. 니까

나눴을 때 딱 떨어지지 않으면 하루를 더해주면 되겠다.

 

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 st = new StringTokenizer(br.readLine()," ");
        
        int a = Integer.parseInt(st.nextToken());    //낮에 올라가는
        int b = Integer.parseInt(st.nextToken());    //밤에 미끄러지는
        int v = Integer.parseInt(st.nextToken());    //총 높이
        
        int day = 0;
        
        day = (v-b) / (a-b);
        
        //0으로 나누어 떨어지지 않는 경우 - 미끄러지고 남은 높이가 낮에 올라가는 높이보다 적을때
        if((v-b) % (a-b) != 0){    
            day ++;
        }
        
        System.out.println(day);
        
    }
}

 

어려운 로직은 없지만, 다 올라가면 바로 멈추는 부분 고려하기가 조금 까다로웠다.


아, 오늘부터 올라가는 글은 

https://github.com/gogimandu1019/baekjoonAlgo/

 

GitHub - gogimandu1019/baekjoonAlgo: 백준 알고리즘 문제풀이 공유

백준 알고리즘 문제풀이 공유. Contribute to gogimandu1019/baekjoonAlgo development by creating an account on GitHub.

github.com

깃허브 알고리즘 폴더를 만들어 거기에도 함께 커밋하려 한다.

깃허브 계정이 있기는 했지만 잘 가꿔진 잔디밭이 없어서 아쉬웠던 적이 최근에 있어서

이전에 올린 풀이들도 간간이 커밋을 해둘 예정이다.

블로그도 내 삶에서의 어떤 아쉬움들을 모아 만들어가고 있는 공간이기도 하다.

여전히 버벅거리는 부분도 있지만,, 아무튼,,

728x90
반응형

댓글