728x90
제출 후 채점해서 통과된 코드이다.
주변에 심을 때 "다음 날"의 숫자를 저장하고
다음 날 날짜가 동일한 것만 찾아서 주변을 새로 심는 방식이다.
// 다음과 같이 include를 사용할 수 있습니다.
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int solution(vector<vector<int>> garden) {
int Row = garden.size();
int Column = garden[0].size();
int days = 1;
int zeros = 0;
while (1) {
int nextDay = days + 1;
for (int i = 0; i < Row; ++i) {
for (int j = 0; j < Column; ++j) {
if (garden[i][j] == 0) ++zeros;
else if(garden[i][j] == days) {
if (i != 0) garden[i - 1][j] = nextDay;
if (i < Row - 1) garden[i + 1][j] = nextDay;
if (j != 0) garden[i][j - 1] = nextDay;
if (j < Column - 1) garden[i][j + 1] = nextDay;
}
}
}
if (zeros) {
++days;
}
else return days - 1;
zeros = 0;
}
}
// 아래는 테스트케이스 출력을 해보기 위한 main 함수입니다.
int main() {
vector<vector<int>> garden1 = { {0, 0, 0}, {0, 1, 0}, {0, 0, 0} };
int ret1 = solution(garden1);
// [실행] 버튼을 누르면 출력 값을 볼 수 있습니다.
cout << "solution 함수의 반환 값은 " << ret1 << " 입니다." << endl;
vector<vector<int>> garden2 = { {1, 1}, {1, 1} };
int ret2 = solution(garden2);
// [실행] 버튼을 누르면 출력 값을 볼 수 있습니다.
cout << "solution 함수의 반환 값은 " << ret2 << " 입니다." << endl;
}
728x90
'Programming > C & C++' 카테고리의 다른 글
[C/C++] 백준 1159번 C++ 풀이 (0) | 2022.10.31 |
---|---|
[C/C++] 10. 포인터 (1) (0) | 2022.03.24 |
[C/C++] 9.5강 - for, while에서 break, continue (0) | 2022.01.17 |
[C/C++] 9.4강 - switch & break | 제어문, 조건 관리하기 (0) | 2022.01.15 |
[C/C++] 백준 1152번 C++ 풀이 (0) | 2021.09.01 |