티스토리 뷰
백준 :: BOJ :: 17140 :: 이차원 배열과 연산
출처 : https://www.acmicpc.net/problem/17140
#include<bits/stdc++.h>
using namespace std;
#define F(p,q,z) for(int p=q; p<z; p++)
#define pi pair<int,int>
int r, c, k, A[100][100], N = 3, M = 3, i, j, ans, ss;
void G(int ii, int jj) {
ss = 0; F(i, 0, ii) {
set<int>s1; multiset<int> s2; priority_queue<pi, vector<pi>, greater<pi>>pq; int B = 0;
F(j, 0, jj) {
if (N >= M) { if (!A[i][j]) continue; s1.insert(A[i][j]); s2.insert(A[i][j]); A[i][j] = 0;}
else {if (!A[j][i]) continue; s1.insert(A[j][i]); s2.insert(A[j][i]); A[j][i] = 0;}
}
for (auto it = s1.begin(); it != s1.end(); it++)pq.push(make_pair(s2.count(*it),*it));
int gg = 0, mm=pq.size(); ss=max(ss,(mm*2));
while (!pq.empty()) {
pi tmp = pq.top(); pq.pop();
if (N >= M) {A[i][gg++] = tmp.second; A[i][gg++] = tmp.first;}
else {A[gg++][i] = tmp.second; A[gg++][i] = tmp.first;}
if (gg > 99)break;
}
}
}
int main() {
cin >> r >> c >> k;
F(i, 0, 3) F(j, 0, 3) cin >> A[i][j];
while (ans < 101 && A[r - 1][c - 1] != k) { (N >= M ? G(N, M) : G(M, N)); (N >= M ? M = ss : N = ss); ans++; }
cout << (ans > 100 ? -1 : ans);
return 0;
}
'알고리즘 > BOJ' 카테고리의 다른 글
[BOJ 17779] 게리맨더링 2 (0) | 2019.10.24 |
---|---|
[BOJ 17142] 연구소 3 (0) | 2019.09.18 |
[BOJ 17143] 낚시왕 (0) | 2019.05.14 |
[BOJ 17144] 미세먼지 안녕! (2) | 2019.05.14 |
[BOJ 3190] 뱀 (0) | 2019.01.21 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- DP
- 2018 카카오 블라인드 채용
- 팁
- SW Expert Academy
- 연구소 3
- string
- 이차원 배열과 연산
- 역량 테스트
- 17142
- 17779
- 게리맨더링 2
- boj
- 새로운 게임 2
- 삼성
- DFS
- 2018 KAKAO BLIND RECRUITMENT
- 시간 복잡도
- 알고리즘
- scanf
- 입출력
- hackerrank
- 백준
- 17143
- 17140
- 트렌드
- SWEA
- 미세먼지 안녕!
- STL
- 17144
- 17837
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함