문제
https://www.acmicpc.net/problem/21608
제21608호: 하이초등학교
Shark Elementary School에는 하나의 교실이 있으며 교실은 N×N 그리드로 나타낼 수 있습니다. 학교에 다니는 학생의 수는 N2입니다. 오늘은 모든 학생들을 위해 자리가 마련되는 날입니다. 학생들은 1부터 N2까지 번호가 매겨져 있습니다.
www.acmicpc.net
암호
import sys
input=sys.stdin.readline
dx=(-1,1,0,0)
dy=(0,0,-1,1)
n=int(input())
array=((0)*n for _ in range(n))
sati=(() for _ in range((n**2)+1))
for i in range(n**2):
temp=list(map(int, input().split()))
sati(temp(0)).append(temp(1))
sati(temp(0)).append(temp(2))
sati(temp(0)).append(temp(3))
sati(temp(0)).append(temp(4))
# 가능한 자리를 담는 임시 배열
arrayT=()
for j in range(n):
for k in range(n):
if array(j)(k)==0:
# 좋아하는 친구
countA=0
# 빈칸
countB=0
for l in range(4):
nx=j+dx(l)
ny=k+dy(l)
if 0<=nx<n and 0<=ny<n:
if array(nx)(ny) in temp(1:): countA+=1
elif array(nx)(ny)==0: countB+=1
arrayT.append((countA,countB,j,k))
# 1번째, 2번째 인자는 내림차순으로, 3번째, 4번째 인자는 오름차순으로 정렬해줘!
arrayT.sort(key = lambda x: (-x(0),-x(1),x(2),x(3)))
array(arrayT(0)(2))(arrayT(0)(3))=temp(0)
result=0
for i in range(n):
for j in range(n):
count=0
for k in range(4):
nx=i+dx(k)
ny=j+dy(k)
if 0<=nx<n and 0<=ny<n:
if array(nx)(ny) in sati(array(i)(j)):
count+=1
result += (10**(count-1)) if count>=1 else 0
print(result)
시간적 복잡성
(n**4)
어려운 부분
처음 센터에 들어오는 학생이 센터에 들어와야 한다고 생각했는데 나중에 알고 보니 세 번째 조건을 위반한 것이었다.

![[Python] exe 파일 만들때 [Python] exe 파일 만들때](https://ko.foodle.kr/wp-content/plugins/contextual-related-posts/default.png)
