-
21608 상어 초등학교코테 대비 python/백준 2022. 8. 5. 10:24
https://www.acmicpc.net/problem/21608
21608번: 상어 초등학교
상어 초등학교에는 교실이 하나 있고, 교실은 N×N 크기의 격자로 나타낼 수 있다. 학교에 다니는 학생의 수는 N2명이다. 오늘은 모든 학생의 자리를 정하는 날이다. 학생은 1번부터 N2번까지 번호
www.acmicpc.net
#import sys #input = sys.stdin.readline n = int(input()) m=n*n room = [[0]*n for _ in range(n)] like = [[] for _ in range(m+1)] dx=[0,0,1,-1] dy=[1,-1,0,0] for _ in range(m): array = list(map(int, input().split())) #당사자 제외 각 행 좋아하는 사람 like_n = array[1:] #당사자 칸안에 당사자가 좋아하는 사람 번호 넣기 like[array[0]] = like_n temp = [] for i in range(n): for j in range(n): sum_like_n = 0 sum_empty = 0 if room[i][j] !=0 : continue for k in range(4): nx = i + dx[k] ny = j + dy[k] if nx <0 or nx > n-1 or ny <0 or ny > n-1: continue if room[nx][ny] in like_n: sum_like_n +=1 if room[nx][ny] == 0: sum_empty +=1 temp.append((sum_like_n,sum_empty,(i,j))) temp.sort(key = lambda x:(-x[0], -x[1], x[2])) room[temp[0][2][0]][temp[0][2][1]] = array[0] sum_point = 0 for i in range(n): for j in range(n): point = 0 for k in range(4): nx = i + dx[k] ny = j + dy[k] if nx < 0 or nx > n - 1 or ny < 0 or ny > n - 1: continue if room[nx][ny] in like[room[i][j]]: point += 1 continue if point != 0: sum_point += (10 ** (point - 1)) print(sum_point)
후 ming에게 쿠사리 들을 생각 하니 아찔 ㅜ ㅋㅋ
'코테 대비 python > 백준' 카테고리의 다른 글
1316 그룹 단어 체커 (1) 2022.08.05 2960 에라토스테네스의 체 (0) 2022.08.05 1713 후보 추천하기 (0) 2022.08.04 16926 배열 돌리기 1 (0) 2022.08.04 백준 4673 (0) 2022.08.02