문제
url : https://www.acmicpc.net/problem/10709
입력 및 출력
풀이
변수, 함수 선언 및 초기화
int n, m; // 행과 열
string s; // 기상 정보(한 행)
int a[104][104] // 기상 예측 정보 저장
- 구름(’c’)가 존재하지 않는 모든 지역(’.’)은 -1로 초기화 한다. a[i][j] = -1;
// 초기 배열 입력
for (int i = 0; i < n; i++)
{
cin >> s;
for (int j = 0; j < m; j++)
{
if (s[j] == '.')
{
a[i][j] = -1;
}
}
}
조건 체크하기
- 현재 구름이 있는 지역부터 시작하여 다음 구름이 등장하기 전까지 예측시간을 1 증가 시킨다.
- 후위연산자를 사용하기 때문에 0이 아닌 1부터 시작한다.(int ret = 1)
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
// 현재 구름이 있는 지역부터 시작
if (a[i][j] == 0)
{
int cnt = 1;
// 다음 구름이 등장하기 전까지 반복
while (a[i][j + 1] == -1)
{
a[i][j + 1] = cnt++;
j++;
}
}
}
}
결과 출력
- 기상 예측 정보가 저장된 배열의 요소를 차례대로 출력한다.
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
cout << a[i][j] << " ";
}
cout << '\n';
}
전체 코드
#include <bits/stdc++.h>
using namespace std;
int n, m;
string s;
int a[104][104];
int main()
{
ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0);
cin >> n >> m;
// 초기 배열 입력
for (int i = 0; i < n; i++)
{
cin >> s;
for (int j = 0; j < m; j++)
{
if (s[j] == '.')
{
a[i][j] = -1;
}
}
}
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
// 현재 구름이 있는 지역부터 시작
if (a[i][j] == 0)
{
int cnt = 1;
// 다음 구름이 등장하기 전까지 반복
while (a[i][j + 1] == -1)
{
a[i][j + 1] = cnt++;
j++;
}
}
}
}
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
cout << a[i][j] << " ";
}
cout << '\n';
}
return 0;
}
결과
'백준' 카테고리의 다른 글
[C++] 백준 2870번 풀이 (수학 숙제) (0) | 2024.08.16 |
---|---|
[C++] 백준 4659번 풀이 (비밀번호 발음하기) (0) | 2024.08.16 |