2023. 4. 24. 19:09ㆍAlgorithm
1. 개미 군단
(문제 설명, 제한사항, 입출력 예)
장군개미는 5의 공격력, 병정개미는 3의 공격력, 일개미는 1의 공격력을 가지고 있을 때,
사낭감의 체력에 딱 맞게 최소한의 병력을 구성하려면 몇 마리의 개미가 필요한지를 반환하라는 문제이다.
(내가 생각한 풀이 과정)
위에서부터 5, 3, 1의 순서대로 값을 나누어 그 반환값을 계속 더하면 된다고 생각했다.
(코드)
💡 내 코드
def solution(hp):
count = 0
count += hp // 5
hp %= 5
count += hp // 3
hp %= 3
count += hp
return count
💡 다른 사람의 풀이 코드
내가 생각한 문제 풀이 방식과는 같지만, 코드를 한 줄로 줄일 수도 있었다. 아래와 같이.
def solution(hp):
return hp // 5 + (hp % 5 // 3) + ((hp % 5) % 3)
2. 모스부호 (1)
(문제 설명, 제한사항, 입출력 예)
모스부호 문자열을 영어로 변환한 문자열을 반환하라는 문제이다.
(내가 생각한 풀이 과정)
우선 각 모스부호는 공백으로 나누어져 있기에 split(' ') 함수를 사용해서 각 글자별로 분리를 해 반복문을 돌렸다.
morse라는 딕셔너리가 주어져있기 때문에, key값을 이용해서 문자열을 변환한 후, join 함수를 이용해서 새로운 문자열을 만들면 되는 문제이다.
(코드)
💡 내 코드
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'
}
return ''.join([morse[i] for i in letter.split(' ')])
3. 가위 바위 보
(문제 설명, 제한사항, 입출력 예)
가위는 2, 바위는 0, 보는 5로 표현할 때, 주어진 문자열을 이길 수 있는 새로운 문자열을 반환하라는 문제이다.
예를 들어, 205(가위 바위 보)가 주어져 있을 때, 이를 이길 수 있는 052(바위 보 가위)를 문자열로 반환하라는 뜻이다.
(내가 생각한 풀이 과정)
위 모스부호(1) 문제와 굉장히 유사하게 풀 수 있다.
각 가위 바위 보 별로 이길 수 있는 딕셔너리를 미리 만들어두고, 반복을 시키면서 값을 변환시키면 해결할 수 있다.
(코드)
💡 내 코드
def solution(rsp):
win = {'0': '5', '2': '0', '5': '2'}
return ''.join([win.get(i) for i in rsp])
4. 구슬을 나누는 경우의 수
(문제 설명, 제한사항, 입출력 예)
서로 다른 n개의 구슬의 개수가 주어질 때, m개를 고르는 경우의 수를 구하라는 문제이다.
(내가 생각한 풀이 과정)
예전 수학시간에 배웠던 서로 다른 n개중 m개를 뽑는 경우의 수 식을 사용하면 된다.
(코드)
💡 내 코드
def factorial(n):
if n == 0:
return 1
else:
return n * factorial(n-1)
def solution(balls, share):
return factorial(balls)/(factorial(balls-share)*factorial(share))
💡 다른 사람의 풀이 코드
열심히 구할 수도 있지만, 이처럼 math 모듈 내에 comb라는 내장 함수를 이용하면 쉽게 구할 수도 있다.
import math
def solution(balls, share):
return math.comb(balls, share)
'Algorithm' 카테고리의 다른 글
[Programmers/Lv. 0] 코딩테스트 입문 Day 11 - 수학, 반복문 (Python) (0) | 2023.05.27 |
---|---|
[Programmers/Lv. 0] 코딩테스트 입문 Day 10 - 조건문, 배열, 수학, 시뮬레이션 (Python) (0) | 2023.04.30 |
[Programmers/Lv. 0] 코딩테스트 입문 Day 8 - 배열, 구현, 수학 (Python) (0) | 2023.04.23 |
[Programmers/Lv. 0] 코딩테스트 입문 Day 7 - 문자열, 조건문, 수학, 반복문 (Python) (3) | 2023.03.15 |
[Programmers/Lv. 0] 코딩테스트 입문 Day 6 - 문자열, 반복문, 출력, 배열, 조건문 (Python) (1) | 2023.03.13 |