달팽이는 올라가고싶다
문제
땅 위에 달팽이가 있다. 이 달팽이는 높이가 V미터인 나무 막대를 올라갈 것이다.
달팽이는 낮에 A미터 올라갈 수 있다. 하지만, 밤에 잠을 자는 동안 B미터 미끄러진다. 또, 정상에 올라간 후에는 미끄러지지 않는다.
달팽이가 나무 막대를 모두 올라가려면, 며칠이 걸리는지 구하는 프로그램을 작성하시오.
입력
첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000)
출력
첫째 줄에 달팽이가 나무 막대를 모두 올라가는데 며칠이 걸리는지 출력한다.
Python 풀이
처음엔 while문으로 풀었다.
a,b,v = map(int,input().split())
cnt = 0
while 1:
v-=a
cnt+=1
if v<=0:
break
v+=b
print(cnt)
이렇게 푸니까 시간초과가 떳다.
아마 반복문을 사용하지 않아야될 것 같았다
어짜피 마지막날에는 a만큼 올라가야 하기때문에 (v-a)/(a-b)+1이런 공식이 나온다.
하지만 마지막날 a만큼 올라가도 v에 조금남아서 도착하지 못한다면 (v-a)/(a-b)+2를 해줘야 할것이다.
이것을 if else문으로 작성한다.
a,b,v = map(int,input().split())
#마지막날에는 어짜피 a만큼 올라가기때문에 v-a
aw = (v-a)//(a-b)
if (v-a)%(a-b) == 0: #마지막날 a만큼 올라가면 v에 도착
print(aw+1)
else: #마지막날 a만큼 올라가도 v에 도착하지 못한다.
print(aw+2)
별찍기 - 21
문제
예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요.
입력
첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다.
출력
첫째 줄부터 차례대로 별을 출력한다.
입력 : 1
*
입력 : 2
*
*
*
*
입력 : 3
* *
*
* *
*
* *
*
입력 : 4
* *
* *
* *
* *
* *
* *
* *
* *
Python 풀이
규칙을 유추하기만 하면된다
일단 줄수는 입력값 * 2이다
짝수줄에는 입력값을 2로 나눈값의 개수만큼 별이 찍힌다
홀수줄에는 입력값의 별개수에서 짝수줄의 별 개수를 뺀만큼 별이 찍힌다
이를 코드로 작성한다.
num = int(input())
a = num - num//2 #입력한 값의 별 개수에서 아래 별의 개수를 뺀만큼 별이 찍힌다
b = num//2 #입력한 값을 2로 나눈값의 개수만큼 별이 찍힌다
for i in range(num):
print("* "*a)
print(" *"*b)
'Emotion > 문제' 카테고리의 다른 글
백준 팩토리얼 (0) | 2020.09.02 |
---|---|
백준 숫자의 합 (0) | 2020.09.02 |
코드업 1526~1536 (0) | 2020.07.08 |
백준 for문, while문 (0) | 2020.07.07 |
백준 if문 (0) | 2020.07.01 |