728x90
반응형
BaekJoon 백준 2160 그림 비교 문제는 N개의 그림이 있다. 각각의 그림은 5 ×7의 크기이고, 두 가지 색으로 되어 있다. 이러한 그림들이 N개 주어졌을 때, 가장 비슷한 두 개의 그림을 찾아내는 문제이다. 브루트 포스 알고리즘에 관한 문제로 난이도는 Bronze 1이다.
BaekJoon 2160 그림 비교 문제 정보
출처
- https://www.acmicpc.net/problem/2160
알고리즘 분류
- 문자열 string, 파싱 parsing, 구현
난이도
- 브론즈 1 / Bronze 1
그림 비교 문제 요약
- N(2≤N≤50) 개의 그림이 있다. 각각의 그림은 5 ×7의 크기이고, 두 가지 색으로 되어 있다. 이때 두 가지의 색을 각각 ‘X’와 ‘.’으로 표현하기로 하자.
- 두 개의 그림에서 서로 다른 칸의 개수가 가장 적을 때, 두 개의 그림이 가장 비슷하다고 하자.
- 이러한 그림들이 주어졌을 때, 가장 비슷한 두 개의 그림을 찾아내어 출력한다.
문제 풀이 과정
- 그림을 입력받는다.
- 서로 중복되지 않도록 그림 2개를 고른 뒤 모든 행과 열을 탐색하여 서로 다른 칸의 개수를 카운트한다.
- 매번 비교 후 이때까지 중에 서로 다른 칸의 개수가 제일 적으면 두 그림과 칸 수를 저장한다.
- 가장 비슷한 두 개의 그림을 찾아내어 출력한다.
코드 및 설명
N = int(input())
pictures = []
minimum = 36
ans1 = ans2 = 0
for i in range(N):
row = [] # i+1 번째 그림의 행
for _ in range(5):
row.append(input())
pictures.append(row)
for pic1 in range(N):
for pic2 in range(pic1 + 1, N):
cnt = 0
for r in range(5):
for c in range(7):
# 그림이 다르다면
if pictures[pic1][r][c] != pictures[pic2][r][c]:
cnt += 1
# 이 때까지의 비교 중 가장 비슷하다면 다른 칸 개수, 그림 2개 저장
if minimum > cnt:
minimum = cnt
ans1 = pic1
ans2 = pic2
print(f'{ans1 + 1} {ans2 + 1}')
BaekJoon 백준 2160 그림 비교 문제를 파이썬 python 브루트 포스 알고리즘으로 풀어보았다. 난이도는 Bronze 브론즈 1이다.
728x90
반응형
'Algorithm Problem Solving > BaekJoon' 카테고리의 다른 글
[BaekJoon] 백준 15947 아기 석환 뚜루루 뚜루 (Python / 파이썬) (0) | 2021.08.24 |
---|---|
[BaekJoon] 백준 17224 APC는 왜 서브태스크 대회가 되었을까? (Python / 파이썬) (0) | 2021.08.24 |
[BaekJoon] 백준 8595 히든 넘버 (Python / 파이썬) (0) | 2021.08.24 |
[BaekJoon] 백준 3023 마술사 이민혁 (Python / 파이썬) (0) | 2021.08.23 |
[BaekJoon] 백준 17363 우유가 넘어지면? (Python / 파이썬) (0) | 2021.08.23 |
댓글