백준 2890번: 카약 (C++)
2023. 1. 19. 14:20ㆍ알고리즘/브루트포스
https://www.acmicpc.net/problem/2890
2890번: 카약
첫째 줄에 R과 C가 주어진다. 다음 R개 줄에는 '.', 'S', 'F', '1'~'9'로 이루어진 위성 지도가 주어진다. 한 줄에는 최대 한 개의 카약만 있고, 위성 사진에 있는 카약은 항상 9개이다. (10 ≤ R, C ≤ 50)
www.acmicpc.net
풀이
완전 탐색으로 진행해도 R * C, 즉, 최대 50 * 50 정도 밖에 들지 않기 때문에 완전 탐색으로 진행했다.
String 백터를 이용하여 문자열을 입력 받았고 결승선 F와 가장 가까운 부분(C - 2)부터 차례대로 탐색했다.
rank 변수를 이용해 카운트를 받아주었고 어떤 레일도 순위에 들지 않을 때는 카운트가 증가되지 않도록 구성했다.
전체 코드
#include <iostream>
#include <vector>
using namespace std;
int main() {
int R, C;
int rank[10] = { 0, };
int cnt = 1;
bool is_rank = false;
vector<string> v;
cin >> R >> C;
for (int i = 0; i < R; i++) {
string s;
cin >> s;
v.push_back(s);
}
for (int i = C - 2; i >= 1; i--) {
for (int j = 0; j < R; j++) {
int kayak = v[j][i] - '0';
if (!rank[kayak] && kayak > 0 && kayak <= 9) {
rank[kayak] = cnt;
is_rank = true;
}
}
if(is_rank) cnt++;
is_rank = false;
}
for (int i = 1; i <= 9; i++) cout << rank[i] << '\n';
}
'알고리즘 > 브루트포스' 카테고리의 다른 글
백준 2309번: 일곱 난쟁이 (C++) (0) | 2023.01.21 |
---|---|
백준 10974번: 모든 순열 (C++) (1) | 2023.01.21 |
백준 1057번: 토너먼트 (C++) (0) | 2023.01.17 |
백준 1051번: 숫자 정사각형 (C++) (0) | 2023.01.17 |
백준 2231번: 분해합 (C++) (0) | 2023.01.16 |