Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
주 목표 문제 수: 5개
백준 #13417. 카드 문자열: 그리디, 문자열, 덱 / 실버3
정리한 링크: (바로가기)
🚩플로우 (선택)
특정 한 카드를 기준으로 하지 않고, 매번 새로운 카드를 가져올 때마다 현재 문자열의 가장 앞 글자와 비교하여 알파벳을 맨 왼쪽이나 오른쪽에 배치해야 한다.
(난 비록, 가장 첫 카드가 기준이 되는 건 줄 알고, 틀렸다만..)가져온 카드가 현재 문자열의 가장 앞 글자보다 작거나 같으면 왼쪽에, 그렇지 않으면 오른쪽에 배치한다.
리스트에서 맨 앞에 있는 값을 가져와야 하므로
deque자료형과popleft함수를 활용한다.t만큼 아래 과정을 반복한다.n을 입력받고, 카드를alphabet리스트에 저장한 뒤deque자료형으로 변환한다.answer에 저장한다.alphabet리스트의 요소가 모두 없어질 때까지 아래 과정을 반복한다.alphabet에서 가장 앞 카드(current)를 꺼낸다.answer의 가장 앞 문자와current를 비교하여current가 더 작거나 같으면 맨 앞에, 그렇지 않으면 맨 뒤에 추가한다.answer를 출력한다.🚩제출한 코드
💡TIL
deque자료형에appendleft()함수도 있다는 것을 알게 되었다. 다음에 나도 적절한 때에 활용해봐야겠다.백준 #2847. 게임을 만든 동준이: 그리디 / 실버4
정리한 링크: (바로가기)
🚩플로우 (선택)
N과 각 레벨의 점수 리스트scores를 입력받는다.answer를 초기화한다.answer에 감소 횟수를 누적한다.answer를 출력한다.answer를 출력한다.🚩제출한 코드
💡TIL
백준 #31926. 밤양갱: 그리디 / 실버1
정리한 링크: (바로가기)
🚩플로우 (선택)
daldida(n)을 추가하는 데 2초가 필요하므로 기본적으로 10초가 필요하다.n이 2, 4, 8, ... 등 2의 거듭제곱에 해당할 때마다 시간이 1초씩 추가된다.즉, 필요한 총 시간은 기본 시간 10초에 n의 거듭제곱 레벨에 해당하는 추가 시간을 더한 값이 된다.
n을 입력받는다.구해야 하는 최소 시간은
answer변수로 설정하고, 기본 시간은 10초로 설정한다.(
(d)(a)(l)(d)(i)(dal)(g)(o)8초와(daldida)(n)2초로 총 10)n이 2의 거듭제곱이 될 때마다 시간을 1 증가시키기 위해서n을 계속 절반씩 나누어가면서 1이 될 때까지 반복한다.반복 횟수에 따라
answer를 누적하여 증가시킨다.구한
answer값을 출력한다.🚩제출한 코드
💡TIL
8 + (n-1) + 2로 계산했다. 계산은 되었지만 최소 시간이 아니었다는 점을 나중에 깨달았다. 이 점을 문제 처음 풀 때 알았어야 했는데 그걸 몰라서 좀 헛걸음했던 것 같다.백준 #2212. 센서: 그리디 / 골드5
정리한 링크: (바로가기)
🚩플로우 (선택)
distances리스트에 저장한다.k개의 구간으로 나누기 위해, 거리 차이를 큰 순서로 정렬한 후, 가장 큰 거리 차이부터 순차적으로 제거해k개의 구간을 만든다.나는 여기서 구간을 나누는 것을
슬라이싱으로 접근했다.n, 집중국의 개수k, 센서의 좌표 리스트pos를 입력받는다.pos리스트를 중복 정렬을 제거하고 정렬한다.distances리스트에 저장한다.k-1부터 마지막 요소 부분 합을 구하여k개의 집중국을 세울 때 최소화되는 수신 가능 영역의 거리 합을 계산하여min_dist_sum에 저장한다.min_dist_sum을 출력한다.🚩제출한 코드
💡TIL
백준 #1374. 강의실: 그리디, 힙 / 골드5
정리한 링크: (바로가기)
🚩플로우 (선택)
min_heap)에 종료 시간을 저장하며, 새로 시작하는 강의의 시작 시간을 힙의 최솟값과 비교한다.n과 강의 정보rooms를 입력받아 저장한다.rooms는 강의 시작 시간을 기준으로 정렬한다.min_heap을 초기화한다. 이 힙은 강의 종료 시간을 저장한다.cnt도 초기화한다.rooms)를 순회하며,min_heap)에 값이 존재하고,min_heap의 첫 값(현재 강의의 시작 시간)이 가장 빠르게 끝나는 시간보다 크거나 같으면, 해당 강의를 힙에서 pop한다. (해당 강의는 기존 가장 일찍 끝나는 시간이 지나 이어서 강의할 수 있기 때문)minheap)에 추가한다.min_heap의 길이, 즉 강의 수를 구해서 그 중에서 가장max값을 구하여 최소 강의실 수를 구해 cnt에 값을 업데이트한다.cnt를 출력한다.🚩제출한 코드
💡TIL
heapq모듈은 최소 힙 구현이 간편하다는 장점이 있다.heapq모듈을 활용하여 강의실 개수를 효율적으로 계산했다.