알고리즘/baekjoon

20210114_코테공부

jungeun960 2021. 1. 14. 15:44

단계별로 풀기 - 기본수학 1 => point.규칙찾기

# 2292 벌집 (브론즈2)

point. 수열 1 + 6 + 12+ 18 .. 6n

n = int(input())
first = 1
room = 1
if n == 1:
    print(1)
else:
    while True:
        first += 6*(room)
        room += 1
        if n <= first:
            print(room)
            break

 

# 1193 분수찾기 (브론즈2)

point. 규칙찾기

X = int(input())
stage, key_X = 1, 1
while key_X + stage <= X:
    key_X += stage
    stage += 1
    #print(stage, key_X)
step = X - key_X
x, y = step + 1, stage - step
if stage % 2 == 0:
    print('{}/{}'.format(x, y))
else:
    print('{}/{}'.format(y, x))

 

# 2869 달팽이는 올라가고 싶다 (브론즈2)

point. 시간초과 안나게 하기, 식 구하기

1) 시간 초과 남(실패)

A, B, V = list(map(int, input().split()))
count = 1
result = 0
while True:
    result += A
    if result >= V:
        break
    else:
        result -= B
        count += 1
print(count)

2) 식 구하기 - 정상에 도달하면 떨어지지 않는다.

a, b, v = list(map(int, input().split()))
v = v-a #정상에 도달하면 안떨어지니까 b빼고
if v % (a-b) == 0: 
    print(v//(a-b) +1) # v-a로 이미 횟수 한번을 셋으니까 +1
else:
    print(v // (a - b) + 2) # & 나누어떨어지지 않아서 +1

 

반응형