티스토리 뷰
반응형
다트게임
난이도 : 5/10
어렵다. 구현이라는게 생각보다 어렵다. 어떨 땐 기초 BFS, DFS, dp 등의 문제가 쉽다 ... 가끔은 그렇다. (-.-....)...
아래 시계문제를 포스팅해서 갑자기 기억나서 또 비슷한 원문제를 포스팅했다.
내용보기
https://www.codeground.org/practice/practiceProblemView
설명
흠... 두가지가 중요하다.
1 <math.h> 에 선언된 atan2 함수의 사용
atan2 는 c에서 지원하는 (gcc에서는 -lm 옵션을 붙여야함) 함수이다.
atan2 에 대한설명보기
360도를 표현하려면 " atan(y,x) * 360 / PI "를 사용하여야한다.
y축이 음수일 땐 각도가 음수이므로, 일정한 각도를 더해줘서 사용하던가 해야한다. 이 부분은 다음 2 번에서 확인해보자.
2 점수 배열 생성과 각도를 점수 배열 index로의 치환
각도는 구했는데 dart의 inex와 어떻게 접합시키는지가 관건이다.
실제로 x=5, y=5 일 때 "atan(5,5) *360 / 3.141592... " 를 수행했을 때 45가 나온다.
점수 배열로의 치환 또는 점수배열의 생성은 어찌보면 각도가 음수일 때 어떻게 처리해줘야하는 문제와 겹친다.
음...
머리가 더 아프군.
처음에 배열을 0을 20, 1을 1 ... 이렇게 {20, 1, 18, 4, 13, 6,10, 15 ... } 시계방향으로 생성했었는데 인덱스 처리라던가 음수 처리가 굉장히 머리가 아팠다.
이럴바엔 각도 자체가 반시계 방향처럼 동작하므로 반시계방향으로 배열을 생성하는것이 낫다. 그것도 진짜 각도가 0도인 6 부터. 즉, {6, 13, 4, 18, 1, 20, 5, 12, 9, 14 ... } 이렇게 반시계방향으로 생성하는것이 편하였다.
이렇게 한다면 음수가 나오는 각도를 360도를 더함으로써 처리할 수 있다.
정답보기
https://github.com/ingyeoking13/algorithm/blob/master/cg/p4dart.c
반응형
'알고리즘 문제 > implementation' 카테고리의 다른 글
879B: Table Tennis (0) | 2017.10.27 |
---|---|
879A : Borya's Diagnosis (0) | 2017.10.27 |
868B : Race Against Time (0) | 2017.10.08 |
p868a : Bark to Unlock (0) | 2017.10.08 |
Codeforces: Between The Offices (0) | 2017.10.02 |
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- arena simulation
- 자바스크립트 예제
- grafana cloud
- javascript
- 시뮬레이션
- Simulation
- 아레나 시뮬레이션
- 최단경로 알고리즘
- Grafana
- 엄청난 인내심과 시뮬레이션을 위한 아레나 툴
- 백준
- 대규모 시스템 설계 기초
- 이산 수학
- 가상 면접 사례로 배우는 대규모 시스템 설계 기초
- 아레나
- Propositional and Predicate Logic
- 이산수학
- paul wilton
- 데이터 중심 애플리케이션 설계
- Discrete Mathematics
- rosen
- 자바스크립트
- 명제논리
- 로젠
- 항해99
- Arena
- 아레나시뮬레이션
- beginning javascript
- 그라파나
- flutter
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함