본문 바로가기
Algorithm/programmers

programmers: 메뉴리뉴얼

by 갈잃자 2022. 10. 12.

https://school.programmers.co.kr/learn/courses/30/lessons/72411?language=python3 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


흠... 큰 고민하다가 결국 다른 블로그를 찾아본 문제다

 

파이썬에 combination 과 Counter라는 내장함수가 있는데

from itertools import combinations
print(list(combinations("ABCFG",2)))

# 출력
[('A', 'B'), ('A', 'C'), ('A', 'F'), ('A', 'G'), ('B', 'C'),
('B', 'F'), ('B', 'G'), ('C', 'F'), ('C', 'G'), ('F', 'G')]

이렇게 모든 조합의 경우의 수가 출력된다
from collections import Counter
counter = Counter(temp)

# 출력
Counter({('A', 'C'): 4, ('C', 'D'): 3, ('C', 'E'): 3, ('D', 'E'): 3, ('B', 'C'): 2, ('B', 'F'): 2, ('B', 'G'): 2, ('C', 'F'): 2,
('C', 'G'): 2, ('F', 'G'): 2, ('A', 'D'): 2, ('A', 'E'): 2, ('A', 'B'): 1, ('A', 'F'): 1, ('A', 'G'): 1, ('A', 'H'): 1, ('C', 'H'): 1, ('D', 'H'): 1, ('E', 'H'): 1})

## 위와같이 경우의 수를 딕셔너리 형태로 몇개인지 세어준다!

이 두 내장함수를 잘 활용하여 푸신 분들이 계셨다..

 

from itertools import combinations
from collections import Counter

def solution(orders, course):
    answer = []
    for c in course:
        temp = []
        for order in orders:
            combi = combinations(sorted(order), c)
            temp += combi
        counter = Counter(temp)
        print(counter)
        if len(counter) != 0 and max(counter.values()) != 1:
            answer += [''.join(f) for f in counter if counter[f] == max(counter.values())]
    return sorted(answer)

 

댓글