Python 페어 프로그래밍 연습문제 2

조재형·2023년 5월 10일
0

스터디

목록 보기
8/19
# 문제 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을 사용하는 것 보다 수학 식을 만들어 입력하는게 더 힘들다니 좀 우습다.

profile
안녕하세요.

0개의 댓글