반응형
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
- 오퍼레터
- BFS
- upper_bound
- 13908
- BOJ
- 파라메트릭
- incr
- msSQL
- Docker
- 매개변수탐색
- 성적평가
- boj #19237 #어른 상어
- 소프티어
- 처우협의
- 물채우기
- OFFSET
- Kafka
- 백준
- 처우산정
- softeer
- 6987
- dfs
- @P0
- 퇴사통보
- 백트래킹
- 이분탐색
- 기술면접
- 경력
- 연결요소
- compose
Archives
- Today
- Total
기술 블로그
15922번 아우으 우아으이야!! 본문
728x90
반응형
https://www.acmicpc.net/problem/15922
알고리즘 문제를 본격적으로 공부하기 시작한 단계에서 풀려고 했었던 문제로 기억한다.
당시에 너무 어려웠던 것 같아서 못 푼 기억이 있었는데
지금 다시 풀어보니 바로 풀었다.
나의 아이디어는
그 전 좌표를 [bx, by],
그 다음 좌표(이제 입력할 좌표)를 [x, y]라고 한다면
여기에서 중요한 것은 by이다.
by의 위치는 3가지의 경우가 있다.
1. by x y
2. x by y
3. x y by
위의 3가지 경우를 잘 따져보고 구현하면 된다.
또한, 중요한 것은 by는 max(by, y)로 갱신해야 한다.
by를 무조건 y로 변경하면 아래와 같은 테스트 케이스에서 15를 출력한다.
1 2 3 4 5 | 4 1 10 3 3 3 4 3 9 | cs |
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 | #include <bits/stdc++.h> using namespace std; int n; int main() { cin.tie(0); scanf("%d", &n); int bx, by, x, y, ans = 0; scanf("%d %d", &bx, &by); ans = abs(bx - by); for (int i = 0; i < n - 1; i++) { scanf("%d %d", &x, &y); if (by <= x && x < y) { ans += abs(x - y); } else if (x < by && by <= y) { ans += abs(by - y); } else if (x < y && y < by) { // 이해를 돕기 위하여 코드를 작성 // 무시 } by = max(by, y); } printf("%d\n", ans); return 0; } | cs |
728x90
반응형
'알고리즘 문제 > BOJ' 카테고리의 다른 글
2589번 보물섬 (0) | 2020.03.03 |
---|---|
18513번 샘터 (0) | 2020.03.02 |
16925번 문자열 추측 (0) | 2020.02.29 |
3197번 백조의 호수 (0) | 2020.02.29 |
16957번 체스판 위의 공 (0) | 2020.02.28 |