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
- 1557
- 레지스터
- Codeforces Round 831 (Div. 1 + Div. 2)
- Flutter
- expand item
- 리버싱
- dart
- 인하대 프로그래밍 경진대회
- 카카오 API
- iupc
- Graph Cost
- 밑바닥부터 시작하는 딥러닝 1
- vue-google-login
- 기본키 변경
- Hello 2023
- 알고리즘 대회
- 코드포스
- 앳코더
- shake!
- E - Hanging Hearts
- Round 866
- 넥토리얼
- 2022
- vue3
- Div. 2
- idpiframe_initialization_failed
- django
- 카카오 로그인
- list_display
- Good Bye 2022: 2023 is NEAR
Archives
- Today
- Total
pseong
AtCoder Beginner Contest 250 F - One Fourth 본문
F - One Fourth
AtCoder is a programming contest site for anyone from beginners to experts. We hold weekly programming contests online.
atcoder.jp
신발끈 공식을 사용하면 한 포인터가 움직일 때마다 계산이 가능하기 때문에
투 포인터로 둘 다 왼쪽부터 탐색하면 될꺼라고 생각했지만 구현에서 조금 문제가 있어서 틀리게 됐다.
중요 포인트는 2가지를 기억하면 된다.
1. 신발끈 공식을 사용하면 맨 마지막 곱셈은 다음 첫번째와의 곱로 넘어가게 되는데 무식하게 그대로 구현했다.
첫번째 점을 원점으로 맞춰주면 더해줄때 마지막 곱셈은 안해도 된다. 이렇게 되면 포인터가 움직일 때마다 크로스곱 한번만 하면 돼서 코딩할땐 무조건 이렇게 하는게 낫다.
2. 데이터가 시계반대방향으로 점이 주어지는데 마지막 점이 한바퀴 돌아서 넘어갈 수 있다는 것을 생각을 못했다.
해결책은 두가지정도 있는데 점들을 복사해서 똑같이 뒤에 붙여주거나 아니면 투 포인터에서 두번째 포인터가 1씩 증가할 때 n으로 나머지 계산해서 증가시키는 방식이 있다. 후자가 좀더 깔끔해 보인다.
'알고리즘 > 알고리즘 문제풀이' 카테고리의 다른 글
Codeforces Round #789 (Div. 2) D. Tokitsukaze and Meeting (0) | 2022.05.18 |
---|---|
AtCoder Beginner Contest 249 F - Ignore Operations (0) | 2022.05.12 |
코드포스 Codeforces Round #751 (Div. 2) 풀이 (0) | 2021.10.30 |
코드포스 Codeforces Round #750 (Div. 2) 풀이 (0) | 2021.10.25 |
코드포스 Codeforces Round #738 (Div. 2) 풀이 (0) | 2021.10.21 |
Comments