프로그래머스 코딩테스트 입문 복습
문제
머쓱이네 피자가게는 피자를 일곱 조각으로 잘라 줍니다. 피자를 나눠먹을 사람의 수 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을 더한다.
문제
머쓱이네 피자가게는 피자를 여섯 조각으로 잘라 줍니다. 피자를 나눠먹을 사람의 수 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문을 사용한 풀이
문제
머쓱이네 피자가게는 피자를 두 조각에서 열 조각까지 원하는 조각 수로 잘라줍니다. 피자 조각 수 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
모듈을 사용하지 않은 풀이
문제
정수 배열 numbers가 매개변수로 주어집니다. numbers의 원소의 평균값을 return하도록 solution 함수를 완성해주세요.
제출 코드
def solution(numbers):
answer = sum(numbers) / len(numbers)
return answer
리스트 값들의 합을 개수로 나눠서 return 한다.
문제
머쓱이네 옷가게는 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
대신 딕셔너리 개념을 이용한 풀이. 앞으로도 딕셔너리를 활용해서 문제를 푸는 경우가 종종 있으니 방법 잘 알아두기.
수학
문제
머쓱이는 추운 날에도 아이스 아메리카노만 마십니다. 아이스 아메리카노는 한잔에 5,500원입니다. 머쓱이가 가지고 있는 돈 money가 매개변수로 주어질 때, 머쓱이가 최대로 마실 수 있는 아메리카노의 잔 수와 남는 돈을 순서대로 담은 배열을 return 하도록 solution 함수를 완성해보세요.
제출 코드
def solution(money):
answer = [money // 5500, money % 5500]
return answer
수학
문제
머쓱이는 40살인 선생님이 몇 년도에 태어났는지 궁금해졌습니다. 나이 age가 주어질 때, 2022년을 기준 출생 연도를 return 하는 solution 함수를 완성해주세요.
제출 코드
def solution(age):
answer = 2022 - age + 1
return answer
배열
문제
정수가 들어 있는 배열 num_list가 매개변수로 주어집니다. num_list의 원소의 순서를 거꾸로 뒤집은 배열을 return하도록 solution 함수를 완성해주세요.
제출 코드
def solution(num_list):
answer = num_list[::-1]
return answer
문제
문자열 my_string이 매개변수로 주어집니다. my_string을 거꾸로 뒤집은 문자열을 return하도록 solution 함수를 완성해주세요.
제출 코드
def solution(my_string):
answer = my_string[::-1]
return answer
문제
"*"의 높이와 너비를 1이라고 했을 때, ""을 이용해 직각 이등변 삼각형을 그리려고합니다. 정수 n 이 주어지면 높이와 너비가 n 인 직각 이등변 삼각형을 출력하도록 코드를 작성해보세요.
제출 코드
n = int(input())
for i in range(1, n + 1):
print('*' * i)
문제
정수가 담긴 리스트 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임을 활용해, 인덱스 값으로 접근해 값을 추가하는 방법
문제
문자열 my_string과 정수 n이 매개변수로 주어질 때, my_string에 들어있는 각 문자를 n만큼 반복한 문자열을 return 하도록 solution 함수를 완성해보세요.
제출 코드
def solution(my_string, n):
answer = ''
for str in my_string:
answer += (str * n)
return answer