로또 문제는 백트래킹을 이용해서 해결합니다.
ATM문제는 그리디 알고리즘을 이용해서 해결할 수 있습니다.
2xn 타일링 2문제는 다이나믹 프로그래밍으로 처리할 수 있습니다. 1칸일 때 타일을 깔 수 있는 방법은 타일을 세로로 까는 방법 1개 입니다. 2칸일 때 타일을 까는 방법은 2X2 타일 하나를 붙이는 것과, 타일 두개를 세로로 까는 방법 2개 입니다. N번째 칸이 추가 될 때 타일 한개를 까는방법은 N-1번의 칸에 타일 한개를 추가하는 방법과 N-2번의 칸에 2개 짜리 타일을 추가하는 방법이 있습니다. N = [N-1] + [N-2] + [N-2]
기타줄 문제는 그리디 알고리즘으로 해결한다. 적어도 끊어진 기타줄 만큼 구매할 수 있는 최소한의 돈을 출력하면 된다. 1. 패키지로 구매할 수 있는 최소값, 개당으로 구매할 수 있는 최소값을 구하고,2. 패키지로 구매하는 것보다, 개당구매로 6개를 구매하는 것이 더 싼지 확인하고,3. 끊어진 기타줄 만큼 패키지 구매 + min(개당 구매, 패키지구매) 적어도 끊어진 기타줄 만큼 구매이기 때문에 더 구매해도 되는 것을 생각해서 마지막에 패키지 구매가 최소값인지 확인하면 된다. https://www.acmicpc.net/problem/1049
수들의 합2 문제는 투포인터 알고리즘을 이용하여 해결할 수 있다. s(start), e(end) 인덱스를 이용하여, start 로 배열을 증가하면서 sum을 증가시켜 M값과 동일하면 count를 증가하고 end를 증가하면서 sum 을 빼서 동일한 값이 있는지 확인한다. 배열 = {1 2 3 4 2 5 3 1 1 2}일때 start, end는 처음에 0번 인덱스 입니다. start를 증가하면서 1 + 2 + 3을 순서대로 해주면 sum은 6이 되어 M을 넘어서게 됩니다. 이때 end를 증가하면서 sum을 빼주면start가 2번 인덱스이고, end가 0번 인덱스인 시점에 합은 5가 됩니다. 이때 count를 1더해주면 됩니다. 이를 끝까지 반복해주면 됩니다.
- Total
- Today
- Yesterday
- error
- Python
- ubuntu
- 파이썬
- Tez
- 하둡
- airflow
- S3
- SQL
- AWS
- mysql
- 하이브
- hbase
- HIVE
- SPARK
- java
- 백준
- emr
- bash
- HDFS
- 오류
- yarn
- nodejs
- 정올
- Hadoop
- 알고리즘
- oozie
- build
- Linux
- 다이나믹
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |