프로그래머스 문제기록

[프로그래머스 코딩테스트 입문]-[개미군단, 모스부호(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) 을 넣어줘야함