[코딩테스트]입문 - Day.09

jang·2026년 3월 2일

프로그래머스 입문

목록 보기
5/12

문제 1) 개미 군단

[문제]

개미 군단이 사냥을 나가려고 합니다. 개미군단은 사냥감의 체력에 딱 맞는 병력을 데리고 나가려고 합니다. 장군개미는 5의 공격력을, 병정개미는 3의 공격력을 일개미는 1의 공격력을 가지고 있습니다. 예를 들어 체력 23의 여치를 사냥하려고 할 때, 일개미 23마리를 데리고 가도 되지만, 장군개미 네 마리와 병정개미 한 마리를 데리고 간다면 더 적은 병력으로 사냥할 수 있습니다. 사냥감의 체력 hp가 매개변수로 주어질 때, 사냥감의 체력에 딱 맞게 최소한의 병력을 구성하려면 몇 마리의 개미가 필요한지를 return하도록 solution 함수를 완성해주세요.

1. 내 정답

def solution(hp): general = 5 soilder = 3 worker = 1 general_num = hp // general soilder_num = (hp % general) // soilder worker_num = hp - (general * *general_num) - (soilder ** soilder_num) return general_num + soilder_num + worker_num

✨ 마무리

코드를 작성하고 나서 보니 좀 더 간결하게 할 수 있었겠다는 생각이 든다.

コードを書いた後に見返してみると、もっと簡単に書けたのではないかと思った。

하지만, 프로그래밍적 사고방식이 한 단계 성장했음을 느낄 수 있던 문제였다.

しかし、プログラミング的な思考が一歩成長したと感じられる問題だった。


문제 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' } result = ""

`for code in letter.split():
    result += morse[code]

return result`

2. 풀이

  • result = “” : 변환된 알파벳을 차곡차곡 붙여서 만들 최종 문자열을 준비
  • for code in letter.split():
    • letter.split() : 공백 기준으로 모스부호들을 나눠준다.
    • for code: code에 순서대로 넣어준다.
  • result += morse[code]: morse에서 code와 맞는 알파벳을 하나씩 더해서 result에 넣어준다

✨ 마무리

모스 부호에서 살짝 당황, 딕셔너리 양 보고 살짝 당황했지만!!! 그동안 썼던 걸 잘 활용해서 풀어낸 것 같다.

split이라는 새로운 명령어를 알게되었다.

이걸 활용해서 나중에 모스부호 해도기를 내가 직접 만들어볼 수도 있지 않을까?

モールス信号という点で少し戸惑い、辞書の量を見て少し驚いたが、これまで使ってきた方法をうまく活用して解くことができた。

また、今回の問題で split という新しいメソッドを知ることができた。

これを活用すれば、将来モールス信号の解読機を自分で作ることもできるのではないかと思った。


문제 3) 가위바위보

[문제]

가위는 2 바위는 0 보는 5로 표현합니다. 가위 바위 보를 내는 순서대로 나타낸 문자열 rsp가 매개변수로 주어질 때, rsp에 저장된 가위 바위 보를 모두 이기는 경우를 순서대로 나타낸 문자열을 return하도록 solution 함수를 완성해보세요.

1. 내 정답

def solution(rsp): win = {"2":"0","0":"5","5":"2"}

`answer = ""

for i in rsp:
    answer += win[i]

return answer`

✨ 마무리

문제 2에서 사용했던 방법을 그대로 가져와서 해결하였다.

이 문법에 익숙해질 수 있는 좋은 기회가 된 것 같다.

이걸 활용해서 게임을 만들어 볼 수도 있겠다는 아이디어가 떠올랐다.

問題2で使った方法をそのまま活用して解決することができた。

この文法に慣れる良い機会になったと思う。
これを活用すれば、ゲームを作ることもできるのではないかというアイデアが浮かんだ。


문제 4) 구슬을 나누는 경우의 수

[문제]

머쓱이는 구슬을 친구들에게 나누어주려고 합니다. 구슬은 모두 다르게 생겼습니다. 머쓱이가 갖고 있는 구슬의 개수 balls와 친구들에게 나누어 줄 구슬 개수 share이 매개변수로 주어질 때, balls개의 구슬 중 share개의 구슬을 고르는 가능한 모든 경우의 수를 return 하는 solution 함수를 완성해주세요.

1. 내 정답

import math

def solution(balls, share): return math.comb(balls,share)

2. 풀이

  • math.comb : 조합(combination)을 계산해주는 파이썬 내장 함수로 n개 중에서 r개를 고르는 경우의 수를 계산해준다.

✨ 마무리

새로운 내장 함수를 배웠다.

경우의 수를 구하는 식은 알았는데, 이걸 어떻게 코드로 표현할 수 있나 한참 고민했다.

이렇게 내장 함수를 이용하여 간단하게 풀 수 있다는 것도 알게되었고 경우의 수 문제에서 잘 활용할 수 있을 것 같다.

新しい組み込み関数を学ぶことができた。
場合の数を求める式は知っていたが、これをどのようにコードで表現すればいいのかしばらく悩んだ。
このように組み込み関数を使えば簡単に解くことができるということも分かり、場合の数の問題でうまく活用できそうだと思った。

profile
비전공자가 AI 엔지니어가 되는 과정

0개의 댓글