-
알고리즘 공부 23일차알고리즘 공부 2023. 1. 23. 05:41
오늘은 총 8문제 정도 푼 것 같다. 오후에, 저녁에, 새벽 내내 계속 풀어서 정확한 개수가 기억이 나진 않는다. 확실한 것은 지금 난 엄청 머리가 안돌아간다는 것이다.
오늘도 어김없이 프로그래머스 2단계 중 카카오 문제에 막혔다. 매번 카카오 문제를 보면 너무 복잡하게만 생각하는 것 같다. 오늘은 그래서 내가 정말 복잡하게 구현하다 어떤 분의 풀이를 보고 이렇게 간단하게?!! 하고 놀란 프로그래머스의 메뉴 리뉴얼 문제를 풀어보고자 한다.
https://school.programmers.co.kr/learn/courses/30/lessons/72411
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
https://dev-note-97.tistory.com/128
[프로그래머스] 메뉴 리뉴얼 / Python
문제주소 :programmers.co.kr/learn/courses/30/lessons/72411 코딩테스트 연습 - 메뉴 리뉴얼 레스토랑을 운영하던 스카피는 코로나19로 인한 불경기를 극복하고자 메뉴를 새로 구성하려고 고민하고 있습니다
dev-note-97.tistory.com
위는 참고 블로그 글이다. 처음에 나는 각각 원소별로 겹치는 것을 찾아 겹치는 것들을 combination 한뒤에 개수를 세는 식으로 구현하려 했다. 그런데 그렇게 구현할 경우 너무 코드가 복잡해져서 중간에 원소들이 자꾸 햇갈려오기 시작했다. 그래서 이렇게 푸는건 아닌 것 같다는 판단에 다른 사람들의 풀이를 참고하게 되었다. 그런데 저 블로그에서 내가 쓰던 코드에 반절 정도의 길이로 해결하는 것을 보고 놀랐다. 저번에도 Counter를 쓰는 풀이를 본적 있지만 아직 실제로 활용해 본적은 없었는데 이런 문제에 적극적으로 활용하면 코드가 정말 짧아지겠구나 라는 생각이 들었다. 항상 도구를 많이 못다루는 것이 문제인 것 같다. 도구를 최대한 활용하자. 오늘은 combination과 Counter부터. 아래는 내가 위의 블로그를 참고해서 짠 코드이다.(사실 마지막 줄 빼곤 거의 같다)
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: for f in counter: if counter[f]==max(counter.values()): answer+=[''.join(f)] answer.sort() return answer
'알고리즘 공부' 카테고리의 다른 글
알고리즘 공부 25일차 (0) 2023.01.25 알고리즘 공부 24일차 (0) 2023.01.24 알고리즘 공부 22일차 (0) 2023.01.22 알고리즘 공부 21일차 (1) 2023.01.20 알고리즘 공부 20일차 (0) 2023.01.19