
배열 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까..

배열 A에 1 ~ N까지 수가 들어있고 그 중에 없는 수를 return하는 문제. 무조건 1부터 순차적으로 시작해야되고, 없는 경우 마지막값의 +1한 값을 return해야 한다. class Solution { public int solution(int[] A) { // 빈 배열 처리 if (A.length == 0) { return A.length + 1; } List list = new ArrayList(); for (int a : A) { list.add(a); } // 리스트에 담아서 소팅 Collections.sort(list); int first = list.get(0); if (first != 1) { return 1; } for (int i = 0; i < list.size(); i++) {..

한 개구리가 반대편 길까지 가기 위해 X 위치에서 Y까지 매번 점프마다 D씩 이동하는 경우 몇 번 점프를 해야하는지 구하는 문제이다. class Solution { public int solution(int X, int Y, int D) { // 몇 번 점프해야하는 지 계산 int result = (Y - X) / D; // 나머지 값이 있는 경우 +1 처리 if (((Y - X) % D) > 0) { result++; } return result; } } 단순히 최종 거리를 구해서 (Y - X) 점프 당 거리로 나눠준 값에 나머지가 있는 경우 +1해서 결과를 계산한다.
종종 하나의 동작에 대해 어떤 객체가 맡고 있는지 구분하기 어려울 때가 있다. 여러 개의 점이 들어 있는 코드 몇 줄을 들여다보기 시작하면 책임 소재의 오류를 많이 발견하기 시작한다. 어떠한 코드 한 줄에서라도 점이 하나 이상 있으면 그른 곳에서 동작이 일어나고 있다는 뜻이다. 어쩌면 객체는 다른 두 객체를 동시에 다루고 있을지도 모른다. 이 경우 그 객체는 중개상, 즉 너무 많은 사람들에 대해 지나치게 알고 있는 꼴이다(마치 유통에 있어 중개상을 배제하고 직거래하듯). 문제의 동작을 관련 객체 가운데 하나로 옮겨보자. 그 모든 점들이 연결돼 있다면 대상 객체는 다른 객체에 깊숙이 관여하고 있는 셈이다. 이런 중복된 점들은 캡슐화를 어기고 있다는 방증이기도 하다. 객체가 자기 속을 들여다보려 하기보다는 ..

홀수 개의 숫자를 갖는 배열 A를 입력받아 짝이 없는 정수 하나를 반환하도록 구현하는 문제. Map을 이용해서 처리하였음. Key에는 배열의 값과 Value에는 그 배열에 몇 개 있는지 카운트값을 갖도록 하였다. 그리고 Map을 loop하면서 Value가 2로 나누었을 때 나머지가 1인 경우 그 Key를 반환하도록 처리하였다. import java.util.HashMap; import java.util.Map; // 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) { Map map = ne..

배열 A와 int K를 입력 받아서, K번만큼 오른쪽으로 로테이션한 결과를 반환하도록 구현하는 문제. 덱을 사용하여 K번만큼 뒤에서 빼서 앞으로 넣고 이런 식으로 로테이션함. import java.util.ArrayDeque; import java.util.Arrays; import java.util.Deque; // 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, int K) { // 빈 배열 예외처리 if (A.length == 0) { return A; } int[] result ..
- Total
- Today
- Yesterday
- 필터
- non-blocking
- blocking
- http://www.nextree.co.kr/p6960/
- 인터셉터
- 논블로킹
- Handler Interceptor
- a
- 프로그래머스 Level 2
- Filter
- 핸들러 인터셉터
- 코딩테스트 고득점 Kit
- 동기
- 스택/큐
- 블로킹
- 프로그래머스 Level 1
- 해시
- Asynchronous
- 프로그래머스 Level 3
- Synchronous
- 프로그래머스
- 비동기
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |