문제풀이 245

[파이썬] [구현] 백준 2531 회전 초밥

문제 https://www.acmicpc.net/problem/2531 2531번: 회전 초밥 첫 번째 줄에는 회전 초밥 벨트에 놓인 접시의 수 N, 초밥의 가짓수 d, 연속해서 먹는 접시의 수 k, 쿠폰 번호 c가 각각 하나의 빈 칸을 사이에 두고 주어진다. 단, 2 ≤ N ≤ 30,000, 2 ≤ d ≤ 3,000, 2 ≤ www.acmicpc.net 코드 import sys input=sys.stdin.readline n,d,k,c=map(int, input().split()) array=list(int(input()) for _ in range(n)) result=0 for i in range(n): count=0 # 배열의 크기를 넘어가지 않는 경우 if i+k

문제풀이/구현 2023.03.03

[파이썬] [그리디] 백준 17615 볼 모으기

문제 https://www.acmicpc.net/problem/17615 17615번: 볼 모으기 첫 번째 줄에는 볼의 총 개수 N이 주어진다. (1 ≤ N ≤ 500,000) 다음 줄에는 볼의 색깔을 나타내는 문자 R(빨간색 볼) 또는 B(파란색 볼)가 공백 없이 주어진다. 문자열에는 R 또는 B 중 한 종류만 주 www.acmicpc.net 코드 n=int(input()) array=list(input()) result=500001 #case 1: 빨간색을 오른쪽으로 모으기 flag=False count=0 for i in range(len(array)-1,-1,-1): if array[i]=='B': flag=True if flag==True and array[i]=='R': count+=1 res..

[파이썬] [DP] 백준 1446 지름길

문제 https://www.acmicpc.net/problem/1446 1446번: 지름길 첫째 줄에 지름길의 개수 N과 고속도로의 길이 D가 주어진다. N은 12 이하인 양의 정수이고, D는 10,000보다 작거나 같은 자연수이다. 다음 N개의 줄에 지름길의 시작 위치, 도착 위치, 지름길의 길이 www.acmicpc.net 코드 import sys input=sys.stdin.readline n,d=map(int, input().split()) graph=[[] for _ in range(d+1)] for _ in range(n): a,b,c=map(int, input().split()) if b

문제풀이/DP 2023.02.28

[파이썬] [DP] 백준 15989 1, 2, 3 더하기 4

문제 https://www.acmicpc.net/problem/15989 15989번: 1, 2, 3 더하기 4 정수 4를 1, 2, 3의 합으로 나타내는 방법은 총 4가지가 있다. 합을 나타낼 때는 수를 1개 이상 사용해야 한다. 합을 이루고 있는 수의 순서만 다른 것은 같은 것으로 친다. 1+1+1+1 2+1+1 (1+1+2, 1+2+1) 2+2 www.acmicpc.net 코드 import sys input = sys.stdin.readline #1만 사용하여 나타내는 경우는 한가지 이므로 1로 초기화 dp=[1]*10001 #2가 추가되는 경우 for i in range(2,10001): dp[i]+=dp[i-2] #3이 추가되는 경우 for i in range(3,10001): dp[i]+=dp..

문제풀이/DP 2023.02.27

[파이썬] [투포인터] 백준 20922 겹치는 건 싫어

문제 https://www.acmicpc.net/problem/20922 20922번: 겹치는 건 싫어 홍대병에 걸린 도현이는 겹치는 것을 매우 싫어한다. 특히 수열에서 같은 원소가 여러 개 들어 있는 수열을 싫어한다. 도현이를 위해 같은 원소가 $K$개 이하로 들어 있는 최장 연속 부분 수열 www.acmicpc.net 코드 import sys input=sys.stdin.readline n,k=map(int, input().split()) array=list(map(int, input().split())) left,right=0,0 count=[0]*(max(array)+1) result=0 while right

문제풀이/기타 2023.02.24

