본문 바로가기

baekjoon46

[알고리즘/baekjoon] 7662_이중 우선순위 큐(python) 문제 https://www.acmicpc.net/problem/7662 7662번: 이중 우선순위 큐 입력 데이터는 표준입력을 사용한다. 입력은 T개의 테스트 데이터로 구성된다. 입력의 첫 번째 줄에는 입력 데이터의 수를 나타내는 정수 T가 주어진다. 각 테스트 데이터의 첫째 줄에는 Q에 적 www.acmicpc.net # 이 문제의 핵심의 최대힙과 최소힙을 둘 다 사용하는데, 삽입할 때는 상관 없지만 삭제할 때 최대힙과 최소힙은 조건이 다르기 때문에 동기화가 필요하다 -> i를 사용(투플 비교연산) # 조건이 다르다는 말을 이해못한다면 최소힙은 최소값을 삭제할 수 있지 최대 값을 바로 삭제할 수는 없다. 그 반대도 마찬가지라는 의미이다. # 작동 순서 # 테스트 케이스만큼 반복하고 연산의 수만큼 반복하.. 2021. 12. 2.
[알고리즘/baekjoon] 10026_적록색약(python) 문제 https://www.acmicpc.net/problem/10026 10026번: 적록색약 적록색약은 빨간색과 초록색의 차이를 거의 느끼지 못한다. 따라서, 적록색약인 사람이 보는 그림은 아닌 사람이 보는 그림과는 좀 다를 수 있다. 크기가 N×N인 그리드의 각 칸에 R(빨강), G(초록) www.acmicpc.net # dfs, bfs 두가지 방법으로 풀 수 있다. 필자는 bfs로 푸는 것을 좋아한다! # 일반인의 경우와 적록색약인 사람의 경우 두가지로 나눠서 풀이하면 쉽다. # dfs 함수에 넣기 전에 적록색약인 사람은 "R"과 "G" 둘다 "R" 로 처리해주면 된다. # dfs 함수의 인자로 위치(i,j), 해당 그래프, 방문위치 저장하는 리스트를 넘겨준다. import sys from col.. 2021. 12. 2.
[알고리즘/baekjoon] 1107_리모컨(python) 문제 https://www.acmicpc.net/problem/1107 1107번: 리모컨 첫째 줄에 수빈이가 이동하려고 하는 채널 N (0 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 고장난 버튼의 개수 M (0 ≤ M ≤ 10)이 주어진다. 고장난 버튼이 있는 경우에는 셋째 줄에는 고장난 버튼 www.acmicpc.net # 이 문제는 세 가지 경우를 생각해야한다. # 첫 번째는 ++, --로 목표 값을 만드는 방법 # 두 번째는 번호로 바로 목표 값을 만드는 방법 # 첫 번째 방법과 두 번째 방법을 섞은 방법 # 그리고 range 500,000이 아닌 1,000,000인 것을 파악해야한다. target = int(input()) ans = abs(100 - target) # ++ or -- .. 2021. 11. 30.
[알고리즘/baekjoon] 5430_AC(python) 문제 https://www.acmicpc.net/problem/5430 5430번: AC 각 테스트 케이스에 대해서, 입력으로 주어진 정수 배열에 함수를 수행한 결과를 출력한다. 만약, 에러가 발생한 경우에는 error를 출력한다. www.acmicpc.net # 첫 시도는 문자열 슬라이싱으로 해결하는데 복잡해서 고민하다가 deque으로 구현하면 쉽다고 판단 # R이 들어올때마다 reverse를 해주면 시간초과 -> 그럼 어떻게 ? # R의 횟수를 저장하여 홀수로 들어오면 pop을 해주고 마지막에 reverse를 해준다. R의 횟수가 짝수면 popleft만 해주고 그대로 출력해주면 된다. (deque 사용) 정답 from collections import deque t = int(input()) for .. 2021. 11. 30.
[알고리즘/baekjoon] 16928_뱀과 사다리 게임(python) 문제 https://www.acmicpc.net/problem/16928 16928번: 뱀과 사다리 게임 첫째 줄에 게임판에 있는 사다리의 수 N(1 ≤ N ≤ 15)과 뱀의 수 M(1 ≤ M ≤ 15)이 주어진다. 둘째 줄부터 N개의 줄에는 사다리의 정보를 의미하는 x, y (x < y)가 주어진다. x번 칸에 도착하면, y번 칸으 www.acmicpc.net # 주사위를 1부터 6까지 모두 사용할 수도 있는 경우의 수를 구하는 문제이기 때문에 bfs를 사용한다. # 사다리와 뱀은 동시에 있을 수 없기 때문에 하나의 graph에 표현 가능하다. # 이 문제의 핵심은 사다리와 뱀을 어떻게 처리할 것인가 인데 필자는 dictionary로 x값을 주면 y값이 나오도록 구현했다. 정답 from collecti.. 2021. 11. 30.
[알고리즘/baekjoon] 7576_토마토(python) 문제 https://www.acmicpc.net/problem/7576 7576번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N이 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M,N ≤ 1,000 이다. 둘째 줄부터는 하나의 상자에 저장된 토마토 www.acmicpc.net # 2차원 + dfs(deque) -> 간단한 문제 # 필자는 토마토2(3차원 리스트를 이용하는 문제)를 먼저 풀었기 때문에 2차원 리스트만 사용하는 이 토마토 문제는 더 쉽게 느껴졌다. 정답 import sys from collections import deque input = sys.stdin.readline m, n = map(int, input().split()) bo.. 2021. 11. 27.