❔문제
🔄 문제 및 입출력 조건 파악
- 1 ≤ 높이 H, 너비 W ≤ 100
- 각 칸마다 `.` 또는 `c` 문자가 들어옴.
✏️ 문제풀이
간단한 시뮬레이션 구현 문제입니다.
- 구름 위치(좌표)를 입력받은 뒤, 각 구름마다 실제로 이동시키면서 시간을 계산하는 방법.
- 구름은 동쪽으로만 이동하고 외부 유입없다는 점에서 착안, 구름이 있는 칸은 '0', 그 오른쪽부터 한 칸마다 1, 2, 3, 4... 1씩 늘려가며 초기화하기.
아무래도 두 번째 방법이 더 쉽고 간단하기 때문에 두 번째 방법을 사용하면 좋을 것 같습니다.
- 읽은 문자가 `c`이면, 카운팅 변수를 0으로 초기화하고 현재 칸을 0으로 초기화.
- 읽은 문자가 `.`이면, 카운팅 변수 1 증가하고, 현재 칸을 카운팅 변수로 초기화.
- 카운팅 변수는 각 행마다 다시 -1로 초기화해서 이번 행의 결과가 다음 행에 영향을 주지 않도록 합니다.
📝 코드
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr);
int H, W;
cin >> H >> W;
vector<vector<int>> vec(H, vector<int>(W, -1));
for (int y = 0; y < H; ++y) {
int cur = -1;
for (int x = 0; x < W; ++x) {
char ch;
cin >> ch;
if (ch == 'c') {
cur = 0;
vec[y][x] = cur;
}
else if (cur != -1) {
vec[y][x] = ++cur;
}
}
}
for (int y = 0; y < H; ++y) {
for (int x = 0; x < W; ++x)
cout << vec[y][x] << ' ';
cout << '\n';
}
}
🕧 결과
'Problem Solving' 카테고리의 다른 글
알고리즘 :: 백준 :: 2852 - NBA 농구 (1) | 2025.01.08 |
---|---|
알고리즘 :: 백준 :: 3474 - 교수가 된 현우 (0) | 2025.01.07 |
알고리즘 :: 백준 :: 2870 - 수학숙제 (0) | 2025.01.07 |
알고리즘 :: 백준 :: 4659 - 비밀번호 발음하기 (0) | 2025.01.07 |
알고리즘 :: 백준 :: 2910 - 빈도 정렬 (0) | 2025.01.07 |