알고리즘 문제풀이
[코드업] 바둑알 십자 뒤집기 문제풀이(C++)
도리컴
2023. 2. 28. 22:13
반응형
그리디 하게 푸는 것이 답
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
32
33
34
35
36
37
38
39
40
41
42
|
#include<iostream>
#include<vector>
using namespace std;
/*
<문제>
바둑판에 돌이 있을 때, n개 좌표 받아서 십자뒤집기한 결과 출력하기
(a, b) -> (a, b)십자가로 모두 뒤집기(처음 시작이 1임)
<입력>
19*19 2차원 배열 형태(0 또는 1로 주어짐)
N (십자뒤집기 횟수, 10이하)
N줄로 좌표 주어짐
<출력>
뒤집은 후의 바둑판 19*19로 출력
*/
int main() {
vector<vector<int>> pan(19, vector<int>(19, 0));
for (int i = 0; i < 19; i++) {
for (int j = 0; j < 19; j++) {
int a; cin >> a; pan[i][j] = a;
}
} //바둑판 입력 완료
int N; cin >> N;
for (int i = 0; i < N; i++) { //뒤집기 실행
int a, b; cin >> a >> b; //좌표(a, b) - 1부터 시작
a--; b--;
for (int k = 0; k < 19; k++) { //a에 대한 뒤집기
if (pan[a][k] == 0) pan[a][k] = 1; else pan[a][k] = 0;
if (pan[k][b] == 0) pan[k][b] = 1; else pan[k][b] = 0;
}
}
for (int i = 0; i < 19; i++) {
for (int j = 0; j < 19; j++) {
cout << pan[i][j] << " ";
}
cout << endl;
}
return 0;
}
|
cs |
반응형