[파이썬] [BFS] 백준 4179 불!

문제 https://www.acmicpc.net/problem/4179 4179번: 불! 입력의 첫째 줄에는 공백으로 구분된 두 정수 R과 C가 주어진다. 단, 1 ≤ R, C ≤ 1000 이다. R은 미로 행의 개수, C는 열의 개수이다. 다음 입력으로 R줄동안 각각의 미로 행이 주어진다. 각각의 문자 www.acmicpc.net 코드 import sys from collections import deque input=sys.stdin.readline queue=deque() dx=[-1,1,0,0] dy=[0,0,-1,1] r,c=map(int, input().split()) graph=[list(input().rstrip()) for _ in range(r)] visited=[[0]*c for _ ..

[파이썬] [이진탐색] 백준 1253 좋다

문제 https://www.acmicpc.net/problem/1253 1253번: 좋다 첫째 줄에는 수의 개수 N(1 ≤ N ≤ 2,000), 두 번째 줄에는 i번째 수를 나타내는 Ai가 N개 주어진다. (|Ai| ≤ 1,000,000,000, Ai는 정수) www.acmicpc.net 코드 n=int(input()) array=list(map(int, input().split())) array.sort() #결과값 저장 용도 count=0 for i in range(len(array)): #index i번째 제거하고 temp=array[:i]+array[i+1:] left, right=0, len(temp)-1 while left

[파이썬] [백트래킹] 백준 7490 0 만들기

문제 https://www.acmicpc.net/problem/7490 7490번: 0 만들기 각 테스트 케이스에 대해 ASCII 순서에 따라 결과가 0이 되는 모든 수식을 출력한다. 각 테스트 케이스의 결과는 한 줄을 띄워 구분한다. www.acmicpc.net 코드 t=int(input()) def cal(temp): #배열 맨뒤에 붙은 "+", "-". " "제거 temp = temp[:-1] #정답을 위해 원본 저장 ori=temp temp=temp.replace(" ","") #eval함수를 통해 string 수식 계산 if eval(temp)==0: s.add(ori) def dfs(index, temp): if index==len(array): cal(temp) return dfs(index..

문제풀이/기타 2023.02.19

[파이썬] [백트래킹] 백준 22251 빌런 호석

문제 https://www.acmicpc.net/problem/22251 22251번: 빌런 호석 LED를 2개까지 바꿀 수 있을 때, 5층에서 3층, 6층, 8층, 그리고 9층으로 바꿔버릴 수 있다. www.acmicpc.net 코드 # 0~9까지의 수를 배열로 표시 array=[[] for _ in range(10)] array[0]=[1,1,1,0,1,1,1] array[1]=[0,0,1,0,0,1,0] array[2]=[1,0,1,1,1,0,1] array[3]=[1,0,1,1,0,1,1] array[4]=[0,1,1,1,0,1,0] array[5]=[1,1,0,1,0,1,1] array[6]=[1,1,0,1,1,1,1] array[7]=[1,0,1,0,0,1,0] array[8]=[1,1,1,1..

문제풀이/기타 2023.02.17

[파이썬] [스택] 백준 1863 스카이라인

문제 https://www.acmicpc.net/problem/1863 1863번: 스카이라인 쉬운거 첫째 줄에 n이 주어진다. (1 ≤ n ≤ 50,000) 다음 n개의 줄에는 왼쪽부터 스카이라인을 보아 갈 때 스카이라인의 고도가 바뀌는 지점의 좌표 x와 y가 주어진다. (1 ≤ x ≤ 1,000,000. 0 ≤ y ≤ 500,000) 첫 www.acmicpc.net 코드 import sys input=sys.stdin.readline n = int(input()) answer = 0 skylines = [] for i in range(n): skylines.append(int(input().split()[1])) skylines.append(0) stk = [0] for p in skylines: #..

문제풀이/기타 2023.02.15