Notice
Recent Posts
Recent Comments
Link
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

자이의 프로그래밍

offset 본문

Algorithm/Cases-BOJ

offset

Xi_kor 2020. 5. 14. 21:17

문제

 

5x5 2차원 배열이 주어질 때 어떤 원소가 상하좌우에 있는 원소보다 작을 때 해당 위치에 * 을 표시하는 프로그램을 작성하시오. 경계선에 있는 수는 상하좌우 중 존재하는 원소만을 비교한다.

 

입력

 

5x5 행렬의 정보가 25 개의 수로 주어진다. 각 수는 0 에서 9 사이 수이다.

 

출력

 

*를 포함한 행렬을 출력예의 형식으로 출력한다.

 

예제 입력

3 4 1 4 9

2 9 4 5 8

9 0 8 2 1

7 0 2 8 4

2 7 2 1 4

 

예제 출력

3 4 * 4 9

* 9 4 5 8

9 0 8 2 *

7 0 2 8 4

* 7 2 * 4

 

------------------------------------------------------------------------------------------------------------------------------

 

#include <iostream>
using namespace std;

int main() {
	int arr[7][7] = { 0, };
	int status[7][7] = { 0, };
	for (int i = 0; i < 5; i++) {
		for (int j = 0; j < 5; j++)
			cin >> arr[i][j];
	}
	for (int i = 0; i < 5; i++) {
		for (int j = 0; j < 5; j++) {
			if (i == 0) {
				if (j == 0) {
					if (arr[i][j] < arr[i][j + 1] && arr[i][j] < arr[i + 1][j])
						status[i][j] = 1;
				}
				else if (j == 4) {
					if (arr[i][j] < arr[i][j - 1] && arr[i][j] < arr[i + 1][j])
						status[i][j] = 1;
				}
				else {
					if (arr[i][j] < arr[i][j - 1] && arr[i][j] < arr[i][j + 1] && arr[i][j] < arr[i + 1][j])
						status[i][j] = 1;
				}
			}
			else if (i == 4) {
				if (j == 0) {
					if (arr[i][j] < arr[i - 1][j] && arr[i][j] < arr[i][j + 1])
						status[i][j] = 1;
				}
				else if (j == 4) {
					if (arr[i][j] < arr[i - 1][j] && arr[i][j] < arr[i][j - 1])
						status[i][j] = 1;
				}
				else {
					if (arr[i][j] < arr[i - 1][j] && arr[i][j] < arr[i][j - 1] && arr[i][j] < arr[i][j + 1])
						status[i][j] = 1; 
				}
			}
			else if (j == 0) {
				if (arr[i][j] < arr[i - 1][j] && arr[i][j] < arr[i + 1][j] && arr[i][j] < arr[i][j + 1])
					status[i][j] = 1;
			}
			else if (j == 4) {
				if (arr[i][j] < arr[i - 1][j] && arr[i][j] < arr[i + 1][j] && arr[i][j] < arr[i][j - 1])
					status[i][j] = 1;
			}
			else {
				if (arr[i][j] < arr[i - 1][j] && arr[i][j] < arr[i + 1][j] && arr[i][j] < arr[i][j - 1] && arr[i][j] < arr[i][j + 1])
					status[i][j] = 1;
			}
		}
	}

	for (int i = 0; i < 5; i++) {
		for (int j = 0; j < 5; j++) {
			if (status[i][j] == 1) {
				cout << "* ";
			}
			else {
				cout<<arr[i][j] << " ";
			}
		}
		cout << endl;
	}
	

	return 0;
}


'Algorithm > Cases-BOJ' 카테고리의 다른 글

검증수  (0) 2020.05.14
rook  (0) 2020.05.14
mine  (0) 2020.05.14
maxofarr  (0) 2020.05.13
GCD LCM  (0) 2020.05.13