
N개의 숫자를 갖는 배열 A를 입력 받아서, 그 배열에 distinct한 숫자 수를 반환하는 문제. // you can also use imports, for example: import java.util.HashSet; import java.util.Set; // you can write to stdout for debugging purposes, e.g. // System.out.println("this is a debug message"); class Solution { public int solution(int[] A) { Set set = new HashSet(); for (int i = 0; i < A.length; i++) { set.add(A[i]); } return set.size(); ..

A, C, G, T (각 1, 2, 3, 4 impact factor로 매핑되는)로 이루어진 String s과 s의 시작 종료 구간 값을 갖는 P[N], Q[N] 배열을 입력받아 각 구간 별로 가장 작은 impact factor를 갖는 배열을 반환하는 문제. class Solution { public int[] solution(String S, int[] P, int[] Q) { Map map = new HashMap(); map.put('A', 1); map.put('C', 2); map.put('G', 3); map.put('T', 4); int[] result = new int[P.length]; char[] chars = S.toCharArray(); for (int i = 0; i < P.len..

A, B, K 세 숫자를 입력 받아서 A ~ B 사이 숫자 중 K로 나누어떨어지는 개수를 return하는 문제. 처음에는 A ~ B까지 다 loop 돌면서 나누어떨어지는지 확인했으나 시간초과로 100%가 안나왔다. 여러가지 테스트해보다가 A / K, B / K 한 몫이 A에 K로, B에 K로 나누어떨어지는 숫자의 개수인 것을 알게되었고 그 사실을 응용해서 해결하였다. class Solution { public int solution(int A, int B, int K) { // B / K - A / K 해주고 int result = B / K - A / K; // 만약 A가 K로 나누어떨어지는 경우 A도 포함시켜야하기 때문에 + 1 if (A % K == 0) { result++; } return res..

배열 A에 1 ~ N까지의 숫자가 들어가있는데, 이 숫자들이 1부터 N까지 이루는 순열인지 아닌지를 판단하는 문제. 중간에 빠진 값이 있거나 하는 경우 0을 반환하고, 모든 숫자가 포함된 순열인 경우 1을 반환하면 되는 문제. class Solution { public int solution(int[] A) { // 소팅하고 Arrays.sort(A); // 순차적으로 빠진 값이 있는지 체크 for (int i = 0; i < A.length; i++) { // 빠진 값이 있으면 0을 반환 if (A[i] != (i + 1)) { return 0; } } // 없으면 1 반환 return 1; } } A를 오름차순으로 정렬하고 처음부터 돌면서 각 A의 값이 index+1와 같은지 아닌지 비교 후 아닌 경..

N개의 숫자를 갖는 배열 A가 주어지는데, N개의 숫자 중 1부터 순차적으로 확인했을 때, 그 중 빠진 숫자 중 최소인 숫자를 반환하는 문제. class Solution { public int solution(int[] A) { // 1 ~ 1000000 범위이므로 boolean[] map = new boolean[1000001]; // 소팅하고 Arrays.sort(A); // 만약 최대값도 음수이면 볼 필요 없이 그냥 1 반환 if (A[A.length-1] 0) { map[a] = true; } } // 1부터 돌면서 false인 경우 빠진 케이스이므로 return for (in..

배열 A와 숫자 N이 주어지는데, A[K] 값이 1과 N 사이라면 counter의 X 위치를 1 더하고, A[K] 값이 N+1이면 counter의 최대값으로 모든 값들을 세팅해주는 식으로 해서 배열 A를 돌면서 모든 연산을 처리한 결과를 반환하는 문제. class Solution { public int[] solution(int N, int[] A) { int maxVal = 0; int prevMaxVal = 0; int[] counter = new int[N]; for (int i = 0; i < A.length; i++) { if (A[i] == N + 1) { // N+1이면 최대값으로 모든 배열 setting if (prevMaxVal != maxVal) { Arrays.fill(counter,..

index가 시간이고, 그 index에 값이 낙엽이 떨어진 위치인 배열 A이 주어지고, X 위치까지 가는데 가능한 시간은 몇 초인지 구하는 문제. class Solution { public static int[] map = new int[100001]; public int solution(int X, int[] A) { Arrays.fill(map, -1); for (int i = 0; i < A.length; i++) { if (map[A[i]] == -1) { map[A[i]] = i; } } int result = 0; for (int i = 1; i

N개의 숫자로 이루어진 배열 A를 받아서, P값 기준으로 나눠서 부분합의 차이가 가장 작은 값을 구하는 문제. A[0], A[1], ... , A[P-1] / A[P+1], A[P+2], ... , A[N-1] P를 N-1까지 증가시키면서 매번 위처럼 나뉜 두 그룹의 차이의 최소값을 return하면 된다. class Solution { public int solution(int[] A) { int totalSum = 0; // 먼저 총합을 구하고 for (int i = 0; i < A.length; i++) { totalSum+=A[i]; } int result = Integer.MAX_VALUE; int sum = 0; for (int i = 0; i < A.length - 1; i++) { // i까..
- Total
- Today
- Yesterday
- 블로킹
- http://www.nextree.co.kr/p6960/
- Asynchronous
- 프로그래머스
- Handler Interceptor
- 해시
- 프로그래머스 Level 3
- 비동기
- 동기
- 프로그래머스 Level 1
- 핸들러 인터셉터
- non-blocking
- 논블로킹
- 필터
- blocking
- Synchronous
- Filter
- 스택/큐
- 코딩테스트 고득점 Kit
- 프로그래머스 Level 2
- a
- 인터셉터
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |