본문 바로가기

백준55

🧑‍💻 [Python] 백준 14235 - 크리스마스 선물 🧑‍💻 [Python] 백준 14235 - 크리스마스 선물 Silver 3 - Heap 입력된 값을 순회한다 입력된 값이 0이 아니면 선물을 충전하는 거점 0은 아이들의 집이다 문제풀이 입력 값들을 튜플로 받아서 리스트에 넣는다 그리고 for문을 순회하며 0인지 아닌지 구별한다 0이 아니면 선물을 충전하는 거점 즉 heap에 최대힙으로 선물에 대한 숫자를 넣는다 0이면, heap에 선물이 들어 있는지 없는지를 구별한다 heap에 숫자가 있으면, 제일 앞에 있는 숫자, 즉 제일 큰 숫자를 출력한다 없으면 해당 아이에게 줄 선물이 없다는 것. 즉 -1을 출력한다 코드 import heapq N = int(input()) stops = [] for _ in range(N): stops.append(tuple(.. 2023. 1. 16.
[Python] 백준 13904 - 과제 🧑‍💻 [Python] 백준 13904 - 과제 Gold 5 - 정렬 과제 마감일과, 과제 점수가 주어진다 하루에 한 과제를 끝낼 수 있다 즉 과제 점수 기준으로 내림차순으로 해서, 최대한 많은 점수를 얻으려고 한다 문제풀이 과제 관련 정보를 입력 받는다 그리고 일수가 있는 리스트를 만든다 이 리스트는, 어느 날에 과제를 완료했는지 확인하는 리스트다 즉 False가 있고, True로 그 날 과제를 완료했다고 표시한다 그리고 과제들을 과제 점수가 높은 과제 기준으로 내림차순으로 정렬을 한다 for문을 사용하여 과제들을 순회한다 여기서 과제를 끝내야 하는 날이 제일 기준 index가 된다 만약에 과제를 끝내야 하는 날이 False일 경우, True로 바꿔주고 answer에 과제 점수를 누적시켜준다 과제를 끝.. 2023. 1. 15.
[Python] 백준 2437 저울 🧑‍💻 백준 2437 저울 Gold 2 주어진 저울 추의 무게들을 오름차순으로 정렬을 한다 그 저울 추들을 가지고 1부터 몇 번까지 무게를 측정할 수 있는지 구하는 것이다 예를 들어 주어진 저울 추들로 1부터 20까지 무게를 측정할 수 있다. 그러면 답은 21이다. (21부터는 무게를 측정하기 어려우니깐) 문제 풀이 먼저 주어진 리스트를 오름차순으로 정렬을 한다 target을 주어야 하는데, target은 1부터 시작한다. 위에 예시처럼 1부터 20까지 무게를 측정할 수 있지만, 21부터는 측정하기 어려우니 20 + 1을 해야 해서 target을 1로 저장을 한다 그리고 weight리스트를 순회를 한다 여기서 target보다 순회하는 저울추가 더 크면 for문을 끝낸다 target보다 순회하는 저울추가 .. 2023. 1. 11.
[Python] 백준 6068 시간 관리하기 🧑‍💻 [Python] 백준 6068 시간 관리하기 Gold 5 - 정렬 하루는 0 시간부터 시작한다 농부가 주어진 일을 끝내기 위해, 얼마나 더 잘 수 있는지 시간을 구하는 것이다 하루를 시작하는 시간을 구하는 것이기 때문에, 시작하는 시간 기준으로 문제를 해결하면 된다 문제 풀이 입력을 받을 때, 일을 끝내기 위해 필요한 시간과, 일을 끝내야 하는 시간이 주어진다 여기서 일을 끝내야 하는 시간 기준으로 오름차순으로 정렬을 한다 hour 같은 경우, 하루를 시작하는 기준이 0 이니깐, 0부터 시작을 한다 while문을 통해, 일을 끝내야 하는 시간 안에 모든 일들을 할 수 있으면 1씩 더해준다 time에 일을 끝내기 위해 필요한 시간을 계속 더해준다 만약 여기서 time 이 일을 끝내야 하는 시간보다 .. 2023. 1. 9.
[Python] 백준 1946 신입 사원 🧑‍💻 [Python] 백준 1946 신입 사원 Silver 1 - 정렬 서류 성적과 면접 성적 중 적어도 하나가 다른 지원자보다 떨어지지 않으면 선발을 한다 즉 서류 성적, 면접 성적 모두, 다른 지원자보다 낮으면 떨어지는 것이다 문제 풀이 먼저 서류 성적 기준으로 정렬을 한다 그리고 면접 성적들을 비교를 한다 제일 처음 기준을 서류 면접에서 1등 한 사람 기준으로 간다 서류 면접 1등 사람 기준(A)으로 면접 성적이 더 우수하다면, 그 사람도 (B) 신입 사원으로 뽑힐 수 있다 그 다음부터는 B의 면접 성적 기준으로 비교를 한다. (이렇게 계속 면접 성적 기준을 바꿔주면서 비교를 하며 뽑힐 수 있는 신입 사원의 수를 구한다) 정렬한 기준, 제일 앞에 있는 사람은 무조건 신입사원으로 뽑힌다. 서류가 1.. 2023. 1. 9.
[Python] 백준 1253 - 좋다 🧑‍💻 백준 1253 - 좋다 Gold 4 - 정렬 리스트 안에 있는 어떤 수를, 리스트 안에 있는 두 수의 합으로 나타낼 수 있는 수의 개수를 구하는 것이다 여기서 놓치지 말아야 할 것은, 숫자의 값이 같아도 위치가 다르면 다른 숫자로 간주한다 예시) 원래 그냥 리스트를 정렬을 한 후, 투 포인터를 이용해서 더해서, 더한 숫자가 리스트에 있는지 확인만 하면 되는 줄 알았다 그렇게 되면, 다른 위치에 있어도, 같은 값의 숫자가 카운팅이 잘 안 될 수 있다 그래서 숫자 하나하나 씩 빼고, 그 외의 숫자들을 투 포인터를 사용해서 그 뺐던 숫자와 일치하는지 더해주면 된다 문제 풀이 위 각 변수들의 설명 i : for문을 통해서 정렬된 리스트에 있는 값들을 가지고 온다 (range를 가지고 오면 됨) temp .. 2023. 1. 5.
[Python] 백준 11497 - 통나무 건너뛰기 🧑‍💻 백준 11497 - 통나무 건너뛰기 Silver 1 - 정렬 인접한 통나무 높이의 차를 최소화 하는 문제다 여기서 제일 중요한 것은 통나무를 원형으로 세워 놓는 것이라서, 제일 앞과 제일 뒤에 있는 숫자도 높이의 차에 포함을 해야 한다 즉 단순히 정렬을 하게 된다면, 제일 앞에 있는 숫자와 제일 뒤에 있는 숫자의 차가 제일 커서, 답을 구할 수 없다 예시) 문제 풀이 먼저 정렬을 해야 하긴 한다 (오름차순으로 정렬을 했다) For문을 순회할 때 Index가 짝수 일 때 현재 index에서 빼기를 한다 index를 빼는 것은 0으로 시작해서, 뺄 때마다 -1 씩 누적을 시킨다 For문을 순회할 때 Index가 홀수 일 때 현재 index에서 같이 빼기를 한다 index를 빼는 것은 -2로 시작해서,.. 2023. 1. 4.
[Python] 백준 2108 - 통계학 🧑‍💻 백준 2108 - 통계학 Silver 3 - 정렬 산술과 딕셔너리를 주로 사용하면 쉽게 풀 수 있는 문제다 문제에서 구하라는 산술평균, 중앙값, 최빈값, 범위를 구하면 된다 산술평균은, 주어진 값들을 전부 더하고, 더한 값에서 주어신 숫자들의 수로 나누면 된다 중앙값은, 주어진 숫자들 중 중앙에 배치된 숫자를 구한다 (오름차순으로 정렬을 해야 한다) 최빈값은 중복 숫자가 제일 많은 숫자를 구한다. 만약에 2개 이상이 나오면, 중복 숫자가 많은 숫자들 중 2번째로 작은 숫자를 구한다 범위는 숫자들 중 최댓값과 최솟값의 차이를 구한다 예시) 문제 풀이 N이라는 숫자들의 개수를 준다 산술평균 숫자들을 sum을 이용해서 더해주고, N으로 나눈다 중앙값 오름차순으로 숫자들을 정렬하고, N을 2로 나눈다 그.. 2023. 1. 3.
[Python] 백준 1744 - 수 묶기 🧑‍💻 백준 1744 - 수 묶기 GOLD 4 주어진 숫자들을 더해서 제일 큰 수를 만드는 것 숫자들을 2개씩 묶어서 곱할 수 있다 즉 큰 숫자들끼리 묶어서 곱하면, 합을 최대로 만들 수 있다 문제 풀이 주어진 숫자들을 리스트에 넣을 때에, 양수 리스트와 음수 리스트에 따로따로 넣는다 즉 리스트가 2개다. 여기서 0 은 음수 리스트에 넣는다 양수 리스트는 내림차순으로 / 음수 리스트는 오른차순으로 정렬을 한다 deque를 사용한다 이유는 제일 앞에 있는 숫자들을 pop을 해야하는데, pop은 리스트에 있는 제일 마지막 숫자를 꺼낸다 첫번째 숫자를 빠른 속도록 꺼내기 위해서 popleft를 사용해야하는데, deque를 적용해야 사용할 수 있음 while문을 통해 양수 리스트와 음수 리스트에 있는 숫자 꺼내.. 2023. 1. 1.