일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- react
- 안드로이드
- Database
- Python
- git
- Javascript
- 알고리즘
- Data Structure
- CS
- Graph
- BFS
- 다이나믹 프로그래밍
- db
- 그레이들
- vscode
- DFS
- Algorithm
- VIM
- 백준
- 동적 계획법
- frontend
- 리트코드
- java
- 자바
- network
- LeetCode
- DP
- 프로그래머스
- TypeScript
- Redux
- Today
- Total
목록알고리즘 (30)
늘 겸손하게
문제 풀이 재귀를 이용한 분할 정복 알고리즘을 적용하면 쉽게 해결 가능하다. 종이에 적힌 숫자가 모두 같은 수로 되어 있지 않으면 9개의 종이로 잘라야 한다. 종이 한 변의 길이를 N, 왼쪽 위 꼭짓점 좌표를 x, y로 한다면 왼쪽 위 꼭지점 한 변의 길이 x, y N / 3 x + N / 3 , y N / 3 x + 2 * (N / 3) , y N / 3 x , y + N / 3 N / 3 x + N / 3 , y + N / 3 N / 3 x + 2 * (N / 3) , y + N / 3 N / 3 x , y + 2 * (N / 3) N / 3 x + N / 3 , y + 2 * (N / 3) N / 3 x + 2 * (N / 3) , y + 2 * (N / 3) N / 3 인 9개의 종이로 나누어야 ..
팩토리얼 0의 개수 문제 풀이 처음 떠오르는 풀이법은 N!을 직접 구해서 뒤에서부터 0이 아닌 숫자가 나올때까지 0의 개수를 구하는 방법이지만 N 이 조금만 커져도 시간 제한에 걸리게된다. 그러므로 다른 풀이법을 생각해야한다. 팩토리얼 숫자에서 0이 증가하는 경우를 생각해보자. 2 * 5 가 포함된만큼 0이 증가하는것을 알 수 있다. 어느 경우에서든 2보다 5가 더 많으므로 n 이하의 숫자들중에서 5 , 25 ,125가 포함된 갯수들을 구하면된다. n = 5) { count += n / 5; n /= 5; } System.out.println(count); } } Colored by Color Scripter cs
문제 해설 주어진 데이터를 어떤 자료구조에 저장할지 결정하는 게 중요한 문제 문제를 보면 알몸이 아니면 된다고 했으므로 옷 하나만 걸쳐도 문제가 되지 않는다. 결국 옷이 종류별로 몇 개 있는지를 저장하고 옷의 종류별 개수에 1을 더한 결과를 모두 곱한 뒤 1을 빼준다. 1을 더하는 이유는 해당 종류의 옷을 고르지 않는 경우도 있기 때문이고, 모두 곱한 값에 1을 빼주는 이유는 모든 종류의 옷들 중 아무것도 고르지 않은 경우를 빼야 하기 때문이다. 문제 풀이 어떤 종류의 옷이 있는지 해당 종류의 옷의 개수가 몇개인지를 저장해야 한다. 이에 알맞은 자료구조는 hashmap이다. 옷의 이름은 필요가 없으므로, 옷의 종류가 무엇인지, 해당 종류의 옷이 몇개 있는지를 hashmap에 저장한다. ( 해당 옷 종류의..
잃어버린 괄호 최소값을 얻기 위해서는 덧셈을 먼저 다해주고 뺄셈을 하면 정답이 나온다. 주어진 입력을 split 함수로 나누어 덧셈을 먼저 해준 뒤 뺄셈을 하면 정답을 출력할 수 있다. 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 32 33 34 35 import java.util.Scanner; import java.util.Vector; public class Main { public static void main(String [] args) { Scanner sc = new Scanner(System.in); String arr = new String(); arr = sc.nextLine(); ..