https://www.acmicpc.net/problem/3085
μ½λ
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static char[][] board; // 맡 ν¬κΈ°
public static int N; // 맡 ν¬κΈ°
public static int max = 0; // λ¨Ήμ μ μλ μ΅λ μ¬νκ°μ
/* λ λ¬Έμ κ΅ννλ λ©μλ */
public static void swap(char a, char b) {
char temp = a;
a = b;
b = temp;
}
/* κ°λ‘λ‘, μΈλ‘λ‘ λΉκ΅νλ©΄μ λ¨Ήμ μ μλ μ¬νμ μ΅λ κ°―μ μ°ΎκΈ° */
public static void arrCheck() {
// → κ°λ‘λ‘ μ²΄ν¬
for(int i=0; i<N; i++) {
int count = 1;
for(int j=0; j<N-1; j++) {
// μ΄μ μ¬νκ³Ό λμΌν κ²½μ° -> κ³μ λ¨Ήλλ€
if(board[i][j] == board[i][j+1])
count ++;
// μ΄μ κ³Ό λ€λ₯Έ μ¬νμΈ κ²½μ° -> μλ‘ λ¨Ήμ΄μΌνλ―λ‘ 1λ‘ μ΄κΈ°ν
else
count = 1;
// μ¬ν μ΅λ κ°μ μ μ₯
max = Math.max(max, count);
}
}
// ↓ μΈλ‘λ‘ μ²΄ν¬
for(int i=0; i<N; i++) {
int count = 1;
for(int j=0; j<N-1; j++) {
if(board[j][i] == board[j+1][i])
count ++;
else
count = 1;
max = Math.max(max, count);
}
}
}
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
N = scan.nextInt(); // 보λμ ν¬κΈ°
board = new char[N][N];
/* N x N μ¬ν μ
λ ₯λ°κΈ° */
for(int i=0; i<N; i++) {
String str = scan.next();
for(int j=0; j<board[i].length; j++) {
board[i][j] = str.charAt(j);
}
}
/* κ°λ‘λ‘ μΈμ ν λ μ¬ν κ΅ννκ³ μ΅λ μ¬ν κ°μ μ°Ύκ³ μμμΉ */
for(int i=0; i<N; i++) {
for(int j=0; j<N-1; j++) {
// κ°λ‘λ‘ μΈμ ν λ λ¬Έμ κ΅ν
//swap(board[i][j], board[i][j+1]);
char temp = board[i][j];
board[i][j] = board[i][j+1];
board[i][j+1] = temp;
// →, ↓ 체ν¬
arrCheck();
// μ΄μ μ κ΅νν λ¬Έμ 볡ꡬ
//swap(board[i][j], board[i][j+1]);
temp = board[i][j];
board[i][j] = board[i][j+1];
board[i][j+1] = temp;
}
}
/* μΈλ‘λ‘ μΈμ ν λ μ¬ν κ΅ννκ³ μ΅λ μ¬ν κ°μ μ°Ύκ³ μμμΉ */
for(int i=0; i<N; i++) {
for(int j=0; j<N-1; j++) {
//swap(board[j][i], board[j+1][i]);
char temp = board[j][i];
board[j][i] = board[j+1][i];
board[j+1][i] = temp;
// →, ↓ 체ν¬
arrCheck();
// μ΄μ μ κ΅νν λ¬Έμ 볡ꡬ
//swap(board[j][i], board[j+1][i]);
temp = board[j][i];
board[j][i] = board[j+1][i];
board[j+1][i] = temp;
}
}
System.out.println(max);
scan.close();
}
}
νμ΄
λ¬Έμ μμ μ£Όμ΄μ§ 쑰건μλ°λΌ κ·Έλλ‘~ μμ νμμ ν΅ν΄ ꡬννλ©΄ λλ€.
λλ κ³μ λ§μλ€κ³ μκ°νλλ° μ€μ μΆλ ₯ κ²°κ³Όκ°μ λ¬λΌμ κ³μ 보λ€κ°... swap() ν¨μμ λ¬Έμ μλ€.
κ°μ κ΅νμ ν΄μΌνλλ°, μ λ°μμΌλ‘ ν¨μμμμ κ°μ κ΅ννλ€κ³ ν΄λ, μ€μ λ‘λ κ°μ κ΅νμ΄ μ΄λ€μ§μ§ μλλ€.
μ¦ Call By Valueμ΄λ Call By Reference μ΄λλμ λ°λΌ μ°¨μ΄μΈλ°, Cμμλ ν¬μΈν°λ‘ κ΅νμ ν μ μλ€.
μμΈν λ΄μ©μ λ€μμ μ°Έκ³ νμ.
λ¬΄νΌ λ¬Έμ λ‘ λμμμ ν΄κ²° λ°©λ²μ λ€μκ³Ό κ°λ€.
N*N ν¬κΈ°κ° μ£Όμ΄μ‘μλ, μΈμ ν λ μΉΈμ κ³ λ₯΄κ³ κ°μ κ΅νν΄μ κ°μμμΌλ‘ μ΄λ£¨μ΄μ Έ μλ(κ°μ₯ κΈ΄ μ°μλΆλΆ, ν or μ΄)μ κ³ λ₯Έ λ€μ κ·Έ μ¬νμ λͺ¨λ λ¨Ήλλ° μ΅λκ°μ ꡬν΄μΌ νλ€.
λ¨Όμ μΈμ ν μΉΈμ΄ κ°λ‘λ‘ μΈμ ν λ λ¬ΈμλΆν° κ΅ννκ³ , arrCheck() λ©μλλ₯Ό νΈμΆν ν λ€μ κ΅νν λ κ°μ μλμνλ‘ λ³΅κ΅¬νλ€(λ€μ κ΅ν)
κ·Έ ν μΈμ ν μΉΈμ΄ μΈλ‘λ‘ μΈμ ν λ λ¬Έμλ κ΅ννκ³ , arrCheck() λ©μλλ₯Ό νΈμΆν ν λ€μ κ΅νν λ κ°μ μλμνλ‘ λ³΅κ΅¬νλ€(λ€μ κ΅ν)
* arrCheck()
μ λ©μλλ κ°λ‘(→) λ°©ν₯κ³Ό μΈλ‘(↓) λ°©ν₯μ λλ©΄μ λ¨Ήμ μ μλ μ¬νμ μ΅λκ°―μ(κ°μ₯ κΈ΄ μ°μλΆλΆ)λ₯Ό μ°Ύλ λ©μλλ€.
'Algorithm' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Codeforces] 1300A: Non-zero (0) | 2020.03.21 |
---|---|
νλ‘κ·Έλλ¨Έμ€[Java] - (Level2)λ 맡κ²(Heap) (0) | 2020.03.20 |
[λ°±μ€] 1417λ²: κ΅νμμ μ κ±°(μμ νμ) (0) | 2020.03.19 |
νλ‘κ·Έλλ¨Έμ€[Java] - (Level2)μ€ν¬νΈλ¦¬ (2) | 2020.03.19 |
νλ‘κ·Έλλ¨Έμ€[Java] - (Level2)μμ λ§λ€κΈ° (0) | 2020.03.18 |
λκΈ