[프로그래머스 Python] 코딩테스트 입문 Day 9 - 수학, 문자열, 해시, 완전탐색, 조건문
코딩테스트 입문 Day 9 수학, 문자열, 해시, 완전탐색, 조건문
- 개미 군단
- 모스부호 (1)
- 가위 바위 보
- 구슬을 나누는 경우의 수
1. 개미 군단
개미 군단이 사냥을 나가려고 합니다. 개미군단은 사냥감의 체력에 딱 맞는 병력을 데리고 나가려고 합니다. 장군개미는 5의 공격력을, 병정개미는 3의 공격력을 일개미는 1의 공격력을 가지고 있습니다. 예를 들어 체력 23의 여치를 사냥하려고 할 때, 일개미 23마리를 데리고 가도 되지만, 장군개미 네 마리와 병정개미 한 마리를 데리고 간다면 더 적은 병력으로 사냥할 수 있습니다. 사냥감의 체력 hp
가 매개변수로 주어질 때, 사냥감의 체력에 딱 맞게 최소한의 병력을 구성하려면 몇 마리의 개미가 필요한지를 return하도록 solution 함수를 완성해주세요.
👉 문제 보러가기
(1) 코드 작성
def solution(hp):
# 장군개미
fir = hp // 5
# 병정개미
sec = (hp - fir*5)//3
# 일개미
thr = hp - fir*5 - sec*3
return fir + sec + thr
(2) 코드 리뷰 및 회고
- 문제는 사냥감의 체력에 딱 맞게 최소한의 병력을 구성하려면 개미(장군, 병정, 일)가 몇 마리 필요한지를 구하는 것이다.
- 주어진 체력값에 대해 장군개미 > 병정개미 > 일 개미 순으로 몇 마리 필요한지를 구한다.
- 1 L 유리병에 돌맹이 > 자갈 > 모래 순으로 채우는 것과 같은 느낌
- 장군 개미의 개수를 제외한
(hp - fir*5)
에서 병정개미 수를 구하고, 장군 개미와 병정 개미 수를 제외한(hp - fir*5 - sec*3)
는 일개미 수로 정했다. - EASY 😎
2. 모스부호 (1)
머쓱이는 친구에게 모스부호를 이용한 편지를 받았습니다. 그냥은 읽을 수 없어 이를 해독하는 프로그램을 만들려고 합니다. 문자열 letter
가 매개변수로 주어질 때, letter
를 영어 소문자로 바꾼 문자열을 return 하도록 solution 함수를 완성해보세요.
모스부호는 다음과 같습니다.
👉 문제 보러가기
(1) 코드 작성
def solution(letter):
morse = {
'.-':'a','-...':'b','-.-.':'c','-..':'d','.':'e','..-.':'f',
'--.':'g','....':'h','..':'i','.---':'j','-.-':'k','.-..':'l',
'--':'m','-.':'n','---':'o','.--.':'p','--.-':'q','.-.':'r',
'...':'s','-':'t','..-':'u','...-':'v','.--':'w','-..-':'x',
'-.--':'y','--..':'z'
}
letters = letter.split(" ")
answer = ''
for l in letters:
answer += morse[l]
return answer
(2) 코드 리뷰 및 회고
- letter 는
".... . .-.. .-.. ---"
와 같은 형식으로 입력된다.- 각 모스부호는 공백으로 나누어지기 때문에 split 함수를 사용하여 분리해주었다.
- for 문을 돌려 각 모스부호에 맞는 알파벳을 가져올 수 있도록 dictionary 를 사용했다.
- EASY 😎
3. 가위 바위 보
가위는 2 바위는 0 보는 5로 표현합니다. 가위 바위 보를 내는 순서대로 나타낸 문자열 rsp
가 매개변수로 주어질 때, rsp
에 저장된 가위 바위 보를 모두 이기는 경우를 순서대로 나타낸 문자열을 return하도록 solution 함수를 완성해보세요.
👉 문제 보러가기
(1) 코드 작성
def solution(rsp):
answer = ''
for i in rsp:
if i == '2':
answer += '0'
elif i == '0':
answer += '5'
elif i == '5':
answer += '2'
return answer
(2) 코드 리뷰 및 회고
- 입력되는 rsp 의 각 요소별로 조건문을 만들어서 이기는 경우를 정답값에 추가하도록 했다.
- EASY 😎
4. 구슬을 나누는 경우의 수
머쓱이는 구슬을 친구들에게 나누어주려고 합니다. 구슬은 모두 다르게 생겼습니다. 머쓱이가 갖고 있는 구슬의 개수 balls
와 친구들에게 나누어 줄 구슬 개수 share
이 매개변수로 주어질 때, balls
개의 구슬 중 share
개의 구슬을 고르는 가능한 모든 경우의 수를 return 하는 solution 함수를 완성해주세요.
👉 문제 보러가기
(1) 코드 작성
import math
def solution(balls, share):
answer = math.factorial(balls)/(math.factorial(balls - share) * math.factorial(share))
return int(answer)
(2) 코드 리뷰 및 회고
- factorial 계산을 사용해야하기 때문에
math
모듈을 사용했다. - 계산 과정에서
/
연산자를 사용하기 때문에 혹시 몰라return
에 정답값을int
처리해주었다. - EASY 😎
👩🏻💻개인 공부 기록용 블로그입니다
오류나 틀린 부분이 있을 경우 댓글 혹은 메일로 따끔하게 지적해주시면 감사하겠습니다.
댓글남기기