[백준|C++] 2869: 달팽이는 올라가고 싶다

2021. 9. 2. 04:21·Problem Solving/백준
반응형
문제

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

 

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

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

www.acmicpc.net

 

코드
#include<iostream>
using namespace std;

int main() {
	int A;	//올라가는 높이
	int B;	//내려가는 높이
	int V;	//막대기 높이
	int day = 0;

	cin >> A >> B >> V;
	if ((V - A) % (A - B) == 0)
		day = (V - A) / (A - B);
	else
		day = (V - A) / (A - B) + 1;
	cout << ++day;

	return 0;
}

 

코드 설명

주의점

시간제한 있음. 반복문 사용 불가.

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

 

(V - A) / (A - B)

V - A

전체 높이에서 올라간 높이를 뺀 값.

 

A - B

올라간 높이 - 내려간 높이. 즉, 하루에 올라간 높이

 

(V - A) / (A - B)

달팽이가 V - A까지 오르는 데 걸리는 날짜. 해당 값이 나누어 떨어진다면, 달팽이는 하루 뒤에 A만큼 올라 꼭대기에 도달한다.

 

if ((V - A) % (A - B) == 0)
	day = (V - A) / (A - B);

(V - A) / (A - B)이 나누어 떨어진다면, 달팽이는 현재 V - A 위치에 있다는 뜻. 달팽이는 하루 뒤 낮에 A만큼 올라 꼭대기에 도달한다.

 

cout << ++day;

다음 날, 꼭대기에 도달 (다음 날이므로 하루 더해줌)

 

else
	day = (V - A) / (A - B) + 1;

(V - A) / (A - B)이 나누어 떨어지지 않는다면, 달팽이는 현재 V - A 위치보다 아래에 있다. 따라서 하루 뒤에 +A 더 올라도 정상에 도달하지 못함. 따라서 하루 더 등락을 반복한다는 의미로 +1을 더해준다.

 

cout << ++day;

이튿 날 꼭대기에 도달

 

 

 

마무리

진짜 어렵다. 
처음에 V / (A - B) 에 엄청 매달리다가 도저히 안 풀려서 구글신을 영접하니 나머지 연산과 (V - A) / (A - B) 공식을 알려준다... 이런 문제를 참고자료 없이 자기 머리에서 바로 꺼내 푸는 사람들 정말 존경스럽다. 
어쨌든 옳다쿠나 하고 혼자 문제 풀어보았다. 근데 혼자 하니까 또 안 풀린다^^ 그러다 어찌어찌 정답은 맞췄는데 이제는 코드가 이해가 안 가고...ㅋㅋ 그러던 중 이 블로그 만나고 광명을 찾았다.

https://sedangdang.tistory.com/7

 

[C] 백준 | 2869번 코드 - *달팽이는 올라가고 싶다

>문제 땅 위에 달팽이가 있다. 이 달팽이는 높이가 V미터인 나무 막대를 올라갈 것이다. 달팽이는 낮에 A미터 올라갈 수 있다. 하지만, 밤에 잠을 자는 동안 B미터 미끄러진다. 또, 정상에 올라간

sedangdang.tistory.com

설명이 매우 깔끔하다.

 

반응형
저작자표시 비영리 변경금지 (새창열림)

'Problem Solving > 백준' 카테고리의 다른 글

[백준|파이썬] 2606: 바이러스 (실버3)  (0) 2023.04.05
[백준|파이썬] 1260: DFS와 BFS (실버2)  (0) 2023.04.05
[백준|C++] 2750: 수 정렬하기  (0) 2021.09.10
[백준|C++] 10250: ACM 호텔  (1) 2021.09.01
[백준|C++] 2292: 벌집  (0) 2021.09.01
[백준|C++] 1712: 손익분기점  (0) 2021.08.31
'Problem Solving/백준' 카테고리의 다른 글
  • [백준|파이썬] 1260: DFS와 BFS (실버2)
  • [백준|C++] 2750: 수 정렬하기
  • [백준|C++] 10250: ACM 호텔
  • [백준|C++] 2292: 벌집
청량리 물냉면
청량리 물냉면
프로그래밍 공부를 하고 있습니다. 공부 내용 정리 겸 정보 공유를 목적으로 합니다.
    반응형
  • 청량리 물냉면
    노력중인 블로그
    청량리 물냉면
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 프로그래밍
        • Programming
        • C | C++
        • Java
        • Python
      • 웹 프로그래밍
        • HTML | CSS
        • JavaScript | TypeScript
        • React
        • Vue.js
        • Next.js
        • Spring & Spring Boot
        • JSP & Servlet
        • DB
      • 웹 프로젝트
        • 웹 프로젝트
        • 🥨스낵몰
        • 👨‍👨‍👧‍👧소셜 가계부
        • 🌜꿈 일기장
        • 🔮포트폴리오 사이트
        • 🏃‍♂️팀 프로젝트: 일정관리 프로그램
        • 📈팀 프로젝트: AI기반 주식 분석 플랫폼
        • 😺Just Meow It: 고양이의 조언
      • 앱 프로그래밍
        • Flutter
        • Kotlin
      • Problem Solving
        • 백준
        • 프로그래머스
        • SWEA
      • Computer Science
        • 알고리즘
        • 컴퓨터 네트워크
        • 이산수학
      • Developer
        • 후기
        • 자료정리
        • 취업 | 취준
        • 웹개발 교육 프로그램
        • TIL
  • 블로그 메뉴

    • 홈
    • Github
  • 공지사항

    • 프로그래밍 공부 중😊
  • 인기 글

  • 태그

    웹사이트
    Next.js
    포트폴리오
    클론 프로젝트
    spring boot
    Til
    자바스크립트
    뉴렉처
    Jiraynor Programming
    알고리즘
    bfs
    구현
    컴퓨터네트워크
    mysql
    플러터
    타입스크립트
    React
    자바
    리액트
    파이썬
    AWS
    프로젝트
    공식문서
    d3
    백준
    프로그래머스
    블로그 제작
    SWEA
    강의내용정리
    ZeroCho
  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
청량리 물냉면
[백준|C++] 2869: 달팽이는 올라가고 싶다
상단으로

티스토리툴바