Loading...

[백준] 14889번 스타트와 링크 (파이썬, 완전탐색)

www.acmicpc.net/problem/14889 14889번: 스타트와 링크 예제 2의 경우에 (1, 3, 6), (2, 4, 5)로 팀을 나누면 되고, 예제 3의 경우에는 (1, 2, 4, 5), (3, 6, 7, 8)로 팀을 나누면 된다. www.acmicpc.net from collections import deque from itertools import combinations import math n=int(input()) a=[list(map(int,input().split())) for _ in range(n)] p=[i for i in range(n)] allcase=combinations(p,n//2) ans=math.inf def check(start): global ans lin..

[백준] 14505번 연구소 (bfs, 시뮬레이션, 파이썬)

www.acmicpc.net/problem/14502 14502번: 연구소 인체에 치명적인 바이러스를 연구하던 연구소에서 바이러스가 유출되었다. 다행히 바이러스는 아직 퍼지지 않았고, 바이러스의 확산을 막기 위해서 연구소에 벽을 세우려고 한다. 연구소는 크� www.acmicpc.net from collections import deque import math from itertools import combinations import copy n,m=map(int,input().split()) a,blank,virus=[],[],[] dy,dx=[1,-1,0,0],[0,0,1,-1] for y in range(n): tmp=list(map(int,input().split())) a.append(tmp) ..

[백준] 15686번 치킨배달 (시뮬, bfs, 파이썬, java)

www.acmicpc.net/problem/15686 15686번: 치킨 배달 크기가 N×N인 도시가 있다. 도시는 1×1크기의 칸으로 나누어져 있다. 도시의 각 칸은 빈 칸, 치킨집, 집 중 하나이다. 도시의 칸은 (r, c)와 같은 형태로 나타내고, r행 c열 또는 위에서부터 r번째 칸 www.acmicpc.net 1. python 풀이 from collections import deque import math from itertools import combinations chicken,house=[],[] n,m=map(int,input().split()) for y in range(n): temp=list(map(int,input().split())) for x in range(len(temp))..

[백준] 14503번 로봇 청소기 (bfs, 시뮬레이션, python)

www.acmicpc.net/problem/14503 14503번: 로봇 청소기 로봇 청소기가 주어졌을 때, 청소하는 영역의 개수를 구하는 프로그램을 작성하시오. 로봇 청소기가 있는 장소는 N×M 크기의 직사각형으로 나타낼 수 있으며, 1×1크기의 정사각형 칸으로 나누어 www.acmicpc.net 방향 회전에 후진할 경우 이동방향, 회전할 경우 이동방향을 계산해서 이동시킨다 # 북동남서 0 1 2 3 -> 후진: 2 3 0 1 # 북동남서 0 1 2 3 -> 회전: 3 0 1 2 from _collections import deque n,m=map(int,input().split()) vis=[[0]*m for _ in range(n)] r,c,d=map(int,input().split()) a=[li..

[백준] 14888번 연산자 (python, dfs)

www.acmicpc.net/problem/14888 14888번: 연산자 끼워넣기 첫째 줄에 수의 개수 N(2 ≤ N ≤ 11)가 주어진다. 둘째 줄에는 A1, A2, ..., AN이 주어진다. (1 ≤ Ai ≤ 100) 셋째 줄에는 합이 N-1인 4개의 정수가 주어지는데, 차례대로 덧셈(+)의 개수, 뺄셈(-)의 개수, �� www.acmicpc.net n=int(input()) a=list(map(int,input().split())) oper=list(map(int,input().split())) result=[] def dfs(cnt,p,minus,mul,d,now): if cnt==n-1: result.append(now) return if p

[백준] 16930번 달리기 (python, bfs)

www.acmicpc.net/problem/16930 16930번: 달리기 진영이는 다이어트를 위해 N×M 크기의 체육관을 달리려고 한다. 체육관은 1×1 크기의 칸으로 나누어져 있고, 칸은 빈 칸 또는 벽이다. x행 y열에 있는 칸은 (x, y)로 나타낸다. 매 초마다 진영이는 www.acmicpc.net from collections import deque n,m,k=map(int,input().split()) dx,dy=[1,-1,0,0],[0,0,1,-1] vis=[[-1]*m for _ in range(n)] a=[list(input()) for _ in range(n)] x1,y1,x2,y2=map(int,input().split()) q=deque() q.append((x1-1,y1-1)) ..

[백준] 17086번 아기 상어 2 (bfs, python)

www.acmicpc.net/problem/17086 17086번: 아기 상어 2 첫째 줄에 공간의 크기 N과 M(2 ≤ N, M ≤ 50)이 주어진다. 둘째 줄부터 N개의 줄에 공간의 상태가 주어지며, 0은 빈 칸, 1은 아기 상어가 있는 칸이다. 빈 칸의 개수가 한 개 이상인 입력만 주어진다. www.acmicpc.net from _collections import deque def bfs(): q = deque() q.append((i,j,0)) vis[i][j]=1 while q: y,x,cnt=q.popleft() if a[y][x]==1: return cnt for k in range(8): xx=x+dx[k] yy=y+dy[k] if xx=n: continue if vis[yy][xx]: c..

[백준] 14226번 이모티콘 (bfs, 파이썬)

www.acmicpc.net/problem/14226 14226번: 이모티콘 영선이는 매우 기쁘기 때문에, 효빈이에게 스마일 이모티콘을 S개 보내려고 한다. 영선이는 이미 화면에 이모티콘 1개를 입력했다. 이제, 다음과 같은 3가지 연산만 사용해서 이모티콘을 S개 만�� www.acmicpc.net from collections import deque from collections import defaultdict n=int(input()) time=defaultdict(int) q=deque() # 화면, 클립보드 개수 q.append((1,0)) time[(1,0)]=0 while q: s,c=q.popleft() if s==n: print(time[(s,c)]) exit() # 클립보드에 복사 fo..

[백준] 13913번 숨바꼭질4

www.acmicpc.net/problem/13913 13913번: 숨바꼭질 4 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 �� www.acmicpc.net 계속 메모리 초과가 났는데, 이전에 지나온 위치를 계산할 때 무한 반복되는 구간이 있어 -1로 초기화해줄 필요가 있었다 path[N]=-1로 출발위치만 초기화해주면 된다 from collections import deque from collections import defaultdict N, K = map(int, input().split()) MAX_SIZE = 1000..

[백준] 13549번 숨바꼭질 3 (python, bfs)

www.acmicpc.net/problem/13549 13549번: 숨바꼭질 3 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 �� www.acmicpc.net 2보다는 쉽다 더 짧게 갈 수 있는 경우 (check)를 더 작게 업데이트 해주자 from collections import deque N, K = map(int, input().split()) MAX_SIZE = 100001 q = deque() q.append(N) check=[-1]* MAX_SIZE check[N]=0 while q: x = q.popleft() i..