반응형
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 |
29 | 30 | 31 |
Tags
- boj #19237 #어른 상어
- dfs
- 물채우기
- incr
- 경력
- 백준
- 백트래킹
- BOJ
- 연결요소
- 퇴사통보
- 오퍼레터
- @P0
- Kafka
- softeer
- 파라메트릭
- 13908
- 매개변수탐색
- 처우협의
- 처우산정
- Docker
- 성적평가
- 소프티어
- compose
- OFFSET
- 기술면접
- BFS
- msSQL
- 이분탐색
- 6987
- upper_bound
Archives
- Today
- Total
기술 블로그
17300번 패턴 본문
728x90
반응형
https://www.acmicpc.net/problem/17300
처음에 어떻게 접근할까 생각하다가
한 칸 건너 뛸 수 있는 상황은 16가지 상황밖에 없었다.(8가지 * 2(반대))
예)
1에서 3으로 갈 때 또는 3에서 1로 갈 때, 2를 체크해준다.
.
.
그래서 check[1][3] = check[3][1] = true로
미리 이러한 상황일 때만 가운데 숫자를 방문했는지 안 했는지 검사해준다.
또한,
1→3
4→6
7→9
.
.
등
이러한 경우들을 보면 가운데 점이 모두 (처음 + 끝) / 2임을 알 수 있다.
그래서 40번 째 줄에 (v[i] + v[i - 1]) / 2를 해준 것이다.
i >= 1일 때로 조건을 준 것은 그 전에 어느 방향에서 왔는지 알아야 하므로, v[i - 1]을 활용하였다.
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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | #include <bits/stdc++.h> using namespace std; #define Max 10 int n; bool use[Max], check[Max][Max]; vector<int> v; int main() { //freopen("C:\\Users\\park7\\Desktop\\sample_input.txt", "r", stdin); cin.tie(0); scanf("%d", &n); int input; for (int i = 0; i < n; i++) { scanf("%d", &input); v.push_back(input); } if (v.size() <= 2) { printf("NO\n"); return 0; } check[1][3] = check[3][1] = true; check[4][6] = check[6][4] = true; check[7][9] = check[9][7] = true; check[1][7] = check[7][1] = true; check[2][8] = check[8][2] = true; check[3][9] = check[9][3] = true; check[1][9] = check[9][1] = true; check[3][7] = check[7][3] = true; for (int i = 0; i < v.size(); i++) { // 한 칸 건너 뛸 때 검사 if (i >= 1 && check[v[i - 1]][v[i]]) { if (!use[(v[i - 1] + v[i]) / 2]) { printf("NO\n"); return 0; } } // 중복 검사 if (use[v[i]]) { printf("NO\n"); return 0; } use[v[i]] = true; } printf("YES\n"); return 0; } | cs |
728x90
반응형
'알고리즘 문제 > BOJ' 카테고리의 다른 글
10844번 쉬운 계단 수 (0) | 2020.01.01 |
---|---|
17615번 볼 모으기 (0) | 2019.12.29 |
2437번 저울 (0) | 2019.12.26 |
14927번 전구 끄기 (0) | 2019.12.25 |
1080번 행렬 (0) | 2019.12.24 |