728x90
난이도 | Silver3 |
링크 | https://www.acmicpc.net/problem/3085 |
문제 사진
풀이.
다해보는 부르트포스 문제
구현처럼 풀면 된다.
logic.
1. 사탕의 색이 다른 인접한 두 칸을 고른다.
2. 고른 칸 안에 들어있는 사탕을 서로 교환한다.
3. 모두 같은 색으로 이루어져 있는 가장 긴 연속 부분을 고른다.
4. 최대값을 갱신한다.
소스코드.
public class B3085 {
static int max=0;
static int N;
public static void main(String[] args) throws IOException{
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
N=Integer.parseInt(br.readLine());
char[][] map=new char[N][N];
for(int i=0;i<N;i++) {
map[i]=br.readLine().toCharArray();
}
//가로
for(int i=0;i<N;i++) {
for(int j=0;j<N-1;j++) {
if(map[i][j]!=map[i][j+1]) {
char temp=map[i][j];
map[i][j]=map[i][j+1];
map[i][j+1]=temp;
arrCheck(map);
map[i][j+1]=map[i][j];
map[i][j]=temp;
}
}
}
//세로
for(int i=0;i<N;i++) {
for(int j=0;j<N-1;j++) {
if(map[j][i]!=map[j+1][i]) {
char temp=map[j][i];
map[j][i]=map[j+1][i];
map[j+1][i]=temp;
arrCheck(map);
map[j+1][i]=map[j][i];
map[j][i]=temp;
}
}
}
System.out.println(max);
}
public static void arrCheck(char[][] map) {
//가로
for(int i=0; i<N;i++) {
int count=1;
for(int j=0;j<N-1;j++) {
if(map[i][j]==map[i][j+1]) {
count++;
}else {
count=1;
}
max=Math.max(count, max);
}
}
//세로
for(int i=0; i<N;i++) {
int count=1;
for(int j=0;j<N-1;j++) {
if(map[j][i]==map[j+1][i]) {
count++;
}else {
count=1;
}
max=Math.max(count, max);
}
}
}
}
후기.
풀 수 있는 logic을 결정하고 순서대로 구현하면 되는 문제
기업 코테도 이만치 했으면 좋겠다
728x90
'알고리즘 > Backjoon' 카테고리의 다른 글
B16948 : 데스 나이트 (0) | 2022.02.23 |
---|---|
18258 : 큐 2 (0) | 2022.02.22 |
B18108: 1998년생인 내가 태국에서는 2541년생?! (0) | 2022.02.12 |
5567번: 결혼식 (0) | 2020.02.23 |
4948번: 베르트랑 공준 (0) | 2020.02.23 |
댓글