알고리즘/구름톤 챌린지

구름톤 2주차 후기 - 2

ebang 2023. 8. 22. 11:20
반응형

8.22 화요일

구름톤 문제!

무지 쉬운 완전탐색이었다. 

근데 count 함수에서 입력이 (0,0) 일때, (-1,0) 등에 접근할 수 있는 위험이 있는데

이런 부분은 안 잡아주었다. 

 

이렇게 풀었지만

#include <iostream>
using namespace std;

long long N, K;
int board[1001][1001];
int dist[1001][1001];

void count (int r, int c){
	int dir[8][2] = {{1,0}, {-1, 0}, {0,1}, {0,-1}, {1,1}, {-1, 1}, {-1, -1}, {1, -1}};
	int count = 0;
	for(int i = 0; i < 8; i++){
	 	int x = r + dir[i][0];
		int y = c + dir[i][1];
		if(board[x][y] == 1)
				count++;
	}
	dist[r][c] = count;
}

int main() {
	cin >> N >> K;
	
	for(int i = 0; i < N; i++){
		for(int j = 0; j < N; j++){
			cin >> board[i][j];
		}
	}
	
	for(int i = 0; i < N; i++){
		for(int j = 0; j < N; j++){
			if(board[i][j] == 0)
					count(i,j);
		}
	}
	
	int ans = 0;
	for(int i = 0; i < N; i++){
		for(int j = 0; j < N; j++){
				if(dist[i][j] == K)
						ans++;
		}
	}
	
	cout << ans ;
	

	

	return 0;
}

        if(x < 0 || y < 0 || x > N ||| y > N) 
         continue;

 

이 문장을 추가해주어야 한다. 아래처럼. 

#include <iostream>
using namespace std;

long long N, K;
int board[1001][1001];
int dist[1001][1001];

void count (int r, int c){
	int dir[8][2] = {{1,0}, {-1, 0}, {0,1}, {0,-1}, {1,1}, {-1, 1}, {-1, -1}, {1, -1}};
	int count = 0;
	for(int i = 0; i < 8; i++){
	 	int x = r + dir[i][0];
		int y = c + dir[i][1];
        if(x < 0 || y < 0 || x > N ||| y > N) 
        	continue;
		if(board[x][y] == 1)
				count++;
	}
	dist[r][c] = count;
}

int main() {
	cin >> N >> K;
	
	for(int i = 0; i < N; i++){
		for(int j = 0; j < N; j++){
			cin >> board[i][j];
		}
	}
	
	for(int i = 0; i < N; i++){
		for(int j = 0; j < N; j++){
			if(board[i][j] == 0)
					count(i,j);
		}
	}
	
	int ans = 0;
	for(int i = 0; i < N; i++){
		for(int j = 0; j < N; j++){
				if(dist[i][j] == K)
						ans++;
		}
	}
	
	cout << ans ;
	

	

	return 0;
}

 

분발하자 구름톤!

반응형

'알고리즘 > 구름톤 챌린지' 카테고리의 다른 글

구름톤 4주차 후기 (1)  (0) 2023.09.04
구름톤 후기 3주차 (2)  (0) 2023.08.29
구름톤 3주차 후기 - 1  (1) 2023.08.28
구름톤 2주차 후기 -1  (0) 2023.08.21
구름톤 챌린지 1주차 후기 (1)  (0) 2023.08.15