알고리즘 66

[baekjoon] 백준 6063번 : 카잉 달력 (by python 파이썬) 자세한 설명

https://www.acmicpc.net/problem/6064 6064번: 카잉 달력 입력 데이터는 표준 입력을 사용한다. 입력은 T개의 테스트 데이터로 구성된다. 입력의 첫 번째 줄에는 입력 데이터의 수를 나타내는 정수 T가 주어진다. 각 테스트 데이터는 한 줄로 구성된다. www.acmicpc.net 정답 code #카잉 달력 t = int(input()) for _ in range(t): m,n,x,y = map(int,input().split()) f = 1 while x (3-9) % 12 != 0 k = 13 -> (13-9) % 12 != 0 k = 23 -> (23-9) % 12 != 0 k = 33 -> (33-9) % 12 == 0 정답은 33 이 나오게 된다. x = 3(33) y..

[baekjoon] 백준 5525번 : IOIO (by python 파이썬)

https://www.acmicpc.net/problem/5525 5525번: IOIOI N+1개의 I와 N개의 O로 이루어져 있으면, I와 O이 교대로 나오는 문자열을 PN이라고 한다. P1 IOI P2 IOIOI P3 IOIOIOI PN IOIOI...OI (O가 N개) I와 O로만 이루어진 문자열 S와 정수 N이 주어졌을 때, S안에 PN이 몇 www.acmicpc.net 정답 code # IOIO import sys input = sys.stdin.readline n = int(input()) m = int(input()) s = input() ans = 0 cnt = 0 i = 1 while i< m-1: if s[i-1] == 'I' and s[i] == 'O' and s[i+1] == "I"..

[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] 백준 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..

[baekjoon] 백준 2630번 : 색종이 만들기 (with python) 재귀

https://www.acmicpc.net/problem/2630 2630번: 색종이 만들기 첫째 줄에는 전체 종이의 한 변의 길이 N이 주어져 있다. N은 2, 4, 8, 16, 32, 64, 128 중 하나이다. 색종이의 각 가로줄의 정사각형칸들의 색이 윗줄부터 차례로 둘째 줄부터 마지막 줄까지 주어진다. www.acmicpc.net 정답 code #색종이 만들기 import sys input = sys.stdin.readline n = int(input()) paper = [list(map(int,input().split())) for _ in range(n)] result = [] def solution (x,y,n): color = paper[x][y] for i in range(x,x+n): ..