250x250
Notice
Recent Posts
Recent Comments
Link
반응형
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- CSS
- alter
- sql
- math
- 스프링부트
- GC로그수집
- date
- html
- deque
- Union-find
- priority_queue
- 힙덤프
- BFS
- union_find
- Properties
- Calendar
- JPA
- dfs
- List
- Java
- 스택
- string
- map
- NIO
- 리소스모니터링
- scanner
- javascript
- spring boot
- 큐
- set
Archives
- Today
- Total
매일 조금씩
백준 2897번: 몬스터 트럭 본문
728x90
반응형
백준2823번 과 비슷하게 풀어내었다.
https://gimmesome.tistory.com/19?category=1065043
v[i][j]의 i와 j가 y축과 x축위로 움직이는 것과 같다고 보고
y,x를 struct에서 정의하여 nextY,nextX를 구하는 데에 사용하도록 하였다.
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int R, C;
vector<string> v;
int park[5];
typedef struct {
int y, x;
}Dir;
Dir parkDir[3]={ {1,0},{1,1},{0,1} };
void Parking() {
for (int i = 0; i < R-1; i++) {
for (int j = 0; j < C-1; j++) {
bool building = false;
int openPark = 0;
if (v[i][j] == '#')
building = true;
else{
if (v[i][j] == 'X') openPark++;
for (int k = 0; k < 3; k++) {
int nextY = i + parkDir[k].y;
int nextX = j + parkDir[k].x;
if (v[nextY][nextX] == '#') {
building = true;
break;
}
if (v[nextY][nextX] == 'X') openPark++;
}
}
if (!building) {
if (!openPark) park[0]++;
else if (openPark == 1) park[1]++;
else if (openPark == 2) park[2]++;
else if (openPark == 3) park[3]++;
else park[4]++;
}
}
}
}
int main(void) {
ios_base::sync_with_stdio(0);
cin.tie(0);
cin >> R >> C;
v.resize(R);
for (int i = 0; i < R; i++) {
cin >> v[i];
}
Parking();
for (int i = 0; i < 5; i++) {
cout << park[i] << endl;
}
return 0;
}
728x90
반응형
'알고리즘' 카테고리의 다른 글
백준 5598번: 카이사르 암호 (0) | 2020.02.12 |
---|---|
백준 11656번: 접미사 배열 (0) | 2020.02.11 |
백준 10769번: 행복한지 슬픈지 (0) | 2020.02.08 |
백준 1919번: 애너그램 만들기 (0) | 2020.01.19 |
백준 2857번: FBI (0) | 2020.01.18 |