Upload files to "백준"
This commit is contained in:
50
백준/1926.py
Normal file
50
백준/1926.py
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
from collections import deque
|
||||||
|
|
||||||
|
dx = [1, 0, -1, 0]
|
||||||
|
dy = [0, 1, 0, -1]
|
||||||
|
result = []
|
||||||
|
|
||||||
|
N=int(input())
|
||||||
|
arr = [[0] * N for i in range(N)]
|
||||||
|
visited = [[False] * N for i in range(N)]
|
||||||
|
|
||||||
|
for i in range(N):
|
||||||
|
numbers = list(input())
|
||||||
|
for j in range(N):
|
||||||
|
arr[i][j] = int(numbers[j])
|
||||||
|
|
||||||
|
|
||||||
|
def BFS(i, j):
|
||||||
|
chance = 0
|
||||||
|
queue = deque()
|
||||||
|
queue.append((i,j))
|
||||||
|
visited[i][j]=True
|
||||||
|
while queue:
|
||||||
|
now = queue.popleft()
|
||||||
|
chance += 1
|
||||||
|
for k in range(4):
|
||||||
|
x = now[0] + dx[k]
|
||||||
|
y = now[1] + dy[k]
|
||||||
|
if(x >= 0 and y >= 0 and x<N and y<N):
|
||||||
|
if (visited[x][y]==False and arr[x][y]==True):
|
||||||
|
visited[x][y]=True
|
||||||
|
arr[x][y]=arr[now[0]][now[1]]+1
|
||||||
|
queue.append((x,y))
|
||||||
|
return chance
|
||||||
|
|
||||||
|
|
||||||
|
for i in range(N):
|
||||||
|
for j in range(N):
|
||||||
|
if (not visited[i][j] and arr[i][j]!=0):
|
||||||
|
k=BFS(i,j)
|
||||||
|
if(k!=0):
|
||||||
|
result.append(k)
|
||||||
|
else:
|
||||||
|
visited[i][j]=True
|
||||||
|
|
||||||
|
result.sort()
|
||||||
|
|
||||||
|
print(len(result))
|
||||||
|
|
||||||
|
for i in range(len(result)):
|
||||||
|
print(result[i])
|
||||||
21
백준/1931.py
Normal file
21
백준/1931.py
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
import sys
|
||||||
|
|
||||||
|
input = sys.stdin.readline
|
||||||
|
|
||||||
|
N = int(input().rstrip())
|
||||||
|
arr = []
|
||||||
|
|
||||||
|
for i in range(N):
|
||||||
|
j, k = map(int, input().split())
|
||||||
|
arr.append((j,k))
|
||||||
|
|
||||||
|
arr.sort(key=lambda x : (x[1], x[0])) #중요, 블로그에 메모해두기
|
||||||
|
|
||||||
|
min_val=-1
|
||||||
|
tot=0
|
||||||
|
for start, end in arr:
|
||||||
|
if(min_val<=start):
|
||||||
|
min_val=end
|
||||||
|
tot+=1
|
||||||
|
|
||||||
|
print(tot)
|
||||||
10
백준/1941.py
Normal file
10
백준/1941.py
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
import sys
|
||||||
|
|
||||||
|
input = sys.stdin.readline
|
||||||
|
arr=[]
|
||||||
|
|
||||||
|
for i in range(5):
|
||||||
|
arr.append(list(map(str, input().strip())))
|
||||||
|
|
||||||
|
dx = [0, 1, 0, -1]
|
||||||
|
dy = [1, 0, -1, 0]
|
||||||
16
백준/1947.py
Normal file
16
백준/1947.py
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
import sys
|
||||||
|
|
||||||
|
input = sys.stdin.readline
|
||||||
|
|
||||||
|
N = int(input())
|
||||||
|
|
||||||
|
D = [0] * (N+5)
|
||||||
|
D[0] = 0
|
||||||
|
D[1] = 0
|
||||||
|
D[2] = 1
|
||||||
|
D[3] = 2
|
||||||
|
|
||||||
|
for i in range(3, N+1):
|
||||||
|
D[i] = ((i-1) * (D[i-2] + D[i-1]))%1000000000
|
||||||
|
|
||||||
|
print(D[N])
|
||||||
53
백준/1948.py
Normal file
53
백준/1948.py
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
import sys
|
||||||
|
import math
|
||||||
|
from collections import deque
|
||||||
|
|
||||||
|
input = sys.stdin.readline
|
||||||
|
|
||||||
|
# 목표는 만나는 최소 시간과 최소시간에 모든 시간을 다 쓰는 사람의 지나는 도로의 수 카운트
|
||||||
|
|
||||||
|
n = int(input()) # 도시 수
|
||||||
|
m = int(input()) # 도로 수
|
||||||
|
|
||||||
|
cityisdegree = [0] * (n+1) # 도시에 대한 진입차수
|
||||||
|
maxtime = [0] * (n+1) #걸리는 최대 시간
|
||||||
|
visitedcityroad = [0] * (n+1) # 방문하는 도시의 최대 수 (최대 시간 걸리는 사람이 방문하는 도시의 최대 수)
|
||||||
|
a = [[] for _ in range(n+1)] # 모든 이어진 도로 정보
|
||||||
|
reverseA = [[] for _ in range(n+1)] # 모든 이어진 역방향 도로 정보
|
||||||
|
|
||||||
|
for i in range(m):
|
||||||
|
s, e, min = map(int, input().split()) # 출발 도시, 도착도시, 소요시간
|
||||||
|
cityisdegree[e] += 1
|
||||||
|
a[s].append((e, min))
|
||||||
|
reverseA[e].append((s, min))
|
||||||
|
|
||||||
|
s_city, e_city = map(int, input().split()) # 시작 도시, 도착도시
|
||||||
|
|
||||||
|
queue = deque()
|
||||||
|
queue.append(s_city)
|
||||||
|
|
||||||
|
while queue:
|
||||||
|
now = queue.popleft()
|
||||||
|
for e, min in a[now]:
|
||||||
|
maxtime[e] = max(maxtime[e], maxtime[now]+min) # 이 로직 맞는지 점검이 필요할듯?
|
||||||
|
cityisdegree[e] -= 1
|
||||||
|
if (cityisdegree[e]==0):
|
||||||
|
queue.append(e)
|
||||||
|
|
||||||
|
resultCount = 0 # 방문 최대횟수
|
||||||
|
visited = [False] * (n+1)
|
||||||
|
queue.clear()
|
||||||
|
queue.append(e_city)
|
||||||
|
|
||||||
|
while queue:
|
||||||
|
now = queue.popleft()
|
||||||
|
for s, min in reverseA[now]:
|
||||||
|
if(maxtime[now] == maxtime[s] + min):
|
||||||
|
resultCount+=1
|
||||||
|
if not visited[s]:
|
||||||
|
visited[s] = True
|
||||||
|
queue.append(s)
|
||||||
|
|
||||||
|
|
||||||
|
print(maxtime[e_city])
|
||||||
|
print(resultCount)
|
||||||
Reference in New Issue
Block a user