[백준] 2869번, 10250번

코린이·2022년 4월 24일
0

백준

목록 보기
11/38

📢 2869번 문제

백준 문제 링크

🔎 풀이

낮 동안 올라가는 길이 A
밤동안 미끌어지는 길이 B
총 가야할 나무 길이 v
정상에서는 미끄러 지지 않는다.
v = (a-b)x + a
x = (v - a) / (a-b)
소수점으로 나오기 때문에 Math.ceil()을 사용하여 올림해준다.
x는 밤낮 꽉꽉 채워서 가는 날짜 수라고 이해하면 된다.
x날짜 만큼 간 그 다음날 낮 동안에 a 만큼 이동하여 도착하기 때문에 + 1을 해준다.

🔎 코드

import math
import sys
A, B, V = map(int, sys.stdin.readline().split())

x = math.ceil((V - A) / (A-B))
print(x+1)


📢 10250번 문제

백준 문제 링크

🔎 풀이

x : 엘레베이터에서부터 세었을 때의 번호 즉 층수를 뺀 방 번호
y : 층수를 나타내는 번호

=> 방번호는 yyxx라고 보면된다.
xmath.ceil(N/H)으로 몇 번 방에 머무를지 구할 수 있다.

y는 층수로 N(N번째 손님)에서 H(호텔의 층수)를 나눈 나머지와 같다.

Y가 0일 경우
NH의 배수일 경우 Y의 값이 0이된다.
이 경우는 꼭대기 층에 머무르는 것으로 즉 H층 ,X번째 방에 머무른다.

🔎 코드

import sys
import math

num = int(input())
for i in range(num):
    H, W, N = map(int, sys.stdin.readline().split())

    x = math.ceil(N / H)  # 엘레베이터에서 세었을 때의 번호
    y = (N % H) * 100  # 층수 # %는 나머지

    if y == 0:
        y = H * 100
    print(y + x)
profile
초보 개발자

0개의 댓글