Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- os 만들기
- Gundam
- OS 제작
- OS 구조와 원리
- rg
- Project Euler 해답
- 건담 엑스포
- 운영체제
- 운영체제 문제 풀이
- 건담
- OS
- 쉽게 배우는 운영체제
- 맛집
- OS강의
- 쉽게 배우는 운영체제 연습문제
- 건프라
- 쉽게 배우는 운영체제 솔루션
- 맛집 추천
- 운영체제 정리
- 30일
- 운영체제 만들기
- 프라모델
- Project Euler Problem
- 쉽게 배우는 운영체제 풀이
- 운영체제 제작
- project euler
- hg
- 건담 프라모델
- OS 강의
- OS 그래픽 처리
Archives
- Today
- Total
밤색모자이크의 개발이야기
Project Euler Problem 15 : 20×20 격자의 좌상단에서 우하단으로 가는 경로의 수 본문
Algorithm/Project Euler
Project Euler Problem 15 : 20×20 격자의 좌상단에서 우하단으로 가는 경로의 수
밤색모자이크 2017. 6. 19. 10:50Project Euler 문제를 해답을 포스팅합니다.
※ 주의 : 최적화는 할 수 있는 만큼했습니다. 따라서 속도면에서는 많이 부족합니다.
문제를 푸는데 목표를 두었고 또한 TDD를 최대한 활용하였습니다.
몇가지 문제의 경우 TDD를 안한 경우도 있습니다.
혹시, 최적화 또는 속도 증가에 대한 부분을 지적해주실 분은 너무나도 감사합니다.
Project Euler Problem 15
아래와 같은 2 × 2 격자의 왼쪽 위 모서리에서 출발하여 오른쪽 아래 모서리까지 도달하는 길은 모두 6가지가 있습니다 (거슬러 가지는 않기로 합니다).
그러면 20 × 20 격자에는 모두 몇 개의 경로가 있습니까?
이 알고리즘 문제는 고등학교때 최단거리 구하기 문제에서 기본입니다. 순열을 이용하면 구할 수 있으므로 20x20 격자의 경우의 수는 40! / 20! x 20! 입니다.
근데 전 40!이 엄청 큰 수더라구요;; 문자열로 계산 할까 했지만 double을 이용하여 쉽게 계산하고 유효숫자에서 소수점 단위가 남기때문에 long으로 형변환하여 문제를 풀었습니다.
파이썬의 경우;; 단번에 풀린다고 합니다.
Source Code
Main Class Code
public class Main { public static void main(String [] args) { double result = 1; for(int i=21; i<=40; i++) { result *= i; } for(int i=1; i<=20; i++) { result /= i; } System.out.println((long)result); } }
'Algorithm > Project Euler' 카테고리의 다른 글
Project Euler Problem 17 : 1부터 1000까지 영어로 썼을 때 사용된 글자의 개수는? (0) | 2017.06.19 |
---|---|
Project Euler Problem 16 : 2^1000의 각 자리수를 모두 더하면? (0) | 2017.06.19 |
Project Euler Problem 14 : 백만 이하로 시작하는 우박수 중 가장 긴 과정을 거치는 것은? (0) | 2017.06.19 |
Project Euler Problem 13 : 50자리 숫자 100개를 더한 값의 첫 10자리 구하기 (0) | 2017.06.19 |
Project Euler Problem 12 : 500개 이상의 약수를 갖는 가장 작은 삼각수는? (0) | 2017.06.19 |
Comments