본문 바로가기

[Algorithm] 백준 BOJ 2630 색종이 만들기 python 파이썬 분할정복 실버2 Private 난이도 : ♥♥♡♡♡ 2630번: 색종이 만들기 첫째 줄에는 전체 종이의 한 변의 길이 N이 주어져 있다. N은 2, 4, 8, 16, 32, 64, 128 중 하나이다. 색종이의 각 가로줄의 정사각형칸들의 색이 윗줄부터 차례로 둘째 줄부터 마지막 줄까지 주어진다. www.acmicpc.net import sys input=sys.stdin.readline n=int(input().strip()) graph=list() for i in range(n): graph.append(list(map(int,input().strip().split(' ')))) blue=0 white=0 direction=[[0,0,1,1],[0,1,0,1]] def check(n,x,y): color=graph[x..
[Algorithm] 백준 BOJ 2467 용액 python 파이썬 투포인터 골드5 Private 난이도 : ♥♥♡♡♡ 2467번: 용액 첫째 줄에는 전체 용액의 수 N이 입력된다. N은 2 이상 100,000 이하의 정수이다. 둘째 줄에는 용액의 특성값을 나타내는 N개의 정수가 빈칸을 사이에 두고 오름차순으로 입력되며, 이 수들은 모두 - www.acmicpc.net n=int(input()) seq=list(map(int,input().split(' '))) start=0 end=n-1 candidate=list() # [더한 특성값, 그 때 용액 1, 그 때 용액 2] while start0: # 0에 가까워져야 하니 작아져야함 end-=1 else: start+=1 # 0에 가까워져야 하니 커져야함 candidate.sort() # 특성값이 작은 것부터 sort됨 -> 특성값이 ..
[Algorithm] 백준 BOJ 1477 휴게소 세우기 python 파이썬 이분탐색 골드 4 Private 난이도 : ♥♥♥♥♡ 1477번: 휴게소 세우기 첫째 줄에 현재 휴게소의 개수 N, 더 지으려고 하는 휴게소의 개수 M, 고속도로의 길이 L이 주어진다. 둘째 줄에 현재 휴게소의 위치가 공백을 사이에 두고 주어진다. www.acmicpc.net import sys input=sys.stdin.readline n,m,l=map(int,input().rstrip().split(' ')) rest=[l] # 맨 마지막 길이까지 고려해야 함 if n!=0: # n=0일때 입력이 개행만 들어오는 것 처리 -> 런타임에러(Value Error)의 원인 x=list(map(int,input().rstrip().split(' '))) rest=rest+x rest.sort() low=1 high=l-1 ..
[Algorithm] 백준 BOJ 5904 Moo 게임 python 파이썬 분할정복 골드 5 Private 난이도 : ♥♥♥♡♡ 5904번: Moo 게임 Moo는 술자리에서 즐겁게 할 수 있는 게임이다. 이 게임은 Moo수열을 각 사람이 하나씩 순서대로 외치면 되는 게임이다. Moo 수열은 길이가 무한대이며, 다음과 같이 생겼다. m o o m o o o m o o m o o o www.acmicpc.net n=int(input()) def find_moo(partition,k,n): # [10,15,25], 2, 11 if k==0: # 가장 작은 단위일 때 if n==1: return 'm' else: return 'o' if n
[Algorithm] 백준 BOJ 1074 Z python 파이썬 분할정복 실버1 Private 난이도 : ♥♥♥♡♡ 1074번: Z 한수는 크기가 2N × 2N인 2차원 배열을 Z모양으로 탐색하려고 한다. 예를 들어, 2×2배열을 왼쪽 위칸, 오른쪽 위칸, 왼쪽 아래칸, 오른쪽 아래칸 순서대로 방문하면 Z모양이다. N > 1인 경우, 배열을 www.acmicpc.net 시간초과 코드 n,r,c=map(int,input().split(' ')) size=2**n graph=[[0 for _ in range(size)] for _ in range(size)] cnt=0 dr=[0,0,1,1] dc=[0,1,0,1] def divide(r,c,size): global cnt if size==2: for i in range(len(dr)): graph[r+dr[i]][c+dc[i]]=cnt..
[Algorithm] 백준 BOJ 1463 1로 만들기 : python 파이썬 DP 실버 3 Private 난이도 : ♥♥♥♡♡ 1463번: 1로 만들기 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. www.acmicpc.net n=int(input()) d=[0]*(n+1) d[1]=0 for i in range(2,n+1): d[i]=d[i-1]+1 if i%3==0: d[i]=min(d[i], d[i//3]+1) if i%2==0: d[i]=min(d[i], d[i//2]+1) print(d[n]) 백준 제출 버전 설명 3가지 방법중 1) 1을 빼는 방법 2) 3으로 나누는 방법 3)2로 나누는 방법 으로 이미 계산했던 작은 수들에 대한 결과를 활용하므로써 더 큰 숫자들의 결과를 알 수 있다. 1,2,3 번 방법 모두 그 전 숫자의 결과에 연산을 한 번만 더 ..
[Algorithm] 백준 BOJ 11000 강의실 배정 : python 파이썬 그리디 골드 5 Private 난이도 : ♥♥♥♥♡ 11000번: 강의실 배정 첫 번째 줄에 N이 주어진다. (1 ≤ N ≤ 200,000) 이후 N개의 줄에 Si, Ti가 주어진다. (0 ≤ Si 0: # 수업이 겹침 ->강의실 추가 contin..
[Algorithm] 백준 BOJ 2644 촌수계산 python 파이썬 그래프 DFS 실버 2 Private 난이도 : ♥♥♡♡♡ 2644번: 촌수계산 사람들은 1, 2, 3, …, n (1 ≤ n ≤ 100)의 연속된 번호로 각각 표시된다. 입력 파일의 첫째 줄에는 전체 사람의 수 n이 주어지고, 둘째 줄에는 촌수를 계산해야 하는 서로 다른 두 사람의 번호가 주어 www.acmicpc.net from collections import defaultdict from sys import setrecursionlimit setrecursionlimit(10**6) n=int(input()) # 전체 사람 수 a,b =map(int,input().split(' ')) # 촌수를 구해야 하는 두 사람 m=int(input()) # 관계 수 graph=defaultdict(list) for i in ran..