[문제 위치]
https://www.acmicpc.net/problem/20114
[문제 풀이]
이 문제는 구현(블록 스캔) 를 통해 해결하는 문제이다.
각 문자는 높이 H, 너비 W의 블록으로 늘어나 있고 블록 내부 문자는 모두 동일하며 일부는 ‘?’로 지워졌다. 그러므로 각 블록을 훑어 ‘?’가 아닌 문자를 하나라도 찾으면 그 문자가 원래 문자이고, 전부 ‘?’이면 ‘?’을 출력하면 된다
아래는 이를 구현한 코드이다.
#include <bits/stdc++.h>
using namespace std;
#define FASTIO ios::sync_with_stdio(false); cin.tie(nullptr);
int main() {
FASTIO;
int N, H, W;
if (!(cin >> N >> H >> W)) return 0;
vector<string> g(H);
for (int i = 0; i < H; ++i) cin >> g[i]; // 각 행 길이 = N*W
string ans;
ans.reserve(N);
for (int i = 0; i < N; ++i) {
char pick = '?';
int start = i * W;
bool found = false;
for (int c = start; c < start + W && !found; ++c) {
for (int r = 0; r < H; ++r) {
if (g[r][c] != '?') {
pick = g[r][c];
found = true;
break;
}
}
}
ans.push_back(pick);
}
cout << ans << '\n';
return 0;
}'문제 풀이 > 문제 풀이(BOJ)' 카테고리의 다른 글
| [Silver V] 또 수열 문제야 - 31229 (0) | 2025.12.29 |
|---|---|
| [Silver V] 부울 행렬의 곱 - 14492 (0) | 2025.12.23 |
| [Silver V] 경매 - 2238 (0) | 2025.12.20 |
| [Silver V] 욱제는 결벽증이야!! - 15887 (0) | 2025.12.13 |
| [Silver V] 피터팬 프레임 - 3054 (0) | 2025.12.13 |