전체 글
-
[프로그래머스] 주식가격(08.25)algorithm/프로그래머스 2020. 8. 25. 00:37
문제 https://programmers.co.kr/learn/courses/30/lessons/42584 코딩테스트 연습 - 주식가격 초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 떨어지지 않은 기간은 몇 초인지를 return 하도록 solution 함수를 완성하세요. 제한사항 prices의 각 가격은 1 이상 10,00 programmers.co.kr 접근법 이중 포문으로 간단하게 풀 수 있을 것으로 보았지만 은근히 까다로웠다. 문제를 이해하는게 우선이었다. [1,2,3,2,3] 0번째 인덱스에 있는 1은 배열이 끝날 때까지 가격이 떨어지지 않는다. 따라서 [2,3,2,3] 4초동안 가격이 떨어지지 않는다. 1번째 인덱스 2는 배열이 끝날 때까지 가격이 떨어지지 ..
-
[프로그래머스] 배달(08.23)algorithm/프로그래머스 2020. 8. 23. 22:43
문제 https://programmers.co.kr/learn/courses/30/lessons/12978 코딩테스트 연습 - 배달 5 [[1,2,1],[2,3,3],[5,2,2],[1,4,2],[5,3,1],[5,4,2]] 3 4 6 [[1,2,1],[1,3,2],[2,3,2],[3,4,3],[3,5,2],[3,5,3],[5,6,1]] 4 4 programmers.co.kr 접근법 이런 그래프 문제는 보통 인접 배열보단 인접 그래프로 푸는게 좋아서 인접 그래프를 사용했다. result 배열에는 각 마을까지 가는데 걸리는 시간들을 담겨있다. dfs를 통해서 풀었고 1번 마을은 무조건 배달이 가능하기 때문에 answer는 1로 초기화한 상태로 풀었다. 코드 import java.util.ArrayList;..
-
CHAP5. 스트림 활용book/모던 자바 인 액션 2020. 8. 23. 18:41
5.1 필터링 5.1.1 프레디케이트로 필터링 스트림 인터페이스는 filter 메서드를 지원한다. filter 메서드는 Predicate(boolean을 반환하는 함수)를 인수로 받아서 Predicate와 일치하는 모든 요소를 포함하는 스트림을 반환한다. List vegetarianMenu = menu.stream() .filter(Dish::isVegetarian) .collect(toList()); 위와 같이 채식 요리인지 확인하는 메서드 참조를 filter 메서드에서 사용할 수 있다. 5.1.2 고유 요소 필터링 스트림은 고유 요소로 이루어진 스트림을 반환하는 distinct 메서드도 지원한다. 고유의 여부는 hashCode와 equals에 의해 결정된다. List numbers = Arrays.a..
-
[프로그래머스] 보석 쇼핑(08.22)algorithm/프로그래머스 2020. 8. 22. 17:56
문제 https://programmers.co.kr/learn/courses/30/lessons/67258 코딩테스트 연습 - 보석 쇼핑 ["DIA", "RUBY", "RUBY", "DIA", "DIA", "EMERALD", "SAPPHIRE", "DIA"] [3, 7] programmers.co.kr 접근법 처음에는 이중 포문을 사용해서 풀었는데 역시나 시간 초과가 났다. 고민을 오랫동안 했는데도 풀지 못해서 결국 다른 코드를 참고했다. 슬라이딩 윈도우 프로토콜 방식으로 풀어낼 수 있었다. 앞에서 부터 순서대로 보석들을 고르다가 중복된 보석이 나오면 시작 인덱스를 하나씩 밀어주는 방식을 사용했다. 자세한 설명은 코드에 주석을 포함하였다. 코드 import java.util.*; class Solutio..
-
[SPRING] Spring Batch Chunk 지향처리study/spring 2020. 8. 21. 22:03
Chunk Spring Batch에서의 Chunk란 데이터 덩어리로 작업을 할 때 각 커밋 사이에서 처리되는 row의 수를 말한다. 즉, Chunk 지향 처리란 한 번에 하나씩 데이터를 읽어 Chunk라는 덩어리를 만든 후 Chunk 단위로 트랜잭션을 다루는 것을 의미한다. 여기서 트랜잭션이라는 것은 Chunk 단위로 트랜잭션을 수행하기 때문에 실패할 경우 해당 Chunk 만큼만 롤백이 되고 이전에 커밋된 트랜잭션 범위까지는 반영이 된다는 것이다. 위의 이미지로 확인할 수 있는 순서는 아래와 같다 1. Reader를 통해 데이터를 하나 읽어온다. 2. 읽어온 데이터를 Processor에서 가공한다. 3. 가공된 데이터들을 별도의 공간에 모은 후 Chunk 단위만큼 쌓이게 되면 Writer에 전달하고 Wr..
-
[JAVA] Exceptionstudy/java 2020. 8. 21. 19:15
Throwable 클래스 예외 처리를 할 수 있는 최상위 클래스이다. Exception과 Error는 Throwable의 상속을 받는다. Error : 오류 Error는 컴퓨터 하드웨어의 오동작 또는 고장으로 인해 응용 프로그램에 문제가 생겼거나 JVM 실행에 문제가 생겼을 경우에 발생하는 것을 말한다. 따라서 개발자가 미리 예측해서 처리할 수 없다. Exception : 예외 Exception은 사용자의 잘못된 조작 혹은 개발자의 잘못된 코딩으로 인해 발생하는 프로그램의 오류를 말한다. Exception이 발생하면 Error와 마찬가지로 프로그램이 종료가 된다. 하지만 Exception은 Exception Handling(예외 처리)를 통해 프로그램이 종료되지 않고 정상적으로 동작할 수 있게 한다. C..
-
[프로그래머스] N-Queen (08.21)algorithm/프로그래머스 2020. 8. 21. 18:23
문제 https://programmers.co.kr/learn/courses/30/lessons/12952 코딩테스트 연습 - N-Queen 가로, 세로 길이가 n인 정사각형으로된 체스판이 있습니다. 체스판 위의 n개의 퀸이 서로를 공격할 수 없도록 배치하고 싶습니다. 예를 들어서 n이 4인경우 다음과 같이 퀸을 배치하면 n개의 퀸은 programmers.co.kr 접근법 백트래킹에서 가장 대표적인 예로 나오는 N-Queen 문제이다. 대표적인 백트래킹 문제임에도 풀기가 힘들었다. 처음에는 이차원 배열을 사용해서 풀려고 했는데 복잡했고 col이라는 일차원 배열을 만들어서 col의 값을 row 인덱스를 배열에 넣어주었다. ex) col = { 2, 4, 1, 3} 같은 라인 또는 대각라인에 여왕이 존재하면..
-
[프로그래머스] 징검다리 건너기 (08.19)algorithm/프로그래머스 2020. 8. 19. 22:02
문제 https://programmers.co.kr/learn/courses/30/lessons/64062 코딩테스트 연습 - 징검다리 건너기 [2, 4, 5, 3, 2, 1, 4, 2, 5, 1] 3 3 programmers.co.kr 접근법 효율성 문제였기 때문에 이분탐색으로 풀 생각 먼저 했다. 배열의 가장 작은 값과 가장 큰 값을 구하고 그 사이의 값을 이분탐색하면서 답이 될 수 있는 값 중에 가장 큰 값을 찾았다. 코드 class Solution { public int solution(int[] stones, int k) { int answer = 0; int min = getMin(stones); int max = getMax(stones); while(min = mid){ cnt = 0; /..