백준 10720 기상캐스터 ⭕

CJB_ny·2023년 1월 17일
0

백준

목록 보기
55/104
post-thumbnail

기상캐스터

문제는 이해를 하고

문자를 받아서 해당 문자가 c인지 아닌지에 따라서 수를 증가시키면서 매기는 부분임.

못풀다가 순간 생각이 갑자기 나서 생각나는대로 적으니까 어느정도 막 적고 제출하니까 맞았다...

처음에 이 맵? 배열을 뒤집어서 queue를 사용해서 제일 마지막 열부터 어떻게 할려고했는데 그게 아니라 그냥 flag를 놔두어서

초기화 할지 안할지 결장하면서 val값을 늘리는 게 다였다..

짚고 넘어갈 부분

1

중간에 후위/전위 설명하는 부분. (당연히 알고있어야한다)

2

그리고 중간에 c라는 부분을 찾았다면은 다시 처음 부터 c부터 값을 증가 시키는 부분이 중요하다.

cpp 코드

#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
using namespace std;
#define endl "\n"
#define MAX 101

int H, W;
vector<vector<int>> v;
char m[MAX][MAX];

int main()
{
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);

	cin >> H >> W;
	
	v = vector<vector<int>>(H);

	for (int i = 0; i < H; ++i)
	{
		v[i].resize(W + 1);
		for (int j = 0; j < W; ++j)
		{
			cin >> m[i][j]; 
			if (m[i][j] == 99) v[i][j] = -2;
			else v[i][j] = -1;
		}
	}
	
	for (int i = 0; i < H; ++i)
	{
		int val = 0;
		bool flag = false;
		for (int j = 0; j < W; ++j)
		{
			if (v[i][j] == -2)
			{
				flag = true;
				v[i][j] = 0;
				val = 0;
			}
			else if (v[i][j] == -1)
			{
				if (flag)
				{
					v[i][j] = ++val;
				}
			}
		}
	}

	for (int i = 0; i < H; ++i)
	{
		for (int j = 0; j < W; ++j)
		{
			cout << v[i][j] << " ";
		}
		cout << endl;
	}
	
	return 0;
}

강의 코드

profile
https://cjbworld.tistory.com/ <- 이사중

0개의 댓글