본문 바로가기

BAEKJOON/수학

백준 13170번 [떨어진 수정](C++) -yes6686- 티스토리

728x90
SMALL

 

백준 문제 풀이: 13170 [떨어진 수정]


문제 링크: https://www.acmicpc.net/problem/13170

문제 설명:

망치를 사용하여 떨어진 수정 조각을 모두 제거하려고 합니다. 망치의 힘이 주어졌을 때, 수정 조각을 모두 제거하기 위해 필요한 망치질의 최소 횟수를 계산하세요.

입력 조건:

  • 첫 번째 줄에 네 개의 정수 N, K, P, W가 주어집니다.
  • N: 수정 조각의 개수 (1 ≤ N ≤ 1,000,000)
  • K: 필요 없는 입력값 (문제에서 추가적인 정보로 주어질 수 있음)
  • P: 각 수정 조각을 제거하기 위해 필요한 총 힘 (1 ≤ P ≤ 1,000,000,000)
  • W: 망치의 한 번 타격으로 제거할 수 있는 힘 (1 ≤ W ≤ 1,000,000,000)

출력 조건:

  • 수정을 제거하기 위해 필요한 최소 망치질의 횟수를 출력합니다.

문제 해결 코드


#include <iostream>
#include <cmath> // ceil() 함수를 사용하기 위한 헤더
using namespace std;

int main() {
    int N, K, W;
    double P;
    cin >> N >> K >> P >> W; // 망치의 세기는 실수형으로 입력받습니다.
    
    int cnt = ceil(P / W); // 올림을 통해 필요한 횟수를 계산합니다.
    cout << cnt << '\n';
    
    return 0;
}
    

코드 설명

위 코드는 필요한 망치질 횟수를 계산합니다.

  • 입력 처리:
    • `P`는 각 수정 조각을 제거하는 데 필요한 총 힘입니다.
    • `W`는 망치 한 번의 타격으로 제거할 수 있는 힘입니다.
  • 계산:
    • `ceil(P / W)`를 사용하여 올림 계산을 수행하여 최소 망치질 횟수를 계산합니다.

시간 복잡도 분석:

  • 입력과 계산 모두 O(1)입니다.

결과

다음은 입력 예시와 출력 결과입니다:

입력:
5 3 15 4

출력:
4
    

수정을 제거하기 위해 망치를 최소 4번 휘둘러야 합니다.

다른 접근 방식이나 개선 사항이 있다면 댓글로 공유 부탁드립니다!

728x90
LIST