# 문제 1
# 양꼬치
# 머쓱이네 양꼬치 가게는 10인분을 먹으면 음료수 하나를 서비스로 준다.
# 양꼬치는 1인분에 12000원, 음료수는 2000원이다.
# 정수 n과 k가 매개변수로 주어졌을 때, 양꼬치 n인분과 음료수 k개를 먹었다면
# 총 얼마를 지불해야 하는지 return 하도록 solution 함수를 완성하라.
# 단, 0< n < 1000 , n /10 <= k < 1000 , 서비스로 받은 음료수는 모두 마신다
'''
def solution(n, k):
g = n // 10
k -= g
p = n * 12000 + k * 2000
return p
import random
n = random.randint(1, 999)
k = random.randint(n // 10, 999)
result = solution(n, k)
print(f'문제 1 - 양꼬치는 {n}인분을 먹었으며, 음료수는 {k}병 마셨고 총 {result}원을 지불해야 한다.')
'''
# 문제 2 - 피자 나눠먹기(1)
# 머쓱이네 피자가게는 피자를 일곱 조각으로 잘라줍니다
# 피자를 나눠먹을 사람의 수 n이 주어질 때, 모든 사람이 피자를 한 조각 이상 먹기 위한
# 피자의 수를 return 하는 solution 함수를 완성해보시오
# 단 , 1<= n <= 100
'''
def solution(n):
n >= 1 and n <=100
pizza = (n+6) // 7
return pizza
import random
n = random.randint(0, 1000)
result = solution(n)
print(result)
'''
# 문제 3 - 피자 나눠먹기(3)
# 머쓱이네 피자가게는 피자를 두 조각에서 열 조각 까지 원하는 조각 수로 잘라준다.
# 피자 조각 수 slice 와 피자를 먹는 사람의 수 n 이 매개변수로 주어질 때,
# n 명의 사람이 최소 한 조각 이상 피자를 먹으려면 최소 몇 판의 피자를 시켜야
# 하는지를 return 하도록 solution 함수를 완성하라
# 단, 2<= slice <= 10 1<= n <= 100
'''
def solution(slice, n):
# 한 판에 잘린 조각 수
pieces_per_pizza = slice
# 모든 사람이 한 조각씩 먹을 경우, 필요한 피자 판 수
pizzas = n / pieces_per_pizza
# 나머지가 있을 경우, 피자 판 수를 반올림하여 조각을 남기지 않도록 함
if n % pieces_per_pizza != 0:
pizzas += 1
return int(pizzas)
'''
# 어려워서 잘 이해가 안됨..
# 문제 4 - 점의 위치 구하기
# 사분면은 한 평면을 x축과 y축을 기준으로 나눈 네 부분이다.
# x, y 가 양수이면 제 1 사분면
# x가 음수, y가 양수이면 제 2 사분면
# x, y 가 모두 음수이면 제 3 사분면
# x가 양수, y가 음수이면 제 4 사분면
# x좌표(x, y)를 차례대로 담은 정수 배열 dot 이 매개변수로 주어진다.
# 좌표 dot 이 사분면 중 어디에 속하는지 1, 2, 3, 4 중 하나를
# return 하도록 solution 함수를 완성하시오.
# 제한사항1 dot 의 길이 = 2, dot[0]은 x좌표를, dot[1]은 y좌표를 나타낸다
# 제한사항2 -500 <= dot의 원소 <= 500
# 제한사항3 dot의 원소는 0이 아니다.
'''
def solution(dot):
x, y = dot
if x > 0:
if y >0:
return 1
elif y <0:
return 4
elif x < 0:
if y > 0:
return 2
elif y <0:
return 3
'''
# 문제 5 - 아이스 아메리카노
# 아이스 아메리카노는 한잔에 5500원이다.
# money가 매개변수로 주어질 때, 최대로 마실 수 있는 아메리카노의 잔 수와
# 남는 돈을 순서대로 담은 배열을 return 하도록 solution 함수를 완성하라
# 단 , 0 < money <= 1000000
'''
def solution(money):
money > 0 and money <= 1000000
cups = money // 5500
change = money % 5500
return [cups, change]
import random
money = random.randint(0, 1000000)
print(solution(money))
'''
# 문제 6 - 옷가게 할인 받기
# 옷가게에서 10만원 이상 구매시 5%, 30만원 이상 구매시 10%, 50만원 이상 구매시 20%
# 를 할인해준다.
# 구매한 옷의 가격 price 가 주어질 때, 지불해야 할 금액을 return 하도록
# solution 함수를 완성하라
# 단, 10 <= price <= 1000000
# price는 10원 단위로 주어진다.
# 소수점 이하를 버린 정수를 return 한다.
'''
def solution(price):
price >= 10 and price <= 1000000
discount = 0
if price >= 500000:
discount = 20
print(f'할인률은{discount}%')
print(price)
elif price >= 300000:
discount = 10
print(f'할인률은{discount}%')
print(price)
elif price >= 100000:
discount = 5
print(f'할인률은{discount}%')
print(price)
pay = price - price * discount // 100
return pay
import random
price = random.randint(10, 1000000)
print(solution(price))
'''
# 문제 7 - 제곱수 판별하기
# 어떤 자연수를 제곱했을 때 나오는 정수를 제곱수 라고한다.
# 정수 n이 매개변수로 주어질 때, n이 제곱수라면 1을 아니라면 2를 return 하도록
# solution 함수를 완성하라
# 단, 1<= n <= 1000000
'''
def solution(n):
int (n) >= 1 and int (n) <=1000000
if int(n ** 0.5) ** 2 == n :
print(f'n은{n}이다.')
return 1
else:
print(f'n은{n}이다.')
return 2
import random
n = random.randint(1, 1000000)
print(solution(n))
'''
오랜만에 문제를 보고 수학 식을 만들려니 머리가 아프다.
3번 4번 문제는 꽤나 머리아팠다.
마지막 문제에서 if int(n 0.5) 2 == n : 부분은 특히 어려웠는데,
n 0.5는 n의 제곱근을 구하는 연산이다.
예를 들어 n이 16이면 n 0.5는 4가 된다.
이후 int 함수로 소수점 이하를 버리고, 다시 제곱하여 n과 같은지 비교하는 부분이
int(n 0.5) 2 == n이다.
int(n ** 0.5)는 n의 제곱근의 정수부분을 의미하며,
이를 제곱하면 n과 같으면 1 (True), 다르면 2 (False)가 나온다.
python을 사용하는 것 보다 수학 식을 만들어 입력하는게 더 힘들다니 좀 우습다.