본문 바로가기

전체 글40

[백준] 20006 랭킹전 대기열 - Python 문제 https://www.acmicpc.net/problem/20006 20006번: 랭킹전 대기열 모든 생성된 방에 대해서 게임의 시작 유무와 방에 들어있는 플레이어들의 레벨과 아이디를 출력한다. 시작 유무와 플레이어의 정보들은 줄 바꿈으로 구분되며 레벨과 아이디는 한 줄에서 공백 www.acmicpc.net 위 문제는 주어진 조건을 착실히 구현하면 해결할 수 있는 문제 입니다. 플레이어가 입장 시 방이 없으면 새로운 방을 생성해주고, 레벨과 닉네임을 입력해줍니다. 방이 존재하고, 꽉 차지 않았으며, 처음으로 입장한 유저의 레벨 - 10 ≤ 플레이어의 레벨 ≤ 처음으로 입장한 유저의 레벨 + 10 라면 해당 방에 들어가도록 합니다. 방의 정원이 모두 차있다면 새로운 방을 만들어줌으로써 문제의 핵심 로.. 2023. 5. 31.
[백준] 2075 N번째 큰 수 - Python 문제 https://www.acmicpc.net/problem/2075 2075번: N번째 큰 수 첫째 줄에 N(1 ≤ N ≤ 1,500)이 주어진다. 다음 N개의 줄에는 각 줄마다 N개의 수가 주어진다. 표에 적힌 수는 -10억보다 크거나 같고, 10억보다 작거나 같은 정수이다. www.acmicpc.net 위 문제는 우선순위 큐를 활용해 해결해야 하는 문제입니다. NxN 크기의 표에서 N번째 큰 수를 찾아야 하는 문제로, 행 단위로 원소들을 입력받은 후 크기를 비교해 나가야 합니다. 그러나 제약 조건의 주어진 메모리 크기가 매우 작기 때문에 우선순위 큐의 크기를 N으로 유지해야 합니다. 우선순위 큐의 크기가 N보다 크면, 다음으로 들어오는 원소가 큐의 가장 앞에 있는 원소보다 큰 경우에만 삽입하도록 .. 2023. 5. 31.
[프로그래머스] 2022 KAKAO TECH INTERNSHIP 두 큐 합 같게 만들기 - Python 문제 https://school.programmers.co.kr/learn/courses/30/lessons/118667 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 위 문제는 두 큐의 원소 합을 같게 만들기 위해 필요한 작업의 최소 횟수를 리턴해야 하는 문제 입니다. 두 큐의 원소 합이 같다는 것은 각 큐의 합이 (두 큐의 모든 원소의 합 / 2)와 같다는 것을 의미합니다. 따라서 이를 타겟값으로 설정합니다. 초기 상태에 타겟값보다 큰 원소합을 가진 큐를 기준으로 pop()과 append()를 진행하며 각 큐의 원소합을 새롭게 갱신해줍니다. 이 후, .. 2023. 5. 30.
[백준] 11508 2 + 1 세일 - Python 문제 https://www.acmicpc.net/problem/11508 유제품을 한번에 사게 되면 가장 싼 것은 무료이고, 나머지 두개 가격만 지불한다는 조건이 주어져 있습니다. 이러한 조건에서 최소비용으로 유제품을 구입하기 위해서는 유제품들의 가격들을 내림차순 정렬해주어야 합니다. 무료로 지불해야 할 가격이 최대한 비싼 것으로 만들어주어야 하기 때문입니다. 이 후, 2번째 물건이 더해지지 않도록 코드로 구현해주면 해결할 수 있습니다. Python import sys input = sys.stdin.readline n = int(input()) greek = [int(input()) for i in range(n)] greek.sort(reverse=True) answer = 0 for i in ran.. 2023. 5. 24.
[백준] 11399 ATM - Python 문제 https://www.acmicpc.net/problem/11399 11399번: ATM 첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000) www.acmicpc.net 위 문제는 각 사람이 돈을 인출하는데 필요한 시간의 합의 최솟값을 구해주어야 합니다. 이는 곧 각 사람의 (대기 시간 + 인출 시간)이 짧아야 함을 의미합니다. 따라서 인출 시간이 짧은 사람들이 순차적으로 나열되도록 오름차순 정렬해줍니다. 이 후, 각 사람이 돈을 인출하는데 걸리는 시간과 대기시간을 더해줌으로써 각 사람이 돈을 인출하는데 필요한 시간의 합의 최솟값을 구해줄 수 있습니다. Python #ATM n = int.. 2023. 5. 24.
[백준] 1758 알바생 강호 - Python 문제 https://www.acmicpc.net/problem/1758 1758번: 알바생 강호 첫째 줄에 스타박스 앞에 서 있는 사람의 수 N이 주어진다. N은 100,000보다 작거나 같은 자연수이다. 둘째 줄부터 총 N개의 줄에 각 사람이 주려고 하는 팁이 주어진다. 팁은 100,000보다 작거나 같 www.acmicpc.net 위 문제는 강호가 받을 수 있는 팁의 최댓값을 구해주어야 합니다. 팁은 (각 손님이 원래 생각했던 금액) - (받은 등수 -1)로 계산할 수 있으므로, 팁의 최댓값을 구하기 위해서는 주어지는 각 손님의 원래 손님이 생각했던 금액을 내림차순 정렬해주어야 합니다. 이를 통해 팁을 앞부터 순차적으로 구해주면 팁의 최댓값을 구해줄 수 있습니다. Python import sys in.. 2023. 5. 24.