
💡 문제 해결 아이디어 완주한 선수들의 이름을, 참가자들의 이름에서 하나씩 지워도 될 것 같다. 하지만, 동명이인이 있을 경우에 머리가 아파진다🥲 간단하게, 각 이름마다 사람이 몇명 있는지 세보자! 파이썬 기본 내장 함수인 Counter를 이용해서! 💻 작성된 코드 # Python 내장 함수인 Counter 활용 from collections import Counter def solution(participant, completion): # Counter를 이용하여 이름당 사람수를 센다. part, comp = Counter(participant), Counter(completion) # 모든 참가자들의 이름과 사람수에 대해서 for name, cnt in part.items(): # 만약 해당 이름이 ..

💡 문제 해결 아이디어 적어도 무적권 개수, k개만큼의 라운드는 막을 수 있다: 그러니 k+1번째 라운드부터 시작. 라운드가 진행될 때마다, (기존에 무적권을 썼던 k개 라운드 + 새로운 라운드) 중에서 가장 적은 enemy의 라운드의 무적권 사용을 포기한다. 가장 적은 enemy의 수를 알아내기 위해, 라운드가 진행될때마다 "정렬"하는 것은 비효율적이다. 정렬 대신 최소or최대 값을 뽑아내는데에 최적화된 "heap"이라는 자료구조를 사용하자! 이때, "(무적권 사용을 포기한 라운드의 enemy) > (남아 있는 병사)" 라면 게임종료! 아니라면, enemy만큼 남아 있는 병사를 차감하고, 다음 라운드를 진행한다! 💻 작성된 코드 # heapq 라이브러리 활용 import heapq def solutio..

💡 문제 해결 아이디어 1. 배포가 완료될 때까지 - for문이 아닌 while문의 사용. 2. 리스트의 맨 앞의 요소 제거 - pop(0)의 활용. + 추가 잡기술 - zip: 길이가 같은 리스트를 묶어서 각 리스트의 요소를 동시에 반복하게 할 수 있다. - while 리스트: 조건문에 리스트를 넣으면, 리스트가 비어있으면 False, 리스트가 차있으면 True로 처리된다. 💻 작성된 코드 def solution(progresses, speeds): answer = [] # 모든 배포가 완료될 때까지 while progresses: # 맨 앞의 작업의 진도가 100이 될때까지 while progresses[0] < 100: progresses = [p+s for p, s in zip(progresses..
- Total
- Today
- Yesterday
- 문자열 나누기 파이썬
- 코딩테스트
- leetcode
- heap
- 그리디
- 연습문제
- 프로그래머스 문자열 나누기
- 큐
- 알고리즘
- 프로그래머스 연속된수의합
- 디펜스
- 가장 가까운 글자 파이썬
- stablediffusion
- 프로그래머스 햄버거 만들기
- Low Manifold Theory
- heapq
- 프로그래머스 가장 가까운 글자
- 프로그래머스
- python
- BFS
- 스테이블디퓨전
- 인공지능
- Stable Diffusion
- ChatGPT
- OpenAI
- Attend and Excite
- 코테
- 프로그래머스 아이템줍기
- 프로그래머스 파이썬
- 파이썬
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |