일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- greedy
- Math
- array
- 코테
- Data Structure
- database
- Method
- Binary Search
- geometry
- string
- Binary Tree
- Counting
- Number Theory
- bit manipulation
- simulation
- 자바
- SQL
- Stack
- hash table
- two pointers
- java
- 코딩테스트
- dynamic programming
- 파이썬
- Matrix
- Class
- 구현
- Tree
- sorting
- implement
- Today
- Total
목록분류 전체보기 (1234)
코린이의 소소한 공부노트

한수는 크기가 2^N × 2^N인 2차원 배열을 Z모양으로 탐색하려고 한다. 예를 들어, 2×2배열을 왼쪽 위칸, 오른쪽 위칸, 왼쪽 아래칸, 오른쪽 아래칸 순서대로 방문하면 Z모양이다. N > 1인 경우, 배열을 크기가 2^(N-1) × 2^(N-1)로 4등분 한 후에 재귀적으로 순서대로 방문한다. N이 주어졌을 때, r행 c열을 몇 번째로 방문하는지 출력하는 프로그램을 작성하시오. 1. 입력 - 첫째 줄에 정수 N, r, c가 주어진다. - 1 ≤ N ≤ 15 - 0 ≤ r, c < 2^N 2. 출력 - r행 c열을 몇 번째로 방문했는지 출력한다. 3. 예제 4. 코드 1) 첫 코드 - 맞긴 하나 시간초과 import java.util.*; import java.io.*; class Main { st..

셀프 넘버는 1949년 인도 수학자 D.R. Kaprekar가 이름 붙였다. 양의 정수 n에 대해서 d(n)을 n과 n의 각 자리수를 더하는 함수라고 정의하자. 예를 들어, d(75) = 75+7+5 = 87이다. 양의 정수 n이 주어졌을 때, 이 수를 시작해서 n, d(n), d(d(n)), d(d(d(n))), ...과 같은 무한 수열을 만들 수 있다. n을 d(n)의 생성자라고 한다. 위의 예시에서 75는 87의 생성자이다. 생성자가 없는 숫자를 셀프 넘버라고 한다. 100보다 작은 셀프 넘버는 총 13개가 있다. 1, 3, 5, 7, 9, 20, 31, 42, 53, 64, 75, 86, 97 10000보다 작거나 같은 셀프 넘버를 한 줄에 하나씩 출력하는 프로그램을 작성하시오. 1. 입력 - 입..

1742년, 독일의 아마추어 수학가 크리스티안 골드바흐는 레온하르트 오일러에게 다음과 같은 추측을 제안하는 편지를 보냈다. “4보다 큰 모든 짝수는 두 홀수 소수의 합으로 나타낼 수 있다.” 이 추측은 아직도 해결되지 않은 문제이다. 백만 이하의 모든 짝수에 대해서, 이 추측을 검증하는 프로그램을 작성하시오. 1. 입력 - 입력은 하나 또는 그 이상의 테스트 케이스로 이루어져 있다. 테스트 케이스의 개수는 100,000개를 넘지 않는다. - 각 테스트 케이스는 짝수 정수 n 하나로 이루어져 있다. (6 ≤ n ≤ 1000000) - 입력의 마지막 줄에는 0이 하나 주어진다. 2. 출력 - 각 테스트 케이스에 대해서, n = a + b 형태로 출력한다. 이때, a와 b는 홀수 소수이다. 숫자와 연산자는 공..
1. Input 1) int[] nums 2. Output 1) i
1. Input 1) String[] words 2. Output 1) words에서 찾을 수 있는 순서쌍의 최대 수를 반환 - words[i]와 words[j]가 순서쌍이 되려면 i Output: 0 5. Code class Solution { public int maximumNumberOfStringPairs(String[] words) { boolean[] visited = new boolean[words.length]; int count = 0; for(int i=0 ; i
1. Input 1) int mainTank - 트럭이 달리면서 소비하는 연료를 담은 탱크 2) int additionalTank - 여분 탱크로, 트럭이 달리면서 직접적으로 해당 연료를 소비할 수는 없다. 2. Output 1) 다음과 같이 계산했을 때 트럭이 달릴 수 있는 최대 거리를 반환 - 트럭은 연료 1리터로 10km를 갈 수 있다. - addtionalTank에 연료가 있는 한, mainTank의 연료 5리터를 소모할 때마다 addtionalTank의 연료 1리터가 mainTank로 자동 보충 된다. 3. Constraint 1) 1 0){ if(mainTank>=5){ used += 5; mainTank -= 5; if(additionalTank>0){ additionalTank--; mai..
1. Input 1) int[] nums 2. Output 1) nums의 요소 중 최솟값도 아니고 최댓값도 아닌 수 중 하나를 반환 2) 그런 수가 없다면 -1을 반환 3. Constraint 1) 1
1. Input 1) int n - 3자리 자연수이다. 2. Output 1) n과 2*n, 3*n을 이어 붙여 9자리 자연수를 만들었을 때, 매혹적인 수가 된다면 true, 아니면 false를 반환 - 매혹적인 수란 1부터 9까지의 수를 모두 1개씩 갖고 있고, 0이 없는 수를 말한다. 3. Constraint 1) 100
1. Input 1) int[] nums - nums.length == n - 1부터 n까지 무작위로 나열되어있는 배열 2. Output 1) 인접한 두 요소의 위치를 바꾸면서 맨 앞은 1이고 맨 뒤는 n인 배열을 만드는 데 필요한 최소 횟수를 반환 - 다른 요소들의 순서는 상관 없다. 3. Constraint 1) 2
1. Input 1) String s 2. Output 1) s에서 다음과 같은 작업을 수행했을 때 만들 수 있는 문자열의 길이 중 가장 작은 것을 반환 - 0부터 s.length()-1 사이의 인덱스 i를 고른다. - i번째 문자를 c라고 할 때, i를 기준으로 가장 가까운 c를 왼쪽에서 1개 오른쪽에서 1개를 지운다. - 더 이상 지울 수 없을 때까지 반복한다. 3. Constraint 1) 1 “abc" - 더 이상 지울 수 있는 것이 없으므로 3을 반환한다. 5. Code 1) 첫 코드 class Solution { public int minimizedStringLength(String s) { Set set = new HashSet(); for(int i=0 ; i