[백준][Python] 14235번 크리스마스 선물 - 실버 3
·
백준/우선순위 큐
https://www.acmicpc.net/problem/14235 14235번: 크리스마스 선물 크리스마스에는 산타가 착한 아이들에게 선물을 나눠준다. 올해도 산타는 선물을 나눠주기 위해 많은 노력을 하고 있는데, 전세계를 돌아댕기며 착한 아이들에게 선물을 나눠줄 것이다. 하지만 www.acmicpc.net 문제 풀이 우선순위 큐를 활용해서 가치가 가장 높은 선물부터 아이들에게 나눠줄 수 있게 코드를 짰습니다. 코드 # 14235번 크리스마스 선물 from heapq import heappush, heappop n = int(input()) values = [] for _ in range(n): a = list(map(int, input().split())) if a[0] == 0: # 아이를 만났고 ..
[백준][Python] 15903번 카드 합체 놀이 - 실버 1
·
백준/우선순위 큐
https://www.acmicpc.net/problem/15903 15903번: 카드 합체 놀이 첫 번째 줄에 카드의 개수를 나타내는 수 n(2 ≤ n ≤ 1,000)과 카드 합체를 몇 번 하는지를 나타내는 수 m(0 ≤ m ≤ 15×n)이 주어진다. 두 번째 줄에 맨 처음 카드의 상태를 나타내는 n개의 자연수 a1, www.acmicpc.net 문제 풀이 주어진 카드들 중에서 가장 작은 숫자의 카드를 2장 뽑아서 합한 수를 두 카드의 숫자에 새롭게 넣어주면 된다. min()으로 구현해줘도 되지만, heapq르 활용하여 우선순위 큐 방법으로 풀어주었습니다. 코드 # 15903번 카드 합체 놀이 from heapq import heappush, heappop, heapify n , m = map(int,..
[백준][Python] 13717번 포켓몬 GO - 실버 5
·
백준/구현
https://www.acmicpc.net/problem/13717 13717번: 포켓몬 GO 첫 번째 예제에서 지우가 어떻게 뿔충이(Weedle)를 진화시켰는지 보자. 처음 진화를 위해 지우는 12개의 사탕을 사용하였지만 2개를 돌려받아 32개의 사탕이 남는다 (42-12+2). 두 번째 진화 후엔 22 www.acmicpc.net 문제 모바일 게임을 즐겨 하는 지우는 Jetpack Joyride 에 금새 질렸고 포켓몬 GO를 시작했다! 이 게임의 재미있는 점은 포켓몬을 진화시킬 수 있다는 것이다. 지우가 Pi 라는 포켓몬을 진화시키기 위해서는 해당 포켓몬의 Ki 개의 사탕이 필요하다. 진화가 된 후에는 2개의 사탕을 돌려받는다. 각 포켓몬은 그들 종의 사탕으로만 진화할 수 있다. 지우는 N종의 포켓몬..
[백준][Python] 19238번 스타트 택시 - 골드 2
·
백준/DFS&BFS
https://www.acmicpc.net/problem/19238 19238번: 스타트 택시 첫 줄에 N, M, 그리고 초기 연료의 양이 주어진다. (2 ≤ N ≤ 20, 1 ≤ M ≤ N2, 1 ≤ 초기 연료 ≤ 500,000) 연료는 무한히 많이 담을 수 있기 때문에, 초기 연료의 양을 넘어서 충전될 수도 있다. 다 www.acmicpc.net 문제 문제에 대한 자세한 내용은 백준에서 참고해주세요 풀이 1. 택시 운전자는 가장 가까운 거리에 있는 고객을 먼저 태워야 합니다. (만일 같은 거리에 존재하는 고객이 여러 명이라면 최소 행 위치에 있는 고객을 태우며, 같은 행에 존재하는 고객이 여러 명이라면 최소 열 위치에 있는 고객을 태운다) 이 때 정렬이 필요함을 알 수 있습니다. 2. 택시 운전자의 ..
[백준][Python] 10799번 쇠막대기 - 실버 2
·
백준/스택 & 큐
https://www.acmicpc.net/problem/10799 10799번: 쇠막대기 여러 개의 쇠막대기를 레이저로 절단하려고 한다. 효율적인 작업을 위해서 쇠막대기를 아래에서 위로 겹쳐 놓고, 레이저를 위에서 수직으로 발사하여 쇠막대기들을 자른다. 쇠막대기와 레이저 www.acmicpc.net 문제 풀이 1. 레이저를 뜻하는 ')' 과 쇠막대기의 끝점임을 알리는 ')'의 구분이 필요한 문제여서 flag라는 변수에 직전에 나왔던 문자를 저장해줘서 i 이전에 나온 문자에 따라 레이저인지 쇠막대기인지 구분해주었다. 만일 flag에 '('가 저장되었을 경우에 i가 ')'이면 레이저를 뜻하고, flag에 ')'가 저장되었을 경우에 i가 ')'이면 쇠막대기의 끝점을 뜻한다. 2. 쇠막대기의 끝점이 등장하면 ..
[백준][Python] 5397번 키로거 - 실버 2
·
백준/스택 & 큐
https://www.acmicpc.net/problem/5397 5397번: 키로거 첫째 줄에 테스트 케이스의 개수가 주어진다. 각 테스트 케이스는 한줄로 이루어져 있고, 강산이가 입력한 순서대로 길이가 L인 문자열이 주어진다. (1 ≤ L ≤ 1,000,000) 강산이가 백스페이스를 입 www.acmicpc.net 문제 풀이 처음에는 리스트 한 개와 인덱스를 이용해서 커서의 위치를 구현해주려 했으나 커서를 기준으로 오른쪽과 왼쪽의 문자를 알려주는 두 개의 리스트를 사용하면 훨씬 쉽게 구현할 수 있다는 것을 알게 되었습니다. [커서 기준 왼쪽 문자들] 커서 [커서 기준 오른쪽 문자들] 이렇게 구현하면 훨씬 쉽게 구현할 수 있다. 정답을 출력할 때 오른쪽 문자들은 마지막에 한번 뒤집어줘야한다. appen..
[백준][Python] 16235번 인구이동 - 골드 4
·
백준/DFS&BFS
https://www.acmicpc.net/problem/16234 16234번: 인구 이동 N×N크기의 땅이 있고, 땅은 1×1개의 칸으로 나누어져 있다. 각각의 땅에는 나라가 하나씩 존재하며, r행 c열에 있는 나라에는 A[r][c]명이 살고 있다. 인접한 나라 사이에는 국경선이 존재한다. 모 www.acmicpc.net 문제 풀이 한칸 당 독립적인 국가라고 생각하면 됩니다. 이동 가능한 경로를 dxys 튜플을 통해 정의하고, 너비 우선 탐색(BFS)를 통해서 연합이 될 수 있는 국가인지 확인하기로 했습니다. 여기서 연합이 될 수 있는 조건은 두 국가의 인구 차이가 L 이상 R 이하이면 조건을 만족합니다. visited 배열을 boolean으로 관리하여, 해당 국가를 방문했는지 여부를 체크합니다. 인..
[백준][Python] 6118번 숨바꼭질 - 코팩
·
백준/DFS&BFS
https://www.acmicpc.net/problem/6118 6118번: 숨바꼭질 재서기는 수혀니와 교외 농장에서 숨바꼭질을 하고 있다. 농장에는 헛간이 많이 널려있고 재서기는 그 중에 하나에 숨어야 한다. 헛간의 개수는 N(2
개발자 성현
'백준' 태그의 글 목록