알고리즘/구름톤 챌린지

구름톤 챌린지 4주차 후기(2) - 18일차

ebang 2023. 9. 6. 13:12
반응형

 

교차점은 가로선과 세로선이 겹쳐서 만들어진다. 

세로선, 가로선끼리는 서로 겹치지 않게 만들어지기 때문에, 세로선과 가로선이 서로 얼마나 겹치는 지에 따라 교차점의 개수가 달라진다.

 

예제1을 보면 아래 코드에서 주석처리된 표를 보면, 가로와 세로를 저장하는 배열을 만들어두었다가, 이 둘의 곱의 전체 합을 구하면 답이 된다. 

초기 상태가 0이기 때문에, 교차하지 않는 경우엔 자동으로 0을 더하는 꼴이 되어 문제가 없다.

 

정답을 보자!

#include <iostream>

using namespace std;
long long  garo[101][101] = {0,};
long long  sero[101][101] = {0,};
long long  N, M;
long long ans= 0;
/*

	1  2  3
	1  2  3 
	1  2  3
	
	가로 : 1

	
	<세로>
	1 0 1
	1 1 1 
	1 1 1 
	
	<가로>
	0 0 0 
	2 2 2 
	0 0 0 
*/

void draw(int r, int c, char dir){
	//(r,c) 칸부터 dir 방향으로 그린다.
	switch(dir){
			case('U'):
				while(r >= 1)
						sero[r--][c]++;
				break;
			case('D'):
				while(r <= N)
						sero[r++][c]++;
				break;
			case('R'):
				while(c <= N)
						garo[r][c++]++;
				break;
			case('L'):
				while(c >= 1)
						garo[r][c--]++;
				break;
	}
}

void count(){
	ans = 0;
	for(int i = 1; i <= N; i++){
		for(int j = 1; j <= N; j++){
			ans += garo[i][j] * sero[i][j];
		}
	}
}

int main() {
	cin >> N >> M;
	int a , b;
	char dir;
	for(int i = 0; i < M; i++){
		cin >> a >> b >> dir;
		draw(a,b,dir);
	}
	
	count();
	cout << ans;
	
}

 

반응형

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

구름톤 4주차 후기 (1)  (0) 2023.09.04
구름톤 후기 3주차 (2)  (0) 2023.08.29
구름톤 3주차 후기 - 1  (1) 2023.08.28
구름톤 2주차 후기 - 2  (0) 2023.08.22
구름톤 2주차 후기 -1  (0) 2023.08.21