프로그래머스 문제기록
[프로그래머스 코딩테스트 입문]-[개미군단, 모스부호(1)]
코딩펭귄
2023. 9. 14. 15:55
개미군단
문제설명
개미군단이 사냥을 나감.
장군개미=5, 병정개미=3, 일개미=1 의 공격력을 가짐.
사냥감의 체력 hp가 매개변수로 주어질때, 사냥감의 체력에 딱맞게 최소한의 개미들을 구성하려면 몇마리의 개미가 필요할지 retrun
입출력 예
hp 23, result 5
hp 999, result 201
풀이
(풀이1)
def solution(hp):
a = hp//5
hp %= 5
b = hp//3
hp %= 3
c = hp//1
return a+b+c
(풀이2)
def solution(hp):
return hp//5 + (hp % 5 // 3) + (hp % 5 % 3)
아래는 에러 난 풀이
(풀이3) -> 이유를 모르겠음
def solution(hp):
answer = 0
for i in [5, 3, 1]:
a, hp = divmod(hp, i)
answer += a
return asnwer
-> IndentationError: unindent does not match any outer indentation level (들여쓰기 잘 했는뎅 ..)
(풀이4) 이건 왜?
def solution(hp):
answer = 0
if hp >= 5:
a = hp//5
b = (hp-(a*5))//3
c = hp-(a*5)-(b*3)
answer = a + b + c
else:
answer = hp
return answer
모스부호(1)
문제설명
문자열 letter 가 매개변수로 주어질때, letter을 영어 소문자로 바꾼 문자열을 return
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'
}
제한사항
- 1 ≤ letter의 길이 ≤ 1,000
- return값은 소문자입니다.
- letter의 모스부호는 공백으로 나누어져 있습니다.
- letter에 공백은 연속으로 두 개 이상 존재하지 않습니다.
- 해독할 수 없는 편지는 주어지지 않습니다.
- 편지의 시작과 끝에는 공백이 없습니다.
입출력 예
letter result
".... . .-.. .-.. ---" "hello"
".--. -.-- - .... --- -." "python"
풀이
1) answer을 문자열로
(풀이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'
}
answer = '' # 문자열 생성
for i in letter.split():
answer += morse[i]
return (''.join(answer))
(풀이2)
def solution(letter):
answer = ''
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'
}
letter_ls = letter.split()
for l in letter_ls:
answer += morse[l]
return answer
딕셔너리 : 키값 입력하면 value값 나옴!
2) answer을 리스트로
def solution(letter):
answer = []
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'
}
for i in letter.split():
answer.append(morse[i])
str1 = ""
for i in answer:
str1 += i
return str1
def solution(letter):
answer = []
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'
}
for i in letter.split():
answer.append(morse[i])
return answer
-> 이걸로 하면 실행결과가
' 실행한 결괏값 ["p","y","t","h","o","n"]이 기댓값 "python"과 다릅니다. ' 이렇게 나옴
따라서, return 바로 윗줄에 answer = ''.join(answer) 을 넣어줘야함