개발/코테
[8일차] 프로그래머스 - 순서쌍의 개수, 진료순서 정하기, 모스부호(1),
su-mmer
2023. 11. 2. 15:20
728x90
순서쌍의 개수
풀이
def solution(n):
return len([i for i in range(1, n+1) if n%i==0])
나누어 떨어지면 순서쌍에 해당된다. 리스트를 만들고 리스트의 길이를 리턴한다.
다른 풀이
def solution(n):
return len(list(filter(lambda v: n % (v+1) == 0, range(n))))
filter(function, iterator) 함수를 사용해서 iterator 값을 함수에 넣어서 true인 값을 리스트로 만든다.
0부터 n-1까지의 값들 중에 나누어 떨어지는 값을 필터링한다.
진료순서 정하기
풀이
def solution(emergency):
li = sorted(emergency, reverse=True)
return [li.index(i)+1 for i in emergency]
emergency 리스트를 내림차순으로 정렬한다.
내림차순 정렬에서 인덱스를 찾아서 반환한다.
모스부호(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'
}
return ''.join([morse[i] for i in letter.split()])
letter가 공백으로 구분되어있으므로 공백을 기준으로 morse 딕셔너리에서 value값을 리턴한다.
구슬을 나누는 경우의 수
풀이
import math
def solution(balls, share):
return int(math.factorial(balls)/(math.factorial(balls-share)*math.factorial(share)))
혹시나 해서 factorial 함수를 써봤는데.. 되더라고요..ㅎㅎ
728x90