티스토리 뷰
N마리의 점소, N마리의 점 없는 소가 있고 각자 M개의 유전자를 가지고 있다
이 때 M개중 3개를 골라서 비교했을 때 점O소와 점X소를 비교 가능한 줄이 몇개 있는지 찾는 문제다!
set을 이용해서 완탐을 했다!
점O소 의 DNA M개중 몇 번째 줄을 볼지 정하고 그 값들을 모두 set에 넣어버린다
그리고 점X소 중 만약 set에 있는 값을 가지고 있는 것이 있다면 건너뛰고 하나도 없다면 구별 가능하므로 답을 세준다!
소스코드
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 | #include <iostream> #include <algorithm> #include <set> using namespace std; char str[1010][55]; int n, m; set<pair<pair<int, int>, int>> s; int main() { scanf(" %d %d", &n, &m); for (int i = 0; i < n * 2; i++) scanf(" %s", &str[i]); int ans = 0; for (int i = 0; i < m; i++) { for (int j = i + 1; j < m; j++) { for (int k = j + 1; k < m; k++) { s.clear(); bool ok = true; for (int q = 0; q < n; q++) s.insert({ {str[q][i],str[q][j]},str[q][k] }); for (int q = n; q < n * 2; q++) { if (s.count({ {str[q][i],str[q][j]},str[q][k] })) { ok = false; } } if (ok)ans++; } } } printf("%d\n", ans); } | cs |
'알고리즘 > BOJ' 카테고리의 다른 글
[백준] 1184 귀농 (2) | 2018.07.03 |
---|---|
[백준] 3042 트리플렛 (0) | 2018.07.02 |
[백준] 5014 스타트링크 (0) | 2018.07.02 |
[백준] 1697 숨바꼭질 (0) | 2018.07.02 |
[백준] 2178 미로탐색 (0) | 2018.07.02 |
댓글