본문 바로가기
백준 문제풀이

BOJ/1652

by alscks 2024. 1. 7.

누울 자리를 찾아라.

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int chartoint(char s);

int main(void) {

	int cnt;
	scanf("%d", &cnt);

	char arr[100][100];

	for (int i = 0; i < cnt; i++) {
		scanf("%s", &arr[i]);
	}

	int rowzari=0; int colzari=0;

	for (int i = 0; i < cnt; i++) {
		int count = 0;
		int zari = 0;
		for (int j = 0; j < cnt; j++) {
			if (arr[i][j] == '.') {
				count++;
			}
			else {
				if (count >= 2) {
					zari++;
				}
				count = 0;
			}	
		}
		if (count >= 2) {
			zari++;
		}
		rowzari = rowzari + zari;
	}
	
	for (int i = 0; i < cnt; i++) {
		int count = 0;
		int zari = 0;
		for (int j = 0; j < cnt; j++) {
			if (arr[j][i] == '.') {
				count++;
			}
			else {
				if (count >= 2) {
					zari++;
				}
				count = 0;
			}
		}
		if (count >= 2) {
			zari++;
		}
		colzari = colzari + zari;
	}

	printf("%d %d", rowzari, colzari);

	return 0;
	
}

슬슬 필요 없는 메모리가 크게 잡히는 것 같다. malloc 사용해보깅

 

풀이

1. 2차원 배열 입력받기
2. 2중 for문으로 구현. 2차원 배열을 순회하며 ','가 나올때 count++
3. X가 나오면 그때의 count를 참고하여 2 이상이면 zari++후 count 초기화.
4. 한 열이 끝나면 그때 count를 참고하여 2 이상이면 zari++. 이후 구해진 zari를 합치기
5. 해당 작업을 열방향으로 한번 행방향으로 한번 수행하기

 

'백준 문제풀이' 카테고리의 다른 글

BOJ/2816  (0) 2024.01.07
BOJ/1110  (0) 2024.01.07
BOJ/17269  (2) 2024.01.06
BOJ/2750  (1) 2024.01.06
BOJ/2979  (0) 2024.01.06