Algorithm/Programmers

[Python] 기본 수학 1

느낌표 공장장 2021. 1. 27. 01:50

# 1712번 손익분기점

fixed_cost, variable_cost, price = map(int, input().split())

if variable_cost < price :
    print(fixed_cost//(price-variable_cost)+1)
else :
    print(-1)

처음에는 while 반복문으로 풀었더니 시간초과가 났다. 그래서 반복문을 안쓰도록 3가지 값으로만 어떻게 해볼 수 없을까 하다가 나온 코드


# 2292번 벌집

n = int(input())
point = 1

for i in range(0,n):
    point+=6*i
    if point>=n:
        print(i+1)
        break  

벌집 테두리는 1 -> 6*1 -> 6*2 -> 6*3 … 으로 늘어난다.

그럼 총 개수는 1 -> 1+(6*1) -> 1+(6*1)+(6*2) .. 일 것이다. 


# 1193번 분수찾기

x = int(input())
a = 0
b = 0
num = 0

for i in range(1, x+1):
    num += i
    if num >= x :
        order = num - x
        if (i % 2) == 1 :
            a = 1 + order
            b = i - order
        else :
            a = i - order
            b = 1 + order
        print(a, end='')
        print('/', end='')
        print(b)
        break

개수가 1 -> 1+2-> 1+2+3 -> 1+2+3+4 ->.. 식으로 늘어난다.

대각선 라인이 추가 될 때, 홀수번째 대각선은 n/1 -> (n-1)/1+1 -> (n-2)/1+2 -> .. -> 1/n 순이며

짝수번째 대각선 라인은 반대 순서임을 이용하였다. 


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

a, b, v = map(int, input().split())
h = v-a
if h%(a-b) == 0:
    print(h//(a-b)+1)
else :
    print(h//(a-b)+2)

많이 틀렸던 문제이다. 처음에 이해가 잘 가지 않아 많이 고민했던 문제

  1. 달팽이가 첫날에 바로 도착하지 않는 경우 제외, 달팽이는 밤에 미끄러진다. 따라서 달팽이가 마지막날에는 낮에 오르는 것만으로도 정상에 도착할 수 있으므로 v-a를 h에 저장해준다.
  2. h%(a-b)==0 인 경우는, 마지막날 낮에 도착한 경우이다. 따라서 +1을 해준다.
  3. 그 이외의 경우는 밤에 한번 더 자고 그 다음날 낮에 도착한 경우이므로 +2를 해준다.

'Algorithm > Programmers' 카테고리의 다른 글

[Python] 신규 아이디 추천  (0) 2021.04.05
[Python] 크레인 인형 뽑기 게임  (0) 2021.04.05
[Python] 두 개 뽑아서 더하기  (0) 2021.04.04
[Python] 기본 수학 1  (0) 2021.02.11
[Python] 기본수학 1  (0) 2021.02.02