반응형
DoZZang
Do IT
DoZZang
전체 방문자
오늘
어제
  • Programming
    • Git
    • Web
    • 기타
    • Python
      • CodeUp
    • Math
    • Algorithm
    • Baekjoon
    • C,C++
    • Life
      • 독서
      • Just
      • 영화

블로그 메뉴

  • 홈
  • 태그
  • 방명록

인기 글

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
DoZZang

Do IT

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

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

2023. 1. 19. 18:05
반응형

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

 

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

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

www.acmicpc.net

시간제한이 0.15초! 이전의 손익분기점 문제가 떠오르는 조건이다.

비슷하다면 비슷할 수 있는 문제이니 참고할 분이 계시다면

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

 

1712번: 손익분기점

월드전자는 노트북을 제조하고 판매하는 회사이다. 노트북 판매 대수에 상관없이 매년 임대료, 재산세, 보험료, 급여 등 A만원의 고정 비용이 들며, 한 대의 노트북을 생산하는 데에는 재료비와

www.acmicpc.net

즉 반복문을 사용하지 말라는 것.

그렇다면 식을 구성해봐야겠다가 최우선적으로 머리에 스친다.

가장 중요한 조건은 " 정상에 올라간 후에는 미끄러지지 않는다."

조건을 고려하지 않고 식을 세워봤다.(A-B)*x>= V 일 때의 x의 최솟값이 우리가 원하는 값일 것 그렇다면 여기서 조건을 섞어본다면?

(A-B)*(x-1)+A >=V

우리가 원하는 x값을 뽑아오기 위하여 정리해보자.

x >= (V-A)/(A-B) + 1

'/'연산 시에는 항상 고려해줘야 할 것

나눗셈 연산을 수행하기 때문에 소수점이 있었을 수 있다.

우리는 위 부등식을 코드로 구현하기 위해 등식으로 나타낼 것인데

그 과정에서 부등식의 성질이 누락될 수 있다.

예) x >= 1.xx 라면 x는 2여야하는데 코드에서는 소수점을 절삭하고 등식이므로 x == 1이 된다.

따라서 만약 연산결과에 소수점이 있었다면 +1을 해줘야한다.

이 과정을 코드로 나타내면

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void) {
    int A, B, V, x = 0;
    scanf("%d%d%d",&A,&B,&V);

    if ((V - A) % (A - B) == 0) x = (V - A) / (A - B) + 1;
    else x = (V - A) / (A - B) + 2;

    printf("%d", x);

    return 0;
}

반복문으로 쉽게 풀린다고 우당탕탕 반복문을 쓸 게 아니라 식으로 구현할 수 있는지 묻는 문제였다.

수학 관련 문제는 유독 더 어려운 것 같다..

 

☞ 다른 사람의 코드

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void) {
    int A, B, V;
    int day;
    scanf("%d%d%d",&A,&B,&V);

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

    printf("%d", day);

    return 0;
}
출처 : https://yahohococo.tistory.com/28

소수 일 때 케이스 분류하기 귀찮으니 그냥 (V - B)에서 1을 빼버렸다.

흠 내 머리로는 이해가 어렵다..

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

'Baekjoon' 카테고리의 다른 글

[C] 백준 2775번 : 부녀회장이 될테야  (0) 2023.01.20
[C] 백준 10250번 : ACM 호텔 (개선)  (0) 2023.01.19
[C] 백준 1193번 : 분수찾기  (0) 2023.01.19
[C] 백준 2292번 : 벌집  (0) 2023.01.18
[C] 백준 1712번 : 손익분기점  (0) 2023.01.18
    'Baekjoon' 카테고리의 다른 글
    • [C] 백준 2775번 : 부녀회장이 될테야
    • [C] 백준 10250번 : ACM 호텔 (개선)
    • [C] 백준 1193번 : 분수찾기
    • [C] 백준 2292번 : 벌집
    DoZZang
    DoZZang
    과정은 힘들지만 성장은 즐겁습니다.

    티스토리툴바