티스토리 뷰
문제
3109번: 빵집
유명한 제빵사 김원웅은 빵집을 운영하고 있다. 원웅이의 빵집은 글로벌 재정 위기를 피해가지 못했고, 결국 심각한 재정 위기에 빠졌다. 원웅이는 지출을 줄이고자 여기저기 지출을 살펴보던
www.acmicpc.net
풀이
1. 파이프의 가능한 경로를 찾기위해서 위부터 아래로 진행방향을 고정하고 끝점까지 도착 할 수 있는지의 여부를 체크하는 dfs를 진행합니다.
2. 위의 그림에서 파이프의 경로가 되는 빨간점에서 파란점들로 가는 상황에 대해서 생각해보면 아래와 같은 결론을 낼 수 있습니다.
-
1번 빨간점이 다음 열로 이동할 때 1번 파란점이아닌 2번 파란점으로 이동한다면 2번 빨간점이 이동할 수 없습니다. 따라서 윗점에서 파이프의 경로가 아래 점에서 파이프의 경로에 영향을 줍니다.
-
결국 위의 그림에서와 같이 핵심이 되는 파란 1번, 2번점은 개수가 한정되어 있고, 위부터 아래로 방향을 고정하였기에 dfs를 진행할 때 다음 점이 되는 방향을 위 대각선, 오른쪽, 아래 대각선으로 진행을 한다면 각각의 경로가 최적경로가 되어 파이프경로의 최대개수를 구할 수 있습니다.
코드
#include <bits/stdc++.h>
using namespace std;
const int dir[3][2] = { {-1,1},{0,1},{1,1} };
int R, C, cr, cc, nr, nc, ans;
string m[10001];
bool flag, vis[10001][501];
void dfs(int r, int c) {
if (flag) return;
if (c == C - 1) {
flag = 1;
return;
}
for (int i = 0; i < 3; i++) {
nr = r + dir[i][0], nc = c + dir[i][1];
if (nr < 0 || nr >= R || nc < 0 || nc >= C) continue;
if (!vis[nr][nc] && m[nr][nc] != 'x') {
vis[nr][nc] = 1;
dfs(nr, nc);
vis[nr][nc] = 0;
}
}
}
int main() {
cin.tie(NULL); cout.tie(NULL);
ios_base::sync_with_stdio(false);
cin >> R >> C;
for (int i = 0; i < R; i++) cin >> m[i];
for (int i = 0; i < R; i++) {
flag = 0;
dfs(i, 0);
if (flag) ans++;
}
cout << ans;
}
'Algorithm > BOJ' 카테고리의 다른 글
[백준 20437] 문자열 게임2 (0) | 2021.01.08 |
---|---|
[백준 20435] ZOAC3 (0) | 2021.01.08 |
[백준 16973] 직사각형 탈출 (0) | 2021.01.04 |
[백준 3020] 개똥벌레 (0) | 2021.01.04 |
[백준 10775] 공항 (0) | 2020.12.19 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 백준
- 2021 KAKAO BLIND
- 2022 카카오블라인드
- 이분탐색
- 카카오 인턴십
- 2020 KAKAO BLIND RECRUITMENT
- 2022 카카오 블라인드 코딩테스트
- Kakaoblind
- 2022 KAKAO BLIND RECRUITMENT
- 프로그래머스
- 카카오 2차코딩테스트
- 카카오 표 편집
- 프로그래머스 월간코드챌린지
- 카카오 2021
- 게임이론
- 시뮬레이션
- 위클리 챌린지
- 파싱
- 누적합
- 동적계획법
- 표 편집
- 카카오 2020 인턴십
- BFS
- DP
- 유니온파인드
- 트리
- 2021 카카오 블라인드
- 프로그래머스 위클리 9주차
- 투포인터
- 구현
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 |
글 보관함