단순 브루트포스 알고리즘 문제입니다. 5 * 7 크기의 그림 N개를 받아 두 개의 그림을 골라 서로 다른 칸의 개수가 가장 작은 경우를 찾는 문제입니다.
입력
더보기
int N; cin >> N;
string map[255];
for (int i = 0; i < N * 5; i++)
cin >> map[i];
그림 2개를 뽑아서 비교
더보기
int m = 9876543, ans = 0, res = 0; //m : 두 그림의 최소값을 계속 갱신
for (int i = 0; i < N; i++) {
for (int j = i + 1; j < N; j++) { //순열 방식으로 그림 선택
int x = i * 5; int y = j * 5;
int cnt = 0; // 두 그림에서 다른 칸의 갯수
for (int k = 0; k < 5; k++) { //두 그림을 비교
for (int l = 0; l < 7; l++) {
if (map[x][l] != map[y][l])
cnt++;
}
x++, y++;
}
if (cnt < m) { //이전의 두 그림의 최솟값과 현재 두 그림의 최솟값 비교
m = cnt;
ans = i + 1; res = j + 1;
}
}
}
전체 소스코드 1
더보기
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <string>
using namespace std;
int main() {
ios::sync_with_stdio(false); cin.tie(NULL);
int N; cin >> N;
string map[255];
for (int i = 0; i < N * 5; i++)
cin >> map[i];
int m = 9876543, ans = 0, res = 0;
for (int i = 0; i < N; i++) {
for (int j = i + 1; j < N; j++) {
int x = i * 5; int y = j * 5;
int cnt = 0;
for (int k = 0; k < 5; k++) {
for (int l = 0; l < 7; l++) {
if (map[x][l] != map[y][l])
cnt++;
}
x++, y++;
}
if (cnt < m) {
m = cnt;
ans = i + 1; res = j + 1;
}
}
}
printf("%d %d", ans, res);
}
'Koala - 2기 > A반' 카테고리의 다른 글
[14620 번] 꽃길 (0) | 2021.01.14 |
---|---|
[1051번] 숫자 정사각형 (0) | 2021.01.12 |
[7568번] 덩치 (0) | 2021.01.12 |
KOALA - A반 출석부 (0) | 2021.01.12 |
[3085번] 사탕 게임 (0) | 2021.01.11 |