[프로그래머스]코딩테스트 입문 | 복습 Day4 - Day6

sun_U·2023년 6월 13일
0
post-thumbnail

프로그래머스 코딩테스트 입문 복습

Day4. 수학, 배열

13. 피자 나눠 먹기 (1)


문제
머쓱이네 피자가게는 피자를 일곱 조각으로 잘라 줍니다. 피자를 나눠먹을 사람의 수 n이 주어질 때, 모든 사람이 피자를 한 조각 이상 먹기 위해 필요한 피자의 수를 return 하는 solution 함수를 완성해보세요.

제출 코드

import math
def solution(n):
    answer = math.ceil(n / 7)
    return answer

math 모듈을 이용한 풀이

다른 풀이

def solution(n):    
    answer = (n-1)//7 + 1
    return answer

7명일 경우 한 판이 되기 때문에, 사람 수에서 1을 빼고 7로 나눈 몫에 1을 더한다.

14. 피자 나눠 먹기 (2)


문제
머쓱이네 피자가게는 피자를 여섯 조각으로 잘라 줍니다. 피자를 나눠먹을 사람의 수 n이 매개변수로 주어질 때, n명이 주문한 피자를 남기지 않고 모두 같은 수의 피자 조각을 먹어야 한다면 최소 몇 판을 시켜야 하는지를 return 하도록 solution 함수를 완성해보세요.

제출 코드

import math

def solution(n):
    answer = (n * 6) // math.gcd(n, 6) // 6
    return answer

사람 수와 피자 한 판의 조각(6)의 최소공배수를 구하고 피자 한 판의 조각 수인 6으로 나눠준다.

다른 풀이

def solution(n):
    i=1
    while(1):
        if (6*i)%n==0:
            return i
        i+=1

math 모듈을 사용하지 않고, while문을 사용한 풀이

15. 피자 나눠 먹기 (3)


문제
머쓱이네 피자가게는 피자를 두 조각에서 열 조각까지 원하는 조각 수로 잘라줍니다. 피자 조각 수 slice와 피자를 먹는 사람의 수 n이 매개변수로 주어질 때, n명의 사람이 최소 한 조각 이상 피자를 먹으려면 최소 몇 판의 피자를 시켜야 하는지를 return 하도록 solution 함수를 완성해보세요.

제출 코드

import math

def solution(slice, n):
    answer = math.ceil(n / slice)
    return answer

다른 풀이

def solution(slice, n):
	answer = (n-1) // slice + 1
    return answer

모듈을 사용하지 않은 풀이

16. 배열의 평균값


문제
정수 배열 numbers가 매개변수로 주어집니다. numbers의 원소의 평균값을 return하도록 solution 함수를 완성해주세요.

제출 코드

def solution(numbers):
    answer = sum(numbers) / len(numbers)
    return answer

리스트 값들의 합을 개수로 나눠서 return 한다.

Day5. 수학, 배열

17. 옷가게 할인 받기


문제
머쓱이네 옷가게는 10만 원 이상 사면 5%, 30만 원 이상 사면 10%, 50만 원 이상 사면 20%를 할인해줍니다.
구매한 옷의 가격 price가 주어질 때, 지불해야 할 금액을 return 하도록 solution 함수를 완성해보세요.

제출 코드

def solution(price):
    if price >= 500000:
        disc = 0.8
    elif price >= 300000:
        disc = 0.9
    elif price >= 100000:
        disc = 0.95
    else:
        disc = 1
    return int(price * disc)

다른 풀이

def solution(price):
    discount_rates = {500000: 0.8, 300000: 0.9, 100000: 0.95, 0: 1}
    for discount_price, discount_rate in discount_rates.items():
        if price >= discount_price:
            return int(price * discount_rate)

elif 대신 딕셔너리 개념을 이용한 풀이. 앞으로도 딕셔너리를 활용해서 문제를 푸는 경우가 종종 있으니 방법 잘 알아두기.

18. 아이스 아메리카노


수학
문제
머쓱이는 추운 날에도 아이스 아메리카노만 마십니다. 아이스 아메리카노는 한잔에 5,500원입니다. 머쓱이가 가지고 있는 돈 money가 매개변수로 주어질 때, 머쓱이가 최대로 마실 수 있는 아메리카노의 잔 수와 남는 돈을 순서대로 담은 배열을 return 하도록 solution 함수를 완성해보세요.

제출 코드

def solution(money):
    answer = [money // 5500, money % 5500]
    return answer

19. 나이 출력


수학
문제
머쓱이는 40살인 선생님이 몇 년도에 태어났는지 궁금해졌습니다. 나이 age가 주어질 때, 2022년을 기준 출생 연도를 return 하는 solution 함수를 완성해주세요.

제출 코드

def solution(age):
    answer = 2022 - age + 1
    return answer

20. 배열 뒤집기


배열
문제
정수가 들어 있는 배열 num_list가 매개변수로 주어집니다. num_list의 원소의 순서를 거꾸로 뒤집은 배열을 return하도록 solution 함수를 완성해주세요.

제출 코드

def solution(num_list):
    answer = num_list[::-1]
    return answer

Day6. 문자열, 반복문, 출력, 배열, 조건문

21. 문자열 뒤집기


문제
문자열 my_string이 매개변수로 주어집니다. my_string을 거꾸로 뒤집은 문자열을 return하도록 solution 함수를 완성해주세요.

제출 코드

def solution(my_string):
    answer = my_string[::-1]
    return answer

22. 직각삼각형 출력하기


문제
"*"의 높이와 너비를 1이라고 했을 때, ""을 이용해 직각 이등변 삼각형을 그리려고합니다. 정수 n 이 주어지면 높이와 너비가 n 인 직각 이등변 삼각형을 출력하도록 코드를 작성해보세요.

제출 코드

n = int(input())
for i in range(1, n + 1):
    print('*' * i)

23. 짝수 홀수 개수


문제
정수가 담긴 리스트 num_list가 주어질 때, num_list의 원소 중 짝수와 홀수의 개수를 담은 배열을 return 하도록 solution 함수를 완성해보세요.

제출 코드

def solution(num_list):
    odd_num, even_num = 0, 0
    
    for n in num_list:
        if n % 2 == 0:
            even_num += 1
        else:
            odd_num += 1
            
    return [even_num, odd_num]

다른 풀이

def solution(num_list):
    answer = [0,0]
    for n in num_list:
        answer[n%2]+=1
    return answer

answer를 리스트 형태로 만들고, 값을 2로 나누면 나머지가 0 또는 1임을 활용해, 인덱스 값으로 접근해 값을 추가하는 방법

24. 문자 반복 출력하기


문제
문자열 my_string과 정수 n이 매개변수로 주어질 때, my_string에 들어있는 각 문자를 n만큼 반복한 문자열을 return 하도록 solution 함수를 완성해보세요.

제출 코드

def solution(my_string, n):
    answer = ''
    for str in my_string:
        answer += (str * n)
    return answer
profile
Data Engineer AI/ Metaverse :)

0개의 댓글