diff --git "a/week2/dynamic_programming/1,2,3\353\215\224\355\225\230\352\270\260/9095_nohse" "b/week2/dynamic_programming/1,2,3\353\215\224\355\225\230\352\270\260/9095_nohse" new file mode 100644 index 00000000..4e214f2f --- /dev/null +++ "b/week2/dynamic_programming/1,2,3\353\215\224\355\225\230\352\270\260/9095_nohse" @@ -0,0 +1,14 @@ +import sys +input=sys.stdin.readline + +t=int(input()) +arr=[0]*12 +arr[1]=1 +arr[2]=2 +arr[3]=4 +arr[4]=7 +for i in range(5, 12): + arr[i]=arr[i-1]+arr[i-2]+arr[i-3] +for j in range(t): + a=int(input()) + print(arr[a]) diff --git a/week2/dynamic_programming/Four_Squares/17626_nohse b/week2/dynamic_programming/Four_Squares/17626_nohse new file mode 100644 index 00000000..31a28f36 --- /dev/null +++ b/week2/dynamic_programming/Four_Squares/17626_nohse @@ -0,0 +1,15 @@ +import sys +from collections import deque +input=sys.stdin.readline + +n=int(input()) +dp=[0]*50005 +for i in range(1,n+1): + dp[i]=dp[i-1]+1 + j=2 + while(j*j<=i): + dp[i] = min(dp[i],dp[i-j*j]+1) + j+=1 + +print(dp[n]) + diff --git "a/week2/dynamic_programming/\352\260\200\354\236\245_\352\270\264_\354\246\235\352\260\200\355\225\230\353\212\224_\353\266\200\353\266\204_\354\210\230\354\227\264/11053_nohse" "b/week2/dynamic_programming/\352\260\200\354\236\245_\352\270\264_\354\246\235\352\260\200\355\225\230\353\212\224_\353\266\200\353\266\204_\354\210\230\354\227\264/11053_nohse" new file mode 100644 index 00000000..17e9154b --- /dev/null +++ "b/week2/dynamic_programming/\352\260\200\354\236\245_\352\270\264_\354\246\235\352\260\200\355\225\230\353\212\224_\353\266\200\353\266\204_\354\210\230\354\227\264/11053_nohse" @@ -0,0 +1,14 @@ +import sys +input= sys.stdin.readline + +n = int(input()) +arr = list(map(int, input().split())) + +d = [1] * n + +for i in range(1, n): + for j in range(i): + if arr[j] < arr[i]: + d[i] = max(d[i], d[j] + 1) + +print(max(d)) \ No newline at end of file diff --git "a/week2/dynamic_programming/\353\217\214\352\262\214\354\236\204/9655_nohse" "b/week2/dynamic_programming/\353\217\214\352\262\214\354\236\204/9655_nohse" new file mode 100644 index 00000000..ac601478 --- /dev/null +++ "b/week2/dynamic_programming/\353\217\214\352\262\214\354\236\204/9655_nohse" @@ -0,0 +1,8 @@ +import sys +input=sys.stdin.readline + +n=int(input()) +if n%2==1: + print("SK") +else: + print("CY") \ No newline at end of file diff --git "a/week3/backtracking/N\352\263\274M_10/15664_nohse.py" "b/week3/backtracking/N\352\263\274M_10/15664_nohse.py" new file mode 100644 index 00000000..d4424be5 --- /dev/null +++ "b/week3/backtracking/N\352\263\274M_10/15664_nohse.py" @@ -0,0 +1,20 @@ +import sys +from collections import deque +input=sys.stdin.readline +n,m=map(int, input().split()) +arr=list(map(int, input().split())) +arr.sort() +que=deque() +def back(start): + if len(que)==m: + for i in range(m): + print(que[i], end=" ") + print() + return + for j in range(start, n): + if j > start and arr[j] == arr[j - 1]: + continue + que.append(arr[j]) + back(j+1) + que.pop() +back(0) \ No newline at end of file diff --git "a/week3/backtracking/N\352\263\274M_11/15665_nohse.py" "b/week3/backtracking/N\352\263\274M_11/15665_nohse.py" new file mode 100644 index 00000000..bc2ae538 --- /dev/null +++ "b/week3/backtracking/N\352\263\274M_11/15665_nohse.py" @@ -0,0 +1,22 @@ +import sys +from collections import deque +input=sys.stdin.readline + +n,m=map(int, input().split()) +arr=list(map(int,input().split())) +arr.sort() + +que=deque() +result=set() +def back(): + if len(que)==m: + result.add(tuple(que)) + return + + for j in range(n): + que.append(arr[j]) + back() + que.pop() +back() +for seq in sorted(result): # 튜플들을 정렬해서 순서대로 출력 + print(*seq) diff --git "a/week3/backtracking/N\352\263\274M_3/15651_nohse.py" "b/week3/backtracking/N\352\263\274M_3/15651_nohse.py" new file mode 100644 index 00000000..8d14d9b1 --- /dev/null +++ "b/week3/backtracking/N\352\263\274M_3/15651_nohse.py" @@ -0,0 +1,16 @@ +import sys +input=sys.stdin.readline +n, m=map(int, input().split()) +arr=list(range(1,n+1)) +answer=[0]*m +def back(k): + if k==m: + for i in range(m): + print(answer[i], end=' ') + print() + return + for i in range(0, n): + answer[k]=arr[i] + back(k+1) + +back(0) \ No newline at end of file diff --git "a/week3/backtracking/N\352\263\274M_4/15652_nohse.py" "b/week3/backtracking/N\352\263\274M_4/15652_nohse.py" new file mode 100644 index 00000000..5e7c7669 --- /dev/null +++ "b/week3/backtracking/N\352\263\274M_4/15652_nohse.py" @@ -0,0 +1,21 @@ +import sys +input=sys.stdin.readline +n,m=map(int,input().split()) +arr=[0]*m +def back(arr, k): + global m, n + if k==m: + for i in range(m): + print(arr[i], end=" ") + print() + return + + for i in range(1, n+1): + if k==0: + arr[0]=i + back(arr, k+1) + else: + if arr[k-1]<=i: + arr[k]=i + back(arr,k+1) +back(arr,0) \ No newline at end of file diff --git "a/week3/backtracking/N\352\263\274M_5/15654_nohse.py" "b/week3/backtracking/N\352\263\274M_5/15654_nohse.py" new file mode 100644 index 00000000..56d7a909 --- /dev/null +++ "b/week3/backtracking/N\352\263\274M_5/15654_nohse.py" @@ -0,0 +1,20 @@ +import sys +from collections import deque +input=sys.stdin.readline +n,m=map(int, input().split()) +arr=list(map(int, input().split())) +arr.sort() +que=deque() +def reverse(): + if len(que)==m: + for j in range(m): + print(que[j], end=" ") + print() + return + for i in range(n): + if arr[i] not in que: + que.append(arr[i]) + reverse() + que.pop() + +reverse() \ No newline at end of file diff --git "a/week3/backtracking/N\352\263\274M_6/15655_nohse.py" "b/week3/backtracking/N\352\263\274M_6/15655_nohse.py" new file mode 100644 index 00000000..0cdc84bf --- /dev/null +++ "b/week3/backtracking/N\352\263\274M_6/15655_nohse.py" @@ -0,0 +1,19 @@ +import sys +from collections import deque +input=sys.stdin.readline +n, m= map(int,input().split()) +arr=list(map(int, input().split())) +arr.sort() +que=deque() +def back(start): + if len(que)==m: + for i in range (m): + print(que[i], end=" ") + print() + return + for j in range(start, len(arr)): + if not arr[j] in que: + que.append(arr[j]) + back(j+1) + que.pop() +back(0) diff --git "a/week3/backtracking/N\352\263\274M_7/15656_nohse.py" "b/week3/backtracking/N\352\263\274M_7/15656_nohse.py" new file mode 100644 index 00000000..dec0be2d --- /dev/null +++ "b/week3/backtracking/N\352\263\274M_7/15656_nohse.py" @@ -0,0 +1,18 @@ +import sys +from collections import deque +input=sys.stdin.readline +n,m=map(int, input().split()) +arr=list(map(int, input().split())) +arr.sort() +que=deque() +def back(): + if len(que)==m: + for i in range(m): + print(que[i], end=" ") + print() + return + for j in range(0, n): + que.append(arr[j]) + back() + que.pop() +back() diff --git "a/week3/backtracking/N\352\263\274M_8/15657_nohse.py" "b/week3/backtracking/N\352\263\274M_8/15657_nohse.py" new file mode 100644 index 00000000..1bbd8385 --- /dev/null +++ "b/week3/backtracking/N\352\263\274M_8/15657_nohse.py" @@ -0,0 +1,19 @@ +import sys +from collections import deque +input=sys.stdin.readline + +n,m=map(int, input().split()) +arr=list(map(int,input().split())) +arr.sort() +que=deque() +def back(start): + if len(que)==m: + for i in range(m): + print(que[i], end=" ") + print() + return + for j in range(start, n): + que.append(arr[j]) + back(j) + que.pop() +back(0) \ No newline at end of file diff --git a/week4/ABCDE b/week4/ABCDE new file mode 100644 index 00000000..98ed97e0 --- /dev/null +++ b/week4/ABCDE @@ -0,0 +1,35 @@ +import sys +input = sys.stdin.readline + +n, m = map(int,input().split()) +ans = False + +friend = [[] for _ in range(n)] +visited=[False for _ in range(n)] + +for _ in range(m): + a ,b = map(int,input().split()) + friend[a].append(b) + friend[b].append(a) + +def dfs(now,depth): + global ans + if depth == 4: + ans=True + return + + for x in friend[now]: + if not visited[x]: + visited[x] = True + dfs(x,depth + 1) + visited[x] = False + +for i in range(n): + visited[i] = True + dfs(i,0) + visited[i] = False + if ans: + break + +if ans: print(1) +else: print(0) \ No newline at end of file diff --git "a/week4/graph_traversal/DFS\354\231\200_BFS/1260_nohse.py" "b/week4/graph_traversal/DFS\354\231\200_BFS/1260_nohse.py" new file mode 100644 index 00000000..aa15e784 --- /dev/null +++ "b/week4/graph_traversal/DFS\354\231\200_BFS/1260_nohse.py" @@ -0,0 +1,36 @@ +import sys +from collections import deque +input=sys.stdin.readline +n, m, v=map(int, input().split()) +visited=[False]*(n+1) +edge=[[] for i in range(n+1)] +for i in range(m): + a,b=map(int,input().split()) + edge[a].append(b) + edge[b].append(a) +def DFS(v): + if visited[v]==False: + visited[v]=True + print(v,end=" ") + for j in edge[v]: + if visited[j]==False: + DFS(j) +def BFS(v): + que=deque() + que.append(v) + while que: + a=que.popleft() + if visited[a]==False: + visited[a]=True + print(a,end=" ") + for j in edge[a]: + if visited[j]==False: + que.append(j) + + +for i in edge: + i.sort() +DFS(v) +print() +visited=[False]*(n+1) +BFS(v) \ No newline at end of file diff --git "a/week4/graph_traversal/\352\263\265\354\243\274\353\213\230\354\235\204\352\265\254\355\225\264\353\235\274!/17836_nohse.py" "b/week4/graph_traversal/\352\263\265\354\243\274\353\213\230\354\235\204\352\265\254\355\225\264\353\235\274!/17836_nohse.py" new file mode 100644 index 00000000..5b8eb890 --- /dev/null +++ "b/week4/graph_traversal/\352\263\265\354\243\274\353\213\230\354\235\204\352\265\254\355\225\264\353\235\274!/17836_nohse.py" @@ -0,0 +1,35 @@ + import sys + from collections import deque + input = sys.stdin.readline + N, M, T = map(int,input().split()) + dx, dy = [-1, 1, 0, 0], [0, 0, -1, 1] + m = [list(map(int,input().split())) for _ in range(N)] + q = deque() + visited = [[0] * M for _ in range(N)] + + def bfs(): + gram = 10001 + q.append((0, 0)) + visited[0][0] = 1 + while q: + x, y = q.popleft() + # 공주님이 있는 곳에 도착했을 때 + if (x, y) == (N-1, M-1): + return min(visited[x][y]-1, gram) + # 그람이 있는 곳에 도착했을 때 + if m[x][y] == 2: + gram = visited[x][y]-1 + N-1-x + M-1-y + + for i in range(4): + nx, ny = x + dx[i], y + dy[i] + if 0 <= nx < N and 0 <= ny < M and not visited[nx][ny]: + if m[nx][ny] == 0 or m[nx][ny] == 2: + visited[nx][ny] = visited[x][y] + 1 + q.append((nx, ny)) + return gram + + res = bfs() + if res > T: + print('Fail') + else: + print(res) \ No newline at end of file diff --git "a/week4/graph_traversal/\353\213\250\354\247\200\353\262\210\355\230\270\353\266\231\354\235\264\352\270\260/2667_nohse.py" "b/week4/graph_traversal/\353\213\250\354\247\200\353\262\210\355\230\270\353\266\231\354\235\264\352\270\260/2667_nohse.py" new file mode 100644 index 00000000..24619eb9 --- /dev/null +++ "b/week4/graph_traversal/\353\213\250\354\247\200\353\262\210\355\230\270\353\266\231\354\235\264\352\270\260/2667_nohse.py" @@ -0,0 +1,46 @@ +import sys +from collections import deque + +input=sys.stdin.readline +n=int(input()) +arr=[] +visited=[[0] *(n) for _ in range(n)] +result = [0] * (n * n + 1) +num=0 +for i in range(n): + row=list(map(int, input().strip())) + arr.append(row) +que=deque() +def dfs(k, l): + dx=[0,0,1,-1] + dy=[1,-1,0,0] + global num + global visited + global arr + global que + num+=1 + que.append((k, l)) + visited[k][l]=1 + result[num]+=1 + while que: + x,y= que.popleft() + for v in range(4): + nx, ny = x + dx[v], y + dy[v] + if 0 <= nx < n and 0 <= ny < n: + if arr[nx][ny] == 1 and visited[nx][ny] == 0: + que.append((nx, ny)) + visited[nx][ny] = 1 + result[num] += 1 + + +for k in range(0, n): + for l in range(0, n): + if visited[k][l]==0 and arr[k][l]==1: + dfs(k, l) + +print(num) +result.sort() +for j in result: + if j==0: + continue + print(j) \ No newline at end of file diff --git "a/week4/graph_traversal/\353\257\270\353\241\234\355\203\220\354\203\211/2178_nohse.py" "b/week4/graph_traversal/\353\257\270\353\241\234\355\203\220\354\203\211/2178_nohse.py" new file mode 100644 index 00000000..8085a755 --- /dev/null +++ "b/week4/graph_traversal/\353\257\270\353\241\234\355\203\220\354\203\211/2178_nohse.py" @@ -0,0 +1,25 @@ +from collections import deque +import sys +input = sys.stdin.readline + +n, m = map(int, input().split()) +arr = [list(map(int, input().strip())) for _ in range(n)] + +def bfs(): + queue = deque() + queue.append((0, 0)) + dx = [0, 0, 1, -1] + dy = [1, -1, 0, 0] + + while queue: + x, y = queue.popleft() + for i in range(4): + nx = x + dx[i] + ny = y + dy[i] + if 0 <= nx < n and 0 <= ny < m: + if arr[nx][ny] == 1: + arr[nx][ny] = arr[x][y] + 1 + queue.append((nx, ny)) + +bfs() +print(arr[n-1][m-1]) diff --git "a/week4/graph_traversal/\353\260\224\354\235\264\353\237\254\354\212\244/2606_nohse.py" "b/week4/graph_traversal/\353\260\224\354\235\264\353\237\254\354\212\244/2606_nohse.py" index a71af3a1..11949301 100644 --- "a/week4/graph_traversal/\353\260\224\354\235\264\353\237\254\354\212\244/2606_nohse.py" +++ "b/week4/graph_traversal/\353\260\224\354\235\264\353\237\254\354\212\244/2606_nohse.py" @@ -12,15 +12,15 @@ visited = [False for _ in range(N+1)] def bfs(): q = deque() - count = 0 # 감염된 컴퓨터 수 - q.append(1) # 1번 컴퓨터로부터 시작 - visited[1] = True # 1번 컴퓨터 감염완료 + count = 0 + q.append(1) + visited[1] = True while q: cur = q.popleft() - for i, val in enumerate(net[cur]): # 감염된 컴퓨터로부터 연결된 컴퓨터들에서 - if visited[val]==False: # 감염되지 않았다면 - q.append(val) # 감염리스트에 추가 - visited[val] = True # 감염완료 - count += 1 # 감염된 컴퓨터 수 1 증가 - print(count) # 모두 감염되었을 때 출력 + for i, val in enumerate(net[cur]): + if visited[val]==False: + q.append(val) + visited[val] = True + count += 1 + print(count) bfs() \ No newline at end of file diff --git "a/week4/graph_traversal/\354\203\230\355\204\260/18513_nohse" "b/week4/graph_traversal/\354\203\230\355\204\260/18513_nohse" new file mode 100644 index 00000000..b92cd6e4 --- /dev/null +++ "b/week4/graph_traversal/\354\203\230\355\204\260/18513_nohse" @@ -0,0 +1,30 @@ +import sys +from collections import deque + +n, k = map(int, sys.stdin.readline().split()) # 샘터 수, k채 집 +n_list = list(map(int, sys.stdin.readline().split())) # 샘터 위치 +visit = set() + +dq = deque() +# 1. 샘터를 기준으로 시작하기 위해 큐에 넣어준다. +for i in n_list: + dq.append((i, 1)) # 위치, 불행도 + visit.add(i) # 방문 체크 + +# 2. -1, + 1 위치 방향으로 bfs 진행 +result = 0 # 불행도의 합 최솟값 +now_build = 0 # 현재까지 지어진 집 수 +while dq: + now, b = dq.popleft() # 위치, 불행도 + for d in [1, -1]: + nx = now + d # 새로 지은 집 위치 + if nx in visit: # 방문 여부 체크 + continue + visit.add(nx) # 방문 체크 + result += b # 결과에 불행도 증가 + now_build += 1 # 지어진 집 수 + 1 + dq.append((nx, b + 1)) # 집 위치, 집에 대한 불행도 + 1 + if now_build == k: + dq = list() + break +print(result) \ No newline at end of file diff --git "a/week4/graph_traversal/\354\210\250\353\260\224\352\274\255\354\247\210_3/13549_nohse.py" "b/week4/graph_traversal/\354\210\250\353\260\224\352\274\255\354\247\210_3/13549_nohse.py" new file mode 100644 index 00000000..b7a80fc6 --- /dev/null +++ "b/week4/graph_traversal/\354\210\250\353\260\224\352\274\255\354\247\210_3/13549_nohse.py" @@ -0,0 +1,29 @@ +from collections import deque +import sys +input = sys.stdin.readline + +n, k = map(int, input().split()) # 수빈이의 위치, 동생의 위치 + +def bfs(): + visited = [-1] * 100001 + visited[n] = 0 + q = deque([n]) + + while q: + cur = q.popleft() + + # 동생의 위치에 도달하면 값 반환 + if cur == k: + return visited[cur] + + # 동생의 위치에 도달할 때 까지, 3가지의 이동 경우를 확인 (x + 1, x - 1, x * 2) + for next in (cur * 2, cur - 1, cur + 1): + if 0 <= next <= 100000 and visited[next] == -1: + if next == cur * 2: + visited[next] = visited[cur] # 순간이동은 0초 소요 + q.appendleft(next) # appendleft()로 순간이동을 먼저 탐색 + else: + visited[next] = visited[cur] + 1 # 걸어서 이동은 1초 소요 + q.append(next) + +print(bfs()) \ No newline at end of file diff --git "a/week4/graph_traversal/\354\210\253\354\236\220\352\263\240\353\245\264\352\270\260/2668_nohse" "b/week4/graph_traversal/\354\210\253\354\236\220\352\263\240\353\245\264\352\270\260/2668_nohse" new file mode 100644 index 00000000..d1c91def --- /dev/null +++ "b/week4/graph_traversal/\354\210\253\354\236\220\352\263\240\353\245\264\352\270\260/2668_nohse" @@ -0,0 +1,19 @@ +import sys +input=sys.stdin.readline +def dfs(v,i): + visited[v]=True + w=data[v] + if not visited[w]: + dfs(w,i) + elif visited[w] and w==i: + result.append(w) +n=int(input()) +data=[0]+[int(input()) for _ in range(n)] +result=[] +for i in range(1,n+1): + visited=[False]*(n+1) + dfs(i,i) +print(len(result)) +result.sort() +for i in result: + print(i) \ No newline at end of file diff --git "a/week4/graph_traversal/\354\211\254\354\232\264\354\265\234\353\213\250\352\261\260\353\246\254\354\260\276\352\270\260/14940_nohse.py" "b/week4/graph_traversal/\354\211\254\354\232\264\354\265\234\353\213\250\352\261\260\353\246\254\354\260\276\352\270\260/14940_nohse.py" new file mode 100644 index 00000000..e670c56d --- /dev/null +++ "b/week4/graph_traversal/\354\211\254\354\232\264\354\265\234\353\213\250\352\261\260\353\246\254\354\260\276\352\270\260/14940_nohse.py" @@ -0,0 +1,35 @@ +import sys +from collections import deque + +input = sys.stdin.readline + +n, m = map(int, input().split()) +grid = [list(map(int, input().split())) for _ in range(n)] + +# 거리 배열을 -1로 초기화 (아직 방문하지 않은 상태) +dist = [[-1] * m for _ in range(n)] +dq = deque() + +# 1인 칸들은 거리를 0으로 하고 큐에 넣어 둔다. +for i in range(n): + for j in range(m): + if grid[i][j] == 1: + dist[i][j] = 0 + dq.append((i, j)) + +# 4방향 델타 +dirs = [(-1, 0), (1, 0), (0, -1), (0, 1)] + +# 멀티소스 BFS 시작 +while dq: + i, j = dq.popleft() + for di, dj in dirs: + ni, nj = i + di, j + dj + # 경계 안에 있고 아직 방문 전(-1)이라면, + if 0 <= ni < n and 0 <= nj < m and dist[ni][nj] == -1: + dist[ni][nj] = dist[i][j] + 1 + dq.append((ni, nj)) + +# 결과 출력 +for i in range(n): + print(*dist[i]) diff --git "a/week4/graph_traversal/\355\206\240\353\247\210\355\206\240/7569_nohse" "b/week4/graph_traversal/\355\206\240\353\247\210\355\206\240/7569_nohse" new file mode 100644 index 00000000..407621df --- /dev/null +++ "b/week4/graph_traversal/\355\206\240\353\247\210\355\206\240/7569_nohse" @@ -0,0 +1,47 @@ +import sys +from collections import deque +input = sys.stdin.readline + +n, m, h = map(int, input().split()) + +arr = [] # 3차원 배열 초기화 +for z in range(h): # 층 (높이) + layer = [] # 각 층의 2차원 배열 + for y in range(m): # 행 + row = list(map(int, input().split())) # 열 입력 + layer.append(row) + arr.append(layer) +que=deque() +cnt=0 +for q in range(h): + for w in range(m): + for e in range(n): + if arr[q][w][e]==1: + que.append((e,w,q)) + if arr[q][w][e]==0: + cnt+=1 +if cnt==0: + print("0") + exit() +max=0 +while que: + dx=[1, -1, 0, 0, 0, 0] + dy=[0, 0, 1, -1, 0, 0] + dz=[0, 0, 0, 0, 1, -1] + a,b,c=que.popleft() + for i in range(6): + nx=a+dx[i] + ny=b+dy[i] + nz=c+dz[i] + if 0<=nxmax: + max=arr[nz][ny][nx] + que.append((nx, ny, nz)) + +if cnt==0: + print(max-1) +else: + print("-1") + diff --git "a/week4/graph_traversal/\355\206\240\353\247\210\355\206\240/7576_nohse" "b/week4/graph_traversal/\355\206\240\353\247\210\355\206\240/7576_nohse" new file mode 100644 index 00000000..3db56c7a --- /dev/null +++ "b/week4/graph_traversal/\355\206\240\353\247\210\355\206\240/7576_nohse" @@ -0,0 +1,46 @@ +import sys +from collections import deque +input=sys.stdin.readline + +n, m= map(int, input().split()) +arr=[] +for i in range(m): + row=list(map(int, input().split())) + arr.append(row) +cnt=0 +que=deque() + +for k in range(m): + for l in range(n): + if arr[k][l]==1: + que.append((k, l, 0)) + elif arr[k][l]==0: + cnt+=1 + + + +def bfs(): + dx=[1, -1, 0, 0] + dy=[0, 0, 1, -1] + global cnt + cur=1 + depth=0 + while que: + a, b, depth=que.popleft() + for z in range(4): + nx=a+dx[z] + ny=b+dy[z] + if 0<=nxmi: + mi=num + result.append(num) + +for i in range(1, n+1): + dfs(i) + +result.sort() +print(mi) +print(result) +for i in range(n): + if result[i]==mi: + print(i+1, end=" ") +print() + + diff --git "a/week5/divide_and_conquer/\354\203\211\354\242\205\354\235\264_\353\247\214\353\223\244\352\270\260/2630_nohse.py" "b/week5/divide_and_conquer/\354\203\211\354\242\205\354\235\264_\353\247\214\353\223\244\352\270\260/2630_nohse.py" new file mode 100644 index 00000000..1b3ef82e --- /dev/null +++ "b/week5/divide_and_conquer/\354\203\211\354\242\205\354\235\264_\353\247\214\353\223\244\352\270\260/2630_nohse.py" @@ -0,0 +1,33 @@ +import sys +input=sys.stdin.readline +n=int(input()) +arr=[] +for i in range(n): + row=[] + row=list(map(int, input().split())) + arr.append(row) +white=0 +blue=0 +def divide(i, j, n): + global white, blue + flag=0 + check=arr[i][j] + for k in range(n): + for l in range(n): + if check!=arr[i+k][j+l]: + flag=1 + break + if flag==1: + break + if flag==0 and check==0: + white+=1 + elif flag==0 and check==1: + blue+=1 + else: + divide(i,j,n//2) + divide(i+n//2, j, n//2) + divide(i,j+n//2, n//2) + divide(i+n//2, j+n//2, n//2) +divide(0, 0, n) +print(white) +print(blue) \ No newline at end of file