반응형
프로그래머스: 메뉴 리뉴얼 풀이
Counter에 관한 포스팅
2021.06.02 - [(Python)파이썬/(Python)파이썬 문법] - 파이썬 - 리스트 원소 개수 구하기/collections모듈의 Counter클래스 활용 예제
combinations에 관한 포스팅
2021.06.18 - [(Python)파이썬/(Python)파이썬 문법] - (파이썬) 리스트 요소 조합하기/ permutations & combinations
문제풀러가기
https://programmers.co.kr/learn/courses/30/lessons/72411?language=python3
문제 분석
1. 문자열중, 공통된 문자를 찾는 문제이다.
2. course 리스트에 몇개씩 조합하면 되는지, 숫자가 있으므로 course를 활용하여 조합한다.
코드
from collections import Counter
from itertools import combinations
def solution(orders, course):
result=[]
for i in course:
rs=[]
for j in orders:
num = combinations(sorted(j),i)
rs+=num
count = Counter(rs)
if count:
max_count=max(list(count.values()))
if max_count>=2:
for key,value in count.items():
if value==max_count:
result.append(''.join(key))
result.sort()
return result
*이 코드는 다른 분이 짠 코드를 참고하여 작성한 코드입니다.
코드 풀이
from collections import Counter
from itertools import combinations
def solution(orders, course):
result=[]
for i in course: #i개씩 문자를 조합함
rs=[]
for j in orders:
num = combinations(sorted(j),i) #조합하기 전에 j문자열 정렬을 해줌.
rs+=num #rs안에 조합한 문자들을 넣어줌
count = Counter(rs) # Counter을 통해, 똑같은 조합결과가 몇개 있는지 세줌
if count: # Counter에 아무것도 없으면 패스, 있을때 if문 실행
max_count=max(list(count.values())) #Counter안의 값중 제일 큰 값만
if max_count>=2: #제일 큰 값이 2보다 작으면 패스, 2보다 크면 if문 실행
for key,value in count.items(): #Counter(list).items()는 키와 값의 한쌍
if value==max_count:
result.append(''.join(key))
result.sort()
return result
<잡담+배운점>
combinations를 쓴다는 것까지는 생각을 했지만,
Counter이 해시맵과 비슷하게 items()를 쓰고, key와 value값을 사용한다는 것은 생각을 못했다...!!!
반응형
'코딩테스트 > 코딩테스트 문제' 카테고리의 다른 글
코딩테스트 준비 - 프로그래머스: 괄호 회전하기 풀이 (파이썬) (0) | 2021.07.02 |
---|---|
코딩테스트 준비 - 프로그래머스: 튜플/2019 카카오 개발자 겨울 인턴십 풀이 (파이썬) (0) | 2021.07.02 |
코딩테스트 준비 - 프로그래머스: 예상 대진표 풀이 (파이썬) (1) | 2021.07.01 |
코딩테스트 준비 - 프로그래머스: 괄호 변환 풀이/재귀함수 문제 (파이썬) (2) | 2021.07.01 |
코딩테스트 준비 - 프로그래머스: 행렬 테두리 회전하기 풀이(파이썬) (2) | 2021.06.30 |
댓글