문제풀이 245

[파이썬] [이진탐색] 백준 1300 K번째 수

문제 https://www.acmicpc.net/problem/1300 1300번: K번째 수 세준이는 크기가 N×N인 배열 A를 만들었다. 배열에 들어있는 수 A[i][j] = i×j 이다. 이 수를 일차원 배열 B에 넣으면 B의 크기는 N×N이 된다. B를 오름차순 정렬했을 때, B[k]를 구해보자. 배열 A와 B www.acmicpc.net 코드 n=int(input()) k=int(input()) start=1 end=int(1e9) answer=0 while start

[파이썬] [DFS] 백준 2667 단지번호붙이기

문제 https://www.acmicpc.net/problem/2667 2667번: 단지번호붙이기 과 같이 정사각형 모양의 지도가 있다. 1은 집이 있는 곳을, 0은 집이 없는 곳을 나타낸다. 철수는 이 지도를 가지고 연결된 집의 모임인 단지를 정의하고, 단지에 번호를 붙이려 한다. 여 www.acmicpc.net 코드 dx=[-1,1,0,0] dy=[0,0,-1,1] def dfs(r,c,k): visited[r][c]=k for i in range(4): nx=r+dx[i] ny=c+dy[i] if 0

[파이썬] [최단경로] 백준 1956 운동

문제 https://www.acmicpc.net/problem/1956 1956번: 운동 첫째 줄에 V와 E가 빈칸을 사이에 두고 주어진다. (2 ≤ V ≤ 400, 0 ≤ E ≤ V(V-1)) 다음 E개의 줄에는 각각 세 개의 정수 a, b, c가 주어진다. a번 마을에서 b번 마을로 가는 거리가 c인 도로가 있다는 의 www.acmicpc.net 코드 import heapq import sys INF=sys.maxsize input=sys.stdin.readline def dijk(start): dis = [INF] * (v + 1) q=[] heapq.heappush(q,(0,start)) while q: cost,node=heapq.heappop(q) if cost>dis[node]: contin..

[파이썬] [최단경로] 백준 1504 특정한 최단 경로

문제 https://www.acmicpc.net/problem/1504 1504번: 특정한 최단 경로 첫째 줄에 정점의 개수 N과 간선의 개수 E가 주어진다. (2 ≤ N ≤ 800, 0 ≤ E ≤ 200,000) 둘째 줄부터 E개의 줄에 걸쳐서 세 개의 정수 a, b, c가 주어지는데, a번 정점에서 b번 정점까지 양방향 길이 존 www.acmicpc.net 코드 import heapq import sys input=sys.stdin.readline INF=sys.maxsize def dijk(start): dis = [INF] * (n + 1) q=[] heapq.heappush(q,(0,start)) dis[start]=0 while q: cost,node=heapq.heappop(q) if dis..

[파이썬] [DP] 백준 2579 계단 오르기

문제 https://www.acmicpc.net/problem/2579 2579번: 계단 오르기 계단 오르기 게임은 계단 아래 시작점부터 계단 꼭대기에 위치한 도착점까지 가는 게임이다. 과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점 www.acmicpc.net 코드 n=int(input()) array=[0] for _ in range(n): array.append(int(input())) if n==1: print(array[1]) else: dp=[0]*(n+1) dp[1]=array[1] dp[2]=array[1]+array[2] for i in range(3,n+1): dp[i]=max(dp[i-3]+array[i-1]+array[i],dp[i-2]+a..

문제풀이/DP 2022.02.24

[파이썬] [분할정복] 백준 1992 쿼드트리

문제 https://www.acmicpc.net/problem/1992 1992번: 쿼드트리 첫째 줄에는 영상의 크기를 나타내는 숫자 N 이 주어진다. N 은 언제나 2의 제곱수로 주어지며, 1 ≤ N ≤ 64의 범위를 가진다. 두 번째 줄부터는 길이 N의 문자열이 N개 들어온다. 각 문자열은 0 또 www.acmicpc.net 코드 import sys input=sys.stdin.readline n=int(input()) array=[list(map(int, list(input().rstrip()))) for _ in range(n)] result=[] def make(n,movie): count=0 global result for i in range(n): count+=sum(movie[i]) if ..

문제풀이/기타 2022.02.23

[파이썬] [분할정복] 백준 2630 색종이 만들기

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

문제풀이/기타 2022.02.23

[파이썬] [BFS] Pro 경주로 건설

문제 https://programmers.co.kr/learn/courses/30/lessons/67259?language=python3 코딩테스트 연습 - 경주로 건설 [[0,0,0,0,0,0,0,1],[0,0,0,0,0,0,0,0],[0,0,0,0,0,1,0,0],[0,0,0,0,1,0,0,0],[0,0,0,1,0,0,0,1],[0,0,1,0,0,0,1,0],[0,1,0,0,0,1,0,0],[1,0,0,0,0,0,0,0]] 3800 [[0,0,1,0],[0,0,0,0],[0,1,0,1],[1,0,0,0]] 2100 [[0,0,0,0,0,0],[0,1,1,1,1,0],[0,0,1,0,0,0],[1,0,0,1,0,1],[ programmers.co.kr 코드 from collections import d..

[파이썬] [그래프] Pro 방의 개수

문제 https://programmers.co.kr/learn/courses/30/lessons/49190?language=python3 코딩테스트 연습 - 방의 개수 [6, 6, 6, 4, 4, 4, 2, 2, 2, 0, 0, 0, 1, 6, 5, 5, 3, 6, 0] 3 programmers.co.kr 코드 from collections import defaultdict def solution(arrows): dx=[-1,-1,0,1,1,1,0,-1] dy=[0,1,1,1,0,-1,-1,-1] array=defaultdict(list) answer=0 row,col=0,0 for i in arrows: for _ in range(2): nx=row+dx[i] ny=col+dy[i] if (nx, ny..