https://www.acmicpc.net/problem/1051
처음에 보고 쉬운 문제인 줄 알고, 30분 안에 풀고 다른 공부를 하려 했습니다.
ㅎ 거의 2시간이 걸렸네요
#include <stdio.h>
int main(void) {
int a = 0, b = 0;
int small, big;
char arr[100][100] = {};
scanf("%d%d", &a, &b);
for(int i = 0; i < a; i++) {
scanf("%s", arr[i]);
}
if (a <= b) {
small = a;
big = b;
a--;
b--;
for(int k = 0; k <= a; a--) {
for(int i = 0; i < small - a; i++) {
for(int j = 0; j < big - a; j++) {
if (a == 0) {
printf("1");
return 0;
}
else if (arr[i][j] == arr[a + i][j] && arr[i][a + j] == arr[a + i][a + j] && arr[i][a + j] == arr[i][j]) {
printf("%d", (a + 1) * (a + 1));
return 0;
}
}
}
}
}
else {
small = b;
big = a;
a--;
b--;
for(int k = 0; k <= b; b--) {
for(int i = 0; i < big - b; i++) {
for(int j = 0; j < small - b; j++) {
if (b == 0) {
printf("1");
return 0;
}
else if (arr[i][j] == arr[b + i][j] && arr[i][b + j] == arr[b + i][b + j] && arr[i][b + j] == arr[i][j]) {
printf("%d", (b + 1) * (b + 1));
return 0;
}
}
}
}
}
}
삼중 for문은 처음 써보네요. ㅎ
제가 이 문제를 2시간 동안 풀고 설명해드릴 염치는 없습니다.
다 풀고 검색해보니, Elly라는 분이 정말 잘 풀어두셨더라고요.
혹시나 실수로 제 블로그에 들어와서 이런 더러운 코드를 보셨다면
이렇게 푸는 사람도 있구나.
하시고 Elly 님의 네이버 블로그를 참고하시면 좋을 것 같습니다.
나중에 제가 더 똑똑해지면 무슨 생각으로 코드를 짰는지 수정하여 추가하겠습니다.
정말 많이 틀렸네요.
그래도 맞춰서 기분은 좋습니다.
감사합니다.
'백준' 카테고리의 다른 글
[C언어] 백준 | 24228번 젓가락 (0) | 2022.04.01 |
---|---|
[C언어] 백준 | 11057번 오르막 수 (0) | 2022.03.31 |
[C언어] 백준 | 11720번 숫자의 합 (0) | 2022.03.30 |
[C언어] 백준 | 4375번 1 (0) | 2022.03.29 |
[C언어] 백준 | 2164번 카드2 (0) | 2022.03.26 |