728x90
[프로그래머스][Python][Lv0] 코딩테스트 입문 (2)
1. 주사위의 개수
머쓱이는 직육면체 모양의 상자를 하나 가지고 있는데 이 상자에 정육면체 모양의 주사위를 최대한 많이 채우고 싶습니다. 상자의 가로, 세로, 높이가 저장되어있는 배열 box와 주사위 모서리의 길이 정수 n이 매개변수로 주어졌을 때, 상자에 들어갈 수 있는 주사위의 최대 개수를 return 하도록 solution 함수를 완성해주세요.
from functools import reduce
def solution(box, n):
lst = [i//n for i in box]
return reduce(lambda x,y: x*y, lst)
박스의 가로, 세로, 높이의 길이를 모두 n으로 나눈 후 곱하면 최대 개수를 구할 수 있다.
reduce를 통해 리스트 모든 요소를 곱한 후 반환한다.
2. 외계행성의 나이
우주여행을 하던 머쓱이는 엔진 고장으로 PROGRAMMERS-962 행성에 불시착하게 됐습니다.
입국심사에서 나이를 말해야 하는데, PROGRAMMERS-962 행성에서는 나이를 알파벳으로 말하고 있습니다.
a는 0, b는 1, c는 2, ..., j는 9입니다. 예를 들어 23살은 cd, 51살은 fb로 표현합니다.
나이 age가 매개변수로 주어질 때 PROGRAMMER-962식 나이를 return하도록 solution 함수를 완성해주세요.
def solution(age):
dic = {'0': 'a', '1':'b', '2':'c', '3':'d', '4':'e', '5':'f', '6':'g', '7':'h', '8':'i', '9':'j'}
return ''.join([dic.get(i) for i in str(age)])
딕셔너리형태로 key에 숫자를 저장하고 value에 알파벳을 저장한 다음
age를 str형태로 변환하여 get(i)를 이용하여 value를 찾는다.
3. 피자 나눠 먹기 (2)
머쓱이네 피자가게는 피자를 여섯 조각으로 잘라 줍니다. 피자를 나눠먹을 사람의 수
n이 매개변수로 주어질 때, n명이 주문한 피자를 남기지 않고 모두 같은 수의 피자 조각을 먹어야 한다면 최소 몇 판을 시켜야 하는지를 return 하도록 solution 함수를 완성해보세요.
def solution(n):
i=1
while(1):
if (6*i)%n==0:
return i
i+=1
4. 합성수 찾기
약수의 개수가 세 개 이상인 수를 합성수라고 합니다. 자연수
n이 매개변수로 주어질 때 n이하의 합성수의 개수를 return하도록 solution 함수를 완성해주세요.
def solution(n):
a = 0
for i in range(1, n+1):
if len([j for j in range(1, i+1) if i%j == 0]) >= 3:
a += 1
return a
n까지의 범위의 수들 중 약수의 개수가 3개 이상 인 수가 있으면 a에 1을 더한다.
5. 이진수 더하기
이진수를 의미하는 두 개의 문자열 bin1과 bin2가 매개변수로 주어질 때,
두 이진수의 합을 return하도록 solution 함수를 완성해주세요.
def solution(bin1, bin2):
return bin(int(bin1, 2) + int(bin2, 2))[2:]
int()로 2진수 -> 10진수 변환
bin()로 10진수 -> 2진수 변환
6. 컨트롤 제트
숫자와 "Z"가 공백으로 구분되어 담긴 문자열이 주어집니다. 문자열에 있는 숫자를 차례대로 더하려고 합니다. 이 때 "Z"가 나오면 바로 전에 더했던 숫자를 뺀다는 뜻입니다. 숫자와 "Z"로 이루어진 문자열 s가 주어질 때, 머쓱이가 구한 값을 return 하도록 solution 함수를 완성해보세요.
def solution(s):
s = s.split(' ')
s2 = []
for i in range(len(s)):
if s[i] == 'Z':
s2.remove(s[i-1])
else:
s2.append(s[i])
return eval("+".join(s2)) if len(s2) > 0 else 0
7. 7의 개수
머쓱이는 행운의 숫자 7을 가장 좋아합니다. 정수 배열 array가 매개변수로 주어질 때, 7이 총 몇 개 있는지 return 하도록 solution 함수를 완성해보세요.
def solution(array):
return "".join(list(map(str, array))).count('7')
아래와 같이도 가능하다고 한다
def solution(array):
return str(array).count('7')
8. 소인수분해
소인수분해란 어떤 수를 소수들의 곱으로 표현하는 것입니다. 예를 들어 12를 소인수 분해하면 2 * 2 * 3 으로 나타낼 수 있습니다. 따라서 12의 소인수는 2와 3입니다. 자연수 n이 매개변수로 주어질 때
n의 소인수를 오름차순으로 담은 배열을 return하도록 solution 함수를 완성해주세요.
def solution(n):
result = []
i = 2
while i <= n:
if n % i == 0:
result.append(i)
n = n//i
else:
i += 1
return sorted(list(set(result)))
소인수분해는 2부터 시작해서 2로 나누어떨어지지 않으면 3으로, 5로 점점 늘려나가면서 소수(1과 자신만을 약수로 가지는 수)가 될때까지 나눠서 구한다.
i로 나누어 떨어질 때, i를 빈리스트에 추가하고 n의 상태를 업데이트 해준다.
i로 나누어 떨어지지 않을때, i에 1을 더해준다.
9. 공 던지기
머쓱이는 친구들과 동그랗게 서서 공 던지기 게임을 하고 있습니다. 공은 1번부터 던지며 오른쪽으로 한 명을 건너뛰고 그다음 사람에게만 던질 수 있습니다. 친구들의 번호가 들어있는 정수 배열 numbers와 정수
K가 주어질 때, k번째로 공을 던지는 사람의 번호는 무엇인지 return 하도록 solution 함수를 완성해보세요.
def solution(numbers, k):
nums = (numbers * k)[::2]
return nums[k-1]
다른 사람들의 풀이
def solution(numbers, k):
return numbers[2 * (k - 1) % len(numbers)]
10. 잘라서 배열로 저장하기
문자열 my_str과 n이 매개변수로 주어질 때,
my_str을 길이 n씩 잘라서 저장한 배열을 return하도록 solution 함수를 완성해주세요.
def solution(my_str, n):
return [my_str[i:i+n] for i in range(0, len(my_str), n)]
반응형
'🧾 Codetest > 프로그래머스' 카테고리의 다른 글
[프로그래머스][Python][Lv0] 코딩테스트 입문 (4) (1) | 2023.09.08 |
---|---|
[프로그래머스][Python][Lv0] 코딩테스트 입문 (3) (0) | 2023.09.05 |
[프로그래머스][Python][Lv0] 코딩테스트 입문 (1) (0) | 2023.09.02 |
[프로그래머스][Python][Lv0] 코딩 기초 트레이닝 (3) (1) | 2023.08.28 |
[프로그래머스][Python][Lv0] 코딩 기초 트레이닝 (2) (0) | 2023.08.20 |