๋ณธ ๋ฌธ์ ๋ ๊ฐ๋ฅํํ ๋ชจ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ํ์ํ๋ ๋ธ๋ฃจํ ํฌ์ค ๋ฌธ์ ์ด๋ค.
์ ๋ ฅ์ 50์ ์ ํ์๊ฐ 2์ด์ด๋ ๋ค์ค for๋ฌธ์ผ๋ก ๋ชจ๋ ๊ฒฝ์ฐ๋ฅผ ํ์ํ๋ ๋ฐ ์กฐ๊ฑด์ด ์ถฉ์กฑ๋๋ค.
https://www.acmicpc.net/problem/1051
1051๋ฒ: ์ซ์ ์ ์ฌ๊ฐํ
N*Mํฌ๊ธฐ์ ์ง์ฌ๊ฐํ์ด ์๋ค. ๊ฐ ์นธ์ ํ ์๋ฆฌ ์ซ์๊ฐ ์ ํ ์๋ค. ์ด ์ง์ฌ๊ฐํ์์ ๊ผญ์ง์ ์ ์ฐ์ฌ ์๋ ์๊ฐ ๋ชจ๋ ๊ฐ์ ๊ฐ์ฅ ํฐ ์ ์ฌ๊ฐํ์ ์ฐพ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค. ์ด๋, ์ ์ฌ๊ฐํ์ ํ ๋๋
www.acmicpc.net
๋ณธ ๋ฌธ์ ๋ฅผ ํธ๋๋ฐ ์ ๋ง ์ค์ํ ํฌ์ธํธ๊ฐ ์๋ค.
๋ฐ๋ผ์ ๊ธธ์ด๊ฐ 3์ธ ์ ์ผ๊ฐํ ๋ถํฐ ์ฐพ์์ ๋ค์ค for๋ฌธ์ ๋น ์ ธ ๋์ค๋ฉด ๋๋ค๊ณ ํ๋จํ์๋ค.
import java.util.Scanner;
public class Main {
static int sum,n,m;
static int[][] arr;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
n = sc.nextInt();
m = sc.nextInt();
int min = n>m? m:n;
arr = new int[n][m];
String line = "";
for(int i=0; i<n; i++) {
line = sc.next();
for(int j=0; j<m; j++) {
arr[i][j] = line.charAt(j)-'0';
}
}
for(int i=min; i>0; i--) {
for(int j=0; j+i-1<n; j++) {
for(int k=0; k+i-1<m; k++) {
if(solve(j,k,i)) {
sum = i*i;
break;
}
}
if(sum>0)break;
}
if(sum>0)break;
}
System.out.println(sum);
sc.close();
}
static boolean solve(int x, int y, int w) {
if(arr[x][y]==arr[x][y+w-1]&&arr[x][y]==arr[x+w-1][y]&&arr[x][y]==arr[x+w-1][y+w-1])return true;
else return false;
}
}
์ ๊ธฐ์ ํจ์ํ ์ํฌ ๋ถ๋ถ์ 1๊ฐ ๋ ์๋ค. for๋ฌธ ๋ถ๋ถ์ด๋ค. return์ ํ๋ฉด ์ ๋ ๊ฒ ์ง์ ๋ถํ๊ฒ break๊ตฌ๋ฌธ์ด ํ์๊ฐ ์๊ณ . ๋ค๋ฅธ ํด๊ฒฐ์ฑ ์ ๊ท์ฐฎ์์ ์ฐ์ง ์์๋ค. ํ์ง๋ง ๋๋ฆ ๊ด์ฐฎ์์ ๊ทธ๋๋ก ์งํํ๋ค. solve๋ก ํจ์๋ฅผ ๋นผ์ ์กฐ๊ฑด๋ฌธ์ ๊ฒ์ฌํ๋๋ฐ ์์งํ ์ด๊ฒ ํ์ํ๋ ์ถ๋ค...์ฐจ๋ผ๋ฆฌ ๊ทธ๋ฅ ์กฐ๊ฑด๋ฌธ์ผ๋ก ํ ๊ฑธ..
์ค๋์ ๋ถ์กฑํ ์
1. ์ด๋ฒ ๋ฌธ์ ์๋ ์กฐ๊ธ๋ ์ฝ๊ธฐ ์ฌ์ด ์ฝ๋๋ฅผ ์์ฑํ ์ ์๋๋ฐ ๋จธ๋ฆฟ์์ ์๋ ๋ถ๋ถ๋ง ์ ๊ฒฝ์ฐ๋ค ๋ณด๋ ์ ๋ค๋ฌ๋ ์์ ์ ํ์ง ์์๋ค.
2. ๋ณ์์ด๋ฆ ์ข ์๊ฐํ๊ณ ๋ง๋ค์. solve(), sum์ด ๋ญ์ผ...
๋ง์ด ๋ถ์กฑํ์ง๋ง ๋์์ง๊ณ ์๋ค. ๊พธ์คํ๊ฒ Best Of Best์ด๋ค. ์ฌ๋ด) 2-2ํ๊ธฐ ์๊ณ ๋ฆฌ์ฆ ๊ณผ๋ชฉ์ด ๋๋ฌด ๊ธฐ๋๋๋ค.
'์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํฐ ์์ ๋ง์ (0) | 2021.06.09 |
---|---|
[์๊ณ ๋ฆฌ์ฆ] DFS, BFS์ ๊ตฌํ (0) | 2020.10.13 |
10816 ์ซ์ ์นด๋ 2 (0) | 2020.08.05 |
๋ฐฑ์ค 1012 ์ ๊ธฐ๋ ๋ฐฐ์ถ (์๋ฐ) (0) | 2020.07.27 |
๋ฐฑ์ค์จ๋ผ์ธ์ ์ง 2759 ๊ณ๋จ ์ค๋ฅด๊ธฐ ์๋ฐํ์ด (0) | 2020.07.12 |