본문 바로가기

Python3

[백준] 2637번: 장난감 조립 | Python 2637번: 장난감 조립 첫째 줄에는 자연수 N(3 ≤ N ≤ 100)이 주어지는데, 1부터 N-1까지는 기본 부품이나 중간 부품의 번호를 나타내고, N은 완제품의 번호를 나타낸다. 그리고 그 다음 줄에는 자연수 M(3 ≤ M ≤ 100)이 주 www.acmicpc.net 틀린 이유 1. 처음엔 dp[7]로 제출했다. (멍청...) 2. N개의 노드가 주어졌을 때, 기본 부품, 중간 부품을 거쳐 완제품이 되는 노드가 N번임을 가정하고 다이내믹 프로그래밍으로 풀었다. (dp[N]=1 에서 시작) 정답 코드 각 노드 간 선후관계를 생각해야 할 땐 위상 정렬을 사용한다. 위상 정렬된 topology[N-1]가 완제품 노드임을 이용해 다시 다이내믹 프로그래밍으로 풀었다. 완제품부터 기본부품까지 탑다운(?)으로 .. 2022. 12. 10.
이것이 취업을 위한 코딩 테스트다 with Python 독서기간_2022년 11월 25일 ~ 2022년 12월 1일 저자_나동빈 코딩 테스트 알고리즘 입문 도서로 추천한다. 언어 선택 기준부터 시작해 기본적인 알고리즘을 코드 예제와 함께 쉽게 설명한다. 나는 백준을 어느정도 풀었었고, 이 책을 읽기 앞서 빡빡한 이론서 두 권을 읽었더니 쉽게 느껴졌다. 입문자에게도 Python의 직관성 덕분에 코드 해석하는 데 어렵지 않을 것이다. 책에서 어려운 알고리즘이라고 해봤자 위상정렬 정도이다. 백준 문제를 풀면서 Union-Find, MST, 크루스칼 이론을 따로 따로 공부했었는데, 세 가지 모두 연관되어 있다는 것을 알았다. 수준이 높아질수록 각 알고리즘의 연관 관계를 생각하며 공부하자. 아직 그리디스러운 발상이 어려운데... 많은 문제를 접하다보면 연상할 수 있을.. 2022. 12. 3.
[프로그래머스] Lv4 무지의 먹방 라이브 | Python 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 먹는 시간이 적은 순으로 정렬해서 (먹는 시간 - 전 음식 먹는 시간) * (음식 개수) 로 k에 천천히 빼주는 식으로 접근했다. 그러다보니 k==0 일 때 k=tmp: k-=tmp prev=hq.heappop(heap)[0] size-=1 else: idx=k%size heap.sort(key= lambda a:a[1]) answer=heap[idx][1] break return answer 2022. 12. 1.