20150523
Review of Chapter 6, Drawing with data
made by Min Jeong Cho
Moon.D (문과생들의 d3, Data Visualization 스터디)
----------------------------------------------------------------------
d3.js - [Interactive date visualization] by Scott Murray
20150523
Review of Chapter 6, Drawing with data
made by Min Jeong Cho
Moon.D (문과생들의 d3, Data Visualization 스터디)
----------------------------------------------------------------------
d3.js - [Interactive date visualization] by Scott Murray
원주율은 정말 모든 수를 담고 있을까. (Does pi have all positive numbers in it?)Joona Yoon
2017년 세미나 발표 자료
무한 원숭이 정리와 엮어본, 원주율 안의 모든 수
Does pi have all positive numbers in it? Let's see with Infinite Monkeys Theorem.
(주의) 14번 슬라이드부터는 (1-1/50)^6 이 아닌 1-(1/50)^6이 맞습니다.
3. B. 냉동식품
1. 시간을 시뮬레이션 한다.
시작H : 시작M ~ 종료H : 종료M
2. 각각의 시간과 분을 검사한다.
H:M정수 > 문자열 변환, 각각의 문자를 비교
3. 찾는 숫자 N과 같으면 COUNT 증가
4. C. ISBN
1. 훼손된 번호 부분(X)을 제외한 값에 각각의
가중치(1 혹은 3)를 곱해 합을 구한다.
2. M = 10 – (X 자리의 가중치 * N + 합)%10
3. 알맞은 M이 나올 때까지 N의 값을 증가시키
며 N를 찾는다.
5. D. 파닭파닭
이분탐색(Binary Search) 문제
1. 파닭에 넣을 수 있는 파의 최대길이를 구해서
남은 파의 양을 구하는 문제
2. 쉬운 풀이 : 1cm 부터 다 잘라보면서 시도
시간 복잡도 : O(SL) -> 시간초과!
6. D. 파닭파닭
이분탐색(Binary Search) 문제
1. 자르는 파의 길이가 짧아질수록 만들 수 있는
파닭의 개수가 증가함
2. 이진탐색을 적용할 수 있다!
3. 자르는 파의 길이에 대해 이진탐색
시간 복잡도 : O(SlgL)
7. E. 입 챌린저
• 스킬을 한 번씩 사용하면서 모든 경우를 시뮬레이션
• 필요한 정보
– 모든 스킬의 사용 횟수
– 현재 체력
• 스킬을 사용하는 순서를 고정하면?
– 지금 사용할 스킬 & 현재 체력
8. E. 입 챌린저
• 지금 사용할 스킬과 현재 체력으로 구할 수 있는 최소값은
이전의 선택이 영향을 미치지 않음
• DP식이 성립
• D[pos][hp] = pos번째 스킬부터 시작하여 체력 hp를 0으
로 만들때 드는 마나 비용의 최소값
9. E. 입 챌린저
• D[pos][hp] = pos번째 스킬부터 시작하여 체력 hp를 0으로 만
들때 드는 마나 비용의 최소값
• D[pos][hp] = min {
mana[pos] + D[pos + 1][hp – deal[pos]],
mana[pos] * 2 + K + D[pos + 1][hp – deal[pos] * 2],
…
}
• 시간 복잡도 : O(NM^ 2)
10. F. 숫자 조각
• 0~9의 숫자를 한 번만 사용해서 만든 숫자 중 N하고 가장 가까운
숫자를 찾는 문제
• 완전탐색
– 모든 숫자를 직접 구해서 직접 비교
– 시간 복잡도 : O(digit!)
11. F. 숫자 조각
• 규칙성
– 맨 앞자리부터 N과 똑같이 숫자를 만들어가면서 불가능한 위치를 찾음
– 불가능한 위치의 숫자를 1 더하거나 1 빼는것이 가장 가까운 수
– 그 뒤는 남은 수들로 가장 크게 만들어주거나 가장 작게 만들어줌
– Ex) 44223344
• 45012367
• 43987652
• 둘 중 더 가까운걸 선택
– 자리수를 한자리 늘려보거나 줄여보고 체크
• 시간 복잡도 : O(lgN)
12. G. 변신로봇
• 변신을 거듭하면서 원하는 상태를 만드는 가장 적은 비용을 찾는
문제
• 변신의 상태를 정점, 변신에 필요한 비용을 간선으로
• 정점에서 정점으로 가는 최단경로를 구하는 문제
• 다익스트라!
13. G. 변신로봇
• 전처리로 완전 그래프를 구성해주어야 함
– 시간초과 발생가능
– 무향 그래프이므로 전처리의 반복 횟수를 반으로 줄일 수 있음
• 시간 복잡도 : O(N^2lgN + N^2K) (N : 변신 상태 수, K : 부품길
이)
14. H. 명탐정 준하
• 모든 미술관과 흔적을 방문할 때 걸리는 최소 거리를 구하는 문제
• 각 좌표마다 이동거리는 항상 1로 같으므로 BFS로 해결
• 그래프 모델링
– 현재 위치, 지금까지 방문한 좌표들, 다음 방문할 미술관 번호를 정점으로
– 방문한 좌표는 bitmask를 사용!
– V[y][x][visit][no] => 4 * 5 * 2^20 * 20 ??
15. H. 명탐정 준하
• 지금까지 방문한 좌표를 알고 있으면 다음 방문할 미술관의 위치를
구할 수 있다
• V[y][x][visit][no] -> V[y][x][visit]!
• 4 * 5 * 2^20 * 20 -> 4 * 5 * 2^20
• 시간 복잡도 : O(yx2^(yx))
• 사실 이전의 모델로도 최적화를 잘 하면 정답을 받을 수 있다
– 테스트케이스 최적화
16. I. 고급작품
• N * M의 도화지에 K개의 도장을 Q번 찍었을 때 도화지의 상태를 출력하는 문제
• 그때그때 그대로 도장을 찍는 경우의 시간 복잡도 : O(KHW + QHW + NM)
• 시간초과!
17. I. 고급작품
• 도장을 찍는 순서를 반대로 생각해보자
– 이미 도장이 찍혀있는 곳은 더 이상 덧씌워지지 않음
– 반복 횟수를 줄일 기회!
18. I. 고급작품
• 도화지의 세로좌표마다 가로 좌표들을 연결리스트로 저장한다면?
1,1 1,2 1,3 1,4
2,1 2,2 2,3 2,4
19. I. 고급작품
• 도화지의 세로좌표마다 가로 좌표들을 연결리스트로 저장한다면?
– 한번 찍은 좌표를 삭제하면 더 이상 참조하지 않음
– 하지만 특정 좌표에 접근하는데 필요한 반복이 최대 M번
– 시간 복잡도 : O(KHW + QH + NM^2 + NM)
20. I. 고급작품
• 도화지의 세로좌표마다 가로 좌표들을 이진탐색트리로 저장한다면?
1,2
1,4
1,6
1,71,51,1 1,3
21. I. 고급작품
• 도화지의 세로좌표마다 가로 좌표들을 이진탐색트리로 저장한다면?
– C++의 경우 set
– 특정 좌표에 접근하는데 필요한 반복이 최대 lgM번
– 시간 복잡도 : O(KHW + QH + NMlgM + NM)
• 아쉽게도 이진탐색트리에 저장하는 데이터 수가 많아 시간초과
• 최적화 할 수 있을까?