이번에는 이전보다 더 분할하는 문제를 풀어본다. 문제는 그냥 머랄까 이전에는 반을 나누었다면 이번에는 3등분하는 문제였다. 사실 코드적인 부분이 많이 달라지지 않았다.
저번에는 반으로 나누는 과정을 조금 무식하게 풀었는데, 이번에는 3등분을 해야하다보니 조금더 깔끔하게 처리하려고 노력했다.
막상 비교하려고 놓고 보니 별로 큰 차이가 없어보이네;;ㅎㅎ
여튼 이러한 방식으로 풀면 되는거라 이전 문제와 크게 다른점이 없었다.
처음 제출했을때 틀렸다고 해서 당황했는데 알고보니 0개수를 1개수랑 바꿔놓고 풀었었다. 정신 차리고 풀어야 겠다.
import sys
n = int(sys.stdin.readline())
nr1 = 0
n0 = 0
n1 = 0
def check(p):
global nr1
global n0
global n1
f = p[0][0]
wrong = 0
for i in range(len(p)):
for j in p[i]:
if f != j:
wrong = 1
break
if wrong == 1:
break
if wrong == 1:#중간에 노이즈 있으므로 나눠줘야함.
for _ in range(0,len(p),len(p)//3):
a=[]
b=[]
c=[]
for i in range(_, _+len(p)//3):
a.append(p[i][:len(p)//3])
b.append(p[i][len(p)//3:len(p)//3*2])
c.append(p[i][len(p)//3*2:])
check(a)
check(b)
check(c)
else:
if f == -1:
nr1 += 1
elif f == 0:
n0 += 1
else:
n1 += 1
p = []
for _ in range(n):
p.append(list(map(int, sys.stdin.readline().split())))
check(p)
print(nr1)
print(n0)
print(n1)
'알고리즘' 카테고리의 다른 글
#4 알고리즘 공부 3/12 리뷰 (0) | 2021.03.12 |
---|---|
백준 1629 풀이 (곱셈, 분할정복, 파이썬) (0) | 2021.03.12 |
백준 1992 풀이 (쿼드트리, 파이썬) (0) | 2021.03.12 |
백준 2630 풀이 (색종이 만들기, 쿼드트리, 분할정복, 파이썬) (0) | 2021.03.12 |
백준 5430 풀이 (AC, 큐, 파이썬) (0) | 2021.03.11 |