[백준/파이썬] 2160번 그림 비교 풀이

업데이트:



문제 정보


풀이

문제

여러 개의 5x7 그림 중 서로 가장 비슷한(다른 칸 수가 최소인) 두 그림 번호를 찾는 문제입니다.

코드

n = int(input())
paints = [{'X':set([]), '.':set([])} for _ in range(n)]

for no in range(n):
    for i in range(5):
        s = input()
        for j in range(len(s)):
            paints[no][s[j]].add((i, j))

diffs = []
for i in range(n):
    for j in range(i+1, n):
        diffs.append((abs(len(paints[i]['.'] - paints[j]['.'])) +\
                      abs(len(paints[i]['X'] - paints[j]['X'])),
                      i + 1, j + 1))

print(*list(min(diffs))[1:])

설명

각 그림의 X/. 좌표 집합을 저장한 뒤 모든 그림 쌍에 대해 차이를 계산해서 최솟값을 가지는 번호 쌍을 출력합니다.



댓글남기기