https://www.acmicpc.net/problem/1455
- 코드
#include <iostream>
#include <algorithm>
#include <cstring>
#include <string>
#include <stdio.h>
#include <queue>
#include <vector>
#include <unordered_map>
#include <set>
#include <map>
#include<cmath>
#include<stack>
#include<deque>
#define LL long long
using namespace std;
int arr[101][101];
void reverse(int a, int b) {
for (int i = 1; i < a + 1; i++) {
for (int j = 1; j < b + 1; j++) {
if (arr[i][j] == 1) {
arr[i][j] = 0;
continue;
}
else arr[i][j] = 1;
}
}
}
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int n;
int m;
string s;
cin >> n >> m;
for (int i = 1; i < n + 1; i++) {
cin >> s;
for (int j = 1; j < m + 1; j++) {
arr[i][j] = s[j - 1] - '0';
}
}
int cnt = 0;
for (int i = n; i > 0; i--) {
for (int j = m; j > 0; j--) {
if (arr[i][j] == 1) {
reverse(i, j);
cnt++;
}
}
}
cout << cnt << endl;
return 0;
}
- 알고리즘 분류 : 그리디 알고리즘
- 문제 해설
동전을 뒤집은 순서가 오른쪽에서 왼쪽으로 아래에서 위로 해도 된다는 것만 알면 구현하기 쉬운 문제였다. 이전 뒤집은 것에 영향을 안주고 0으로 갱신해 나가며 카운트를 해주면 된다. 예외처리할 것도 없다.
'Koala - 14기 > 코딩테스트 준비 스터디' 카테고리의 다른 글
[백준/python3] 25603번 : 짱해커 이동식 (0) | 2024.04.08 |
---|---|
[백준/python] 19951 태상이의 훈련소 생활 (0) | 2024.04.08 |
백준 30088번 공포의 면담실 C++ (0) | 2024.04.08 |
[백준/Java] 17179 케이크 자르기 (0) | 2024.04.07 |
[백준 / c++] 15685 드래곤커브 (0) | 2024.04.07 |