전체 글 166

[baekjoon] 백준 5430번 : AC (by python 파이썬) deque, join

https://www.acmicpc.net/problem/5430 5430번: AC 각 테스트 케이스에 대해서, 입력으로 주어진 정수 배열에 함수를 수행한 결과를 출력한다. 만약, 에러가 발생한 경우에는 error를 출력한다. www.acmicpc.net 정답 code #AC from collections import deque import sys input = sys.stdin.readline t = int(input()) for _ in range(t): p = input() n = int(input()) arr = input().rstrip()[1:-1].split(',') #괄호 제외하고 [1~-1]까지 ','제외 입력 arr = deque(arr) r = 0 #reverse 횟수 계산 if n ..

[baekjoon] 백준 2667번 : 단지번호붙이기 (by python 파이썬) bfs

https://www.acmicpc.net/problem/2667 2667번: 단지번호붙이기 과 같이 정사각형 모양의 지도가 있다. 1은 집이 있는 곳을, 0은 집이 없는 곳을 나타낸다. 철수는 이 지도를 가지고 연결된 집의 모임인 단지를 정의하고, 단지에 번호를 붙이려 한다. 여 www.acmicpc.net 정답 code -bfs이용 #단지번호붙이기 #bfs from collections import deque dx = [-1,1,0,0] dy = [0,0,-1,1] def bfs(a,b): n = len(apt) queue = deque() queue.append((a,b)) apt[a][b] = 0 count = 1 while queue: x,y = queue.popleft() for i in ra..

[baekjoon] 백준 11726번 : 2*n 타일링 (by python) 다이나믹프로그래밍

https://www.acmicpc.net/problem/11726 11726번: 2×n 타일링 2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×5 크기의 직사각형을 채운 한 가지 방법의 예이다. www.acmicpc.net 정답 code # 2*n 타일링 import sys input = sys.stdin.readline n = int(input()) sol = [0]*n for i in range(1,n+1): if i == 1: sol[i-1] = 1 elif i == 2: sol[i-1] = 2 else: sol[i-1] = sol[i-2] + sol[i-3] print(sol[-1]%10007) solution 2*n 직사각형에 ..

[baekjoon] 백준 11724번 : 연결 요소의 개수 (by python) dfs,bfs

https://www.acmicpc.net/problem/11724 11724번: 연결 요소의 개수 첫째 줄에 정점의 개수 N과 간선의 개수 M이 주어진다. (1 ≤ N ≤ 1,000, 0 ≤ M ≤ N×(N-1)/2) 둘째 줄부터 M개의 줄에 간선의 양 끝점 u와 v가 주어진다. (1 ≤ u, v ≤ N, u ≠ v) 같은 간선은 한 번만 주 www.acmicpc.net 정답 code -DFS풀이 #연결 요소의 개수 import sys sys.setrecursionlimit(5000) input = sys.stdin.readline #dfs풀이 def dfs(x): visited[x] = True for i in c[x]: if not visited[i]: dfs(i) n, m = map(int,inp..

[baekjoon] 백준 11723번 : 집합 (by python) set

https://www.acmicpc.net/problem/11723 11723번: 집합 첫째 줄에 수행해야 하는 연산의 수 M (1 ≤ M ≤ 3,000,000)이 주어진다. 둘째 줄부터 M개의 줄에 수행해야 하는 연산이 한 줄에 하나씩 주어진다. www.acmicpc.net 정답 code #집합 import sys input = sys.stdin.readline s = set() #중복 허용 x m = int(input()) for _ in range(m): x = input().strip().split() if len(x) == 1: if x[0] == 'all': s = set([i for i in range(1,21)]) else: s = set() continue menu = x[0] num =..

[baekjoon] 백준 11399번 : ATM (By python)

https://www.acmicpc.net/problem/11399 11399번: ATM 첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000) www.acmicpc.net 정답 code #ATM n = int(input()) p = list(map(int,input().split())) sum = 0 p.sort() for i in range(n): for j in range(i+1): sum += p[j] print(sum) solution 어렵게 생각할것 없이 오름차순으로 정렬을 하면 제일 대기시간이 긴고객의 시간이 포함되지 않게 된다. 따라서 오름차순 정렬후 계속 더해나가면된다. 중복으로 ..

[baekjoon] 백준 11279번 : 최대 힙 (by python) heapq

https://www.acmicpc.net/problem/11279 11279번: 최대 힙 첫째 줄에 연산의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 자연수라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 www.acmicpc.net 정답 code #최대 힙 import heapq import sys input = sys.stdin.readline arr = [] n = int(input()) for i in range(n): x = int(input()) if x == 0: if arr: print(-heapq.heappop(arr)) else: print(0) else: heapq.heappush(arr..

[baekjoon] 백준 9095번 : 1, 2, 3 더하기 (by python 파이썬) 다이나믹 프로그래밍

https://www.acmicpc.net/problem/9095 9095번: 1, 2, 3 더하기 각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 출력한다. www.acmicpc.net 정답 code #1, 2, 3 더하기 def sol(n): if n == 1: return 1 elif n == 2: return 2 elif n == 3: return 4 else: return sol(n-1) + sol(n-2) + sol(n-3) t = int(input()) for _ in range(t): n = int(input()) print(sol(n)) solution n = 1 이면 방법의수 는 1 n = 2 이면 방법의 수는 2 n = 3 이면 방법의 수는 4 n = 4이면 ..

[baekjoon] 백준 7662번 : 이중 우선순위 큐 (by python 파이썬) 이중 힙큐

https://www.acmicpc.net/problem/7662 7662번: 이중 우선순위 큐 입력 데이터는 표준입력을 사용한다. 입력은 T개의 테스트 데이터로 구성된다. 입력의 첫 번째 줄에는 입력 데이터의 수를 나타내는 정수 T가 주어진다. 각 테스트 데이터의 첫째 줄에는 Q에 적 www.acmicpc.net 정답 code #이중 우선순위 큐 import heapq import sys input = sys.stdin.readline t = int(input()) for _ in range(t): k = int(input()) q_max, q_min = [], [] visited = [False]*k for i in range(k): s, n = input().split() if s == 'I': h..

카테고리 없음 2022.06.04

[baekjoon] 백준 7576번 : 토마토 (by python) with 너비 우선 탐색 bfs

https://www.acmicpc.net/problem/7576 7576번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N이 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M,N ≤ 1,000 이다. 둘째 줄부터는 하나의 상자에 저장된 토마토 www.acmicpc.net 정답 code #토마토 import sys from collections import deque input = sys.stdin.readline dx = [-1,1,0,0] dy = [0, 0 , -1, 1] def bfs(): while queue: x, y = queue.popleft() for i in range(4): nx = x + dx[i] ny = y + dy[i] i..