2839, 2869, 4948, 1929, 10250

qkrrnjswo·2023년 3월 23일
0

문제2839

배달할 설탕 개수 구하기

while True:
  number = int(input())
  count = 0

  if number % 5 == 0:
      count = number//5
  elif number > 2:
    while number >= 0:
      if number % 5 == 0:
        count += number // 5
        break
      number -= 3
      count += 1
    else: count = -1
  else:
    count = -1

  print(count)

큰 설탕을 기준으로 함
작은 설탕을 먼저 빼는 것이 중요!
(쓸데없는 경우의 수를 줄여줌
=> 3으로 딱 떨어지는 경우를 추가할 필요 없어짐)

문제2869

a,b,v = map(int, input().split())
count = 0

if((v-b)%(a-b) == 0):
    count += (v-b)//(a-b)
else:
    count += (v-b)//(a-b) + 1

print(count)

달팽이 문제
1. a,b,v = map(int, input().split())
여러개를 받을 때는 map함수와 split를 이용

  1. while 문을 안쓰고 푸는 것이 정답이다.
  2. 마지막에 미끄러지는 b를 전체 V에서 빼는 것이 핵심

문제 4948, 문제 1929

소수구하기
m이상 n이하의 소수들 구하기

m, n = map(int, input().split())

array = [False, False] + [True] * (n)

for i in range(2, n + 1):
    if array[i] == True:
        for j in range(i+i, n+1, i):
            array[j]= False


for i in range(m,n+1):
    if array[i] == True:
        print(i)

<에라토스테네스의 체>
배열을 미리 만들어서 소수들을 넣어놓는다.
=> 2중 루프문을 방지

문제 10250

나머지가 층수, 몫이 호수

0개의 댓글