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

2021. 7. 14. 00:53·Algorithm/백준
반응형

문제

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

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

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

시간제한 : 0.15 초 (추가 시간 없음) 

입력

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

출력

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

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main() {
	int a, b, v, day;


	scanf("%d %d %d", &a, &b, &v);

	if ((v-a) % (a-b) == 0) 
	{
		day = (v - a) / (a - b) + 1;
	}
	else {
		day = (v - a) / (a - b) + 2;
	}
	
	printf("%d", day);
}

 

 

문제풀이

처음에 조건문을 한 번 써서 풀이를 했으나, 시간초과로 fail했습니다.

문제는 0.15초 시간 제한을 얘기하고 있고, 이는 `상수시간 O(1)` 로 제한을 두라는 것이었습니다.

따라서 조건문을 포기해야했고, 출력할 DAY를 방정식으로만 나타내어야 했습니다.

 

정상에 도착하는 마지막 날은 내려오지 않고, 올라가는 A만 고려하면 되기때문에 (V - A)를 올라갈 거리로 잡고, DAY에 1을 더해줬습니다. (마지막 날을 미리 1로 빼둔 것)

이제 (V - A) 에서 하루마다 올라가게 되는 (A - B)를 나눠주고 아까 1을 더해주면 DAY가 되겠습니다.

  • 나머지가 0일 때        : `(V - A) / (A - B) + 1`
  • 나머지가 0이 아닐 때: `(V - A) / (A - B) + 2`

나머지가 0이 아닐 때는 나머지만큼 올라가기 위해 하루를 더해줘야 하기 때문입니다.

 

 

비고

수학적 센스가 요구되는 문제였습니다. 그리디하다고 볼 수 있습니다.

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

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

[백준][c] 2775번: 부녀회장이 될테야  (0) 2021.07.15
[백준][c] 10250번: ACM 호텔  (0) 2021.07.15
[백준][C/C++] 1193번: 분수찾기  (0) 2021.07.13
[백준][c] 2292번: 벌집  (0) 2021.07.13
[백준][C/C++] 1712번: 손익분기점  (0) 2021.07.13
'Algorithm/백준' 카테고리의 다른 글
  • [백준][c] 2775번: 부녀회장이 될테야
  • [백준][c] 10250번: ACM 호텔
  • [백준][C/C++] 1193번: 분수찾기
  • [백준][c] 2292번: 벌집
Giken
Giken
𝐒𝐲𝐬𝐭𝐞𝐦.𝐨𝐮𝐭.𝐩𝐫𝐢𝐧𝐭𝐥𝐧("𝐇𝐞𝐥𝐥𝐨 𝐖𝐨𝐫𝐥𝐝!");
  • Giken
    개발자 기켄
    Giken
  • 전체
    오늘
    어제
    • 분류 전체보기 (148)
      • Programming Language (26)
        • C (3)
        • C++ (2)
        • Java (19)
      • Web (4)
      • Database (1)
        • SQL (5)
      • Spring (10)
      • PHP (7)
      • Linux (1)
      • Server (1)
      • Infra (3)
      • Algorithm (74)
        • 백준 (71)
        • 프로그래머스 (0)
      • 프로젝트 (2)
      • Etc (8)
      • 낙서 (5)
  • 블로그 메뉴

    • GitHub
  • 링크

    • GitHub
  • 공지사항

  • 인기 글

  • 태그

    1330
    평년
    SQL
    2588
    DB
    C
    프로그래머스
    9498
    2753
    SQL고득점키트
    윤년
    백준
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Giken
[백준][C/C++] 2869번: 달팽이는 올라가고 싶다
상단으로

티스토리툴바