개발/코테

[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