[백준 - 2869] 달팽이는 올라가고 싶다.

2020. 9. 3. 21:27·🖥️ 컴퓨터공학 🖥️/알고리즘
반응형

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)

출력

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

예제 입력 1 복사

2 1 5

예제 출력 1 복사

4

 

 

사고의 흐름

 

1. 아무 조건 없이 위의 문제를 풀면 어렵지 않지만 시간이 0.15초라는 점이 이 문제의 특징이다. 처음에는 while문을 이용하여 문제를 풀었지만 시간초과가 발생하여 문제를 풀 수 없었다. 다른 방법을 사용해야 한다. 

 

 

2. 몇 일이 걸리는지를 수학적으로 구현을 해야 한다고 한다. 매일 A-B만큼 올라가기 때문에 V-A만큼 올라가는데 걸리는 기간은 (V-A)/(A-B)이다. 이때 (V-A)/(A-B)가 0으로 딱 나누어 떨어지면 상관이 없지만 나머지가 존재하면 나머지만큼 그 다음날 올라가야 한다. 따라서 이런 경우에는 1을 더한다. 이 부분을 else문을 통해 표현한다. 

 

 

 

소스코드 및 실행결과

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include<iostream>
using namespace std;
 
int main() {
    int a, b, v;
    cin >> a >> b >> v;
    int day;
 
    if ((v - a) % (a - b) == 0) {
        day = (v - a) / (a - b);
    }
    else 
        day = (v - a) / (a - b)+1;
 
    cout << day+1 << endl;
}
cs

 

 

 

오답 원인 분석

 

▶ while문만을 사용할 줄 알았다. 이 문제의 핵심인 걸리는 기간을 수학적으로 표현하는 것을 잡아내지 못해 틀렸다. 

728x90
반응형

'🖥️ 컴퓨터공학 🖥️ > 알고리즘' 카테고리의 다른 글

[백준 - 1011] fly me to the alpha centauri  (0) 2020.09.05
[백준 - 2775] 부녀회장이 될테야  (0) 2020.09.04
[백준 -10809번] 알파벳 찾기 (feat. strlen( ), 아스키 코드)  (0) 2020.08.02
[백준 - 8958] OX퀴즈  (0) 2020.08.01
[백준 - 2562] 최댓값  (0) 2020.07.31
'🖥️ 컴퓨터공학 🖥️/알고리즘' 카테고리의 다른 글
  • [백준 - 1011] fly me to the alpha centauri
  • [백준 - 2775] 부녀회장이 될테야
  • [백준 -10809번] 알파벳 찾기 (feat. strlen( ), 아스키 코드)
  • [백준 - 8958] OX퀴즈
공대생 배기웅
공대생 배기웅
군노답 미필 공대생 배기웅의 대학생활을 갈아 넣은 블로그
    반응형
  • 공대생 배기웅
    글쓰는공대생의 IT블로그
    공대생 배기웅
  • 전체
    오늘
    어제
    • 분류 전체보기 (166)
      • 🖊️ 공대생 글쓰기 🖊️ (17)
        • 공대생 회고록 (4)
        • 공대생의 끄적끄적 (4)
        • 슬기로운 공대생활 (9)
        • 무한도전 대학원생 (0)
      • 📈 산업공학 📈 (14)
        • 금융, 파생상품 (13)
        • 통계 (0)
        • 선형대수 (0)
        • 보험, 리스크관리 (0)
        • 재무회계 (1)
      • 🖥️ 컴퓨터공학 🖥️ (92)
        • 머신러닝, 딥러닝 (12)
        • 텐서플로우, 케라스 (1)
        • 알고리즘 (24)
        • 웹 (5)
        • Python (3)
        • C | C++ (23)
        • Java (15)
        • 코드 에러 모음집 (9)
      • 😙 취미, 교양 😙 (2)
        • 영어공부 (1)
        • 일본어회화 공부 (1)
      • 🔍 정보 공유 🔍 (38)
        • 대학생 외부활동 정보 (2)
        • 개발자관련 정보 (3)
        • 대입 논술 입시자료 정보 (22)
        • 프로그램 세팅 (11)
  • 블로그 메뉴

    • 홈
    • 방명록
  • 링크

  • 공지사항

    • [공지] 글쓰는 공대생입니다 😃
  • 인기 글

  • 태그

    데이터베이스
    예외
    이클립스
    acmicpc
    OOP
    C++
    Operator
    프로그래머스
    조작자
    재귀함수
    알고리즘
    객체지향
    자바
    프랜드함수
    무작위 변수
    Java
    경제성공학
    equals프레임워크
    스캐너
    백준
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
공대생 배기웅
[백준 - 2869] 달팽이는 올라가고 싶다.
상단으로

티스토리툴바