구름톤 챌린지 구름 찾기 깃발
[느낀점]
문제를 보자마자 아 이거 나 혼자 못풀겠다! 싶었다. 저번에도 프로그래머스에서 지뢰찾기 문제를 푼 적이 있었는데 그때도 매우 어렵게 여러블로그 찾아가며 풀었었다. 8방탐색이란걸 해서 풀면 나름 쉽게 풀린다고 한다. 구름에서 제공한 풀이를보면 dx/dy 탐색법을 사용하면 된다고 한다. 하지만 dx/dy 탐색법이란걸 봐도 이해가 잘 안가서 나만의 방법으로 했다. 풀이가 되게 간단하고 허접하다. 각 방향별 상,하,좌,우, 대각선 총 8개의 if문이 들어가서 코드가 약간 더럽다. 다음엔 dx/dy 탐색법을 사용해 볼거라고 다짐해보며 일단 현재 풀이의 만족하기로 했다.
[결과 코드]
import java.io.*;
import java.util.*;
class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
int N = Integer.parseInt(st.nextToken());
int K = Integer.parseInt(st.nextToken());
int[][] arr = new int[N][N];
for(int i=0;i<N;i++){
st = new StringTokenizer(br.readLine(), " ");
for(int j=0;j<N;j++){
if(Integer.parseInt(st.nextToken())==1) {
arr[i][j] = -1;
} else {
arr[i][j] = 0;
}
}
}
for(int i=0;i<N;i++){
int score = 0;
for(int j=0;j<N;j++){
if(arr[i][j]==0){
if(i-1>=0){
if(arr[i-1][j]==-1) arr[i][j]++;
}
if(i+1<N){
if(arr[i+1][j]==-1) arr[i][j]++;
}
if(j-1>=0){
if(arr[i][j-1]==-1) arr[i][j]++;
}
if(j+1<N){
if(arr[i][j+1]==-1) arr[i][j]++;
}
if(i-1>=0 && j-1>=0){
if(arr[i-1][j-1]==-1) arr[i][j]++;
}
if(i-1>=0 && j+1<N){
if(arr[i-1][j+1]==-1) arr[i][j]++;
}
if(i+1<N && j-1>=0){
if(arr[i+1][j-1]==-1) arr[i][j]++;
}
if(i+1<N && j+1<N){
if(arr[i+1][j+1]==-1) arr[i][j]++;
}
}
}
}
int answer = 0;
for(int i=0;i<N;i++){
for(int j=0;j<N;j++){
if(arr[i][j]==K) {
answer++;
}
}
}
System.out.println(answer);
}
}
'구름톤 챌린지' 카테고리의 다른 글
구름톤 챌린지[JAVA] 9일차 학습 일기 (0) | 2023.08.24 |
---|---|
구름톤 챌린지[JAVA] 8일차 학습 일기 (0) | 2023.08.23 |
구름톤 챌린지[JAVA] 6일차 학습 일기 (0) | 2023.08.23 |
구름톤 챌린지[JAVA] 5일차 학습 일기 (0) | 2023.08.20 |
구름톤 챌린지[JAVA] 4일차 학습 일기 (0) | 2023.08.17 |