문제&링크
https://www.acmicpc.net/problem/1895
풀이
1. 전체 이미지를 확인해야 하기에 완전 탐색을 사용한다.
2. 필터의 크기가 3 x 3이기에 필터의 사각형의 왼쪽 위를 기준으로 두고 반복문을 사용한다. 즉 R과 C의 크기 -2까지 반복문 사용한다.
3. 해당 필터 내에 있는 모든 값을 벡터 V에 삽입한다.
4. 필터에 대한 반복문이 끝날 때 벡터 V를 오름차순으로 sort하고, 중간 값인 네 번째 인덱스를 벡터 ans에 삽입한다.
5. 이미지의 모든 부분에 대해 필터를 씌우고 난 후 모아진 벡터 ans에 대해서 입력한 값 T보다 큰지 작은지 판단 후 정답인 cnt를 구한다.
코드
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int img[41][41];
vector<int> ans;
int main() {
int R, C;
int T;
cin >> R >> C;
for (int i = 1; i <= R; i++) {
for (int j = 1; j <= C; j++) {
cin >> img[i][j];
}
}
cin >> T;
for (int i = 1; i <= R - 2; i++) {
for (int j = 1; j <= C - 2; j++) {
vector<int> V;
for (int k = 0; k < 3; k++) {
for (int l = 0; l < 3; l++) {
V.push_back(img[k + i][l + j]);
}
}
sort(V.begin(), V.end());
ans.push_back(V[4]);
}
}
int cnt = 0;
for (int i = 0; i < ans.size(); i++) {
if (ans[i] >= T) cnt++;
}
cout << cnt;
}
'Koala - 16기 > 코딩테스트 심화 스터디' 카테고리의 다른 글
[BOJ/Python3] 1065번: 한수 (0) | 2024.09.30 |
---|---|
백준15655 / 파이썬 / N과 M(6) (0) | 2024.09.29 |
[백준/Python] 15663번 : N과 M (9) (0) | 2024.09.29 |
[백준/Python] 14888번: 연산자 끼워넣기 (0) | 2024.09.29 |
[백준/Python] 14888번: 연산자 끼워넣기 (0) | 2024.09.29 |