분류 전체보기
-
CHAP4. 스트림 소개book/모던 자바 인 액션 2020. 8. 11. 01:46
4.1 스트림이란 무엇인가? 스트림은 자바8 API에 새로 추가된 기능이다. 스트림을 이용하면 SQL처럼 선언형(즉, 데이터를 처리하는 임시 구현 코드 대신 질의로 표현할 수 있다)으로 컬렉션 데이터를 처리할 수 있다. 또한 멀티스레드 코드를 구현하지 않아도 데이터를 투명하게 병렬로 처리할 수 있다. 예를 들어보자 아래 코드는 저칼로리의 요리명을 반환하고 칼로리를 기준으로 요리를 정렬하는 자바7 코드다 //칼로리가 400 미만인 음식들을 lowCaloricDishes 리스트에 저장 List lowCaloricDishes = new ArrayList(); for(Dish dish : menu) { if(dish.getCalories() < 400) { lowCaloricDishes.add(dish); } ..
-
[프로그래머스] 하노이의 탑 (08.09)algorithm/프로그래머스 2020. 8. 9. 20:02
문제 https://programmers.co.kr/learn/courses/30/lessons/12946 코딩테스트 연습 - 하노이의 탑 하노이 탑(Tower of Hanoi)은 퍼즐의 일종입니다. 세 개의 기둥과 이 기동에 꽂을 수 있는 크기가 다양한 원판들이 있고, 퍼즐을 시작하기 전에는 한 기둥에 원판들이 작은 것이 위에 있도록 순서대�� programmers.co.kr 접근법 하노이 탑이 재귀의 대표적인 예시임에도 풀기가 힘들었다. https://shoark7.github.io/programming/algorithm/tower-of-hanoi '하노이의 탑' 이해하기 '하노이의 탑' 문제를 이해하고 문제 해결을 위한 핵심 통찰을 살핀 뒤 코드로 작성합니다. 이후 탑의 개수에 따른 총 이동 횟수를..
-
[JAVA] 제네릭study/java 2020. 8. 8. 00:31
제네릭 ( Generic ) 클래스 내부에서 사용할 데이터 타입을 외부에서 지정하는 기법 다양한 타입의 객체들을 다루는 메소드나 컬렉션 클래스에 컴파일 시의 타입체크를 해주는 기능 제네릭이 필요한 이유 public class ArrayListEx { private int size; private Object[] elements = new Object[5]; public void add(Object value){ elements[size++] = value; } public Object get(int index){ return elements[index]; } } 위의 코드는 ArrayList를 직접 만든 예시다. public class Main { public static void main(String[..
-
[프로그래머스] 최고의 집합 (08.07)algorithm/프로그래머스 2020. 8. 7. 17:18
문제 https://programmers.co.kr/learn/courses/30/lessons/12938 코딩테스트 연습 - 최고의 집합 자연수 n 개로 이루어진 중복 집합(multi set, 편의상 이후에는 집합으로 통칭) 중에 다음 두 조건을 만족하는 집합을 최고의 집합이라고 합니다. 각 원소의 합이 S가 되는 수의 집합 위 조건을 만족 programmers.co.kr 접근법 문제는 쉬운 편이었다. 문제에서 말하는 최고의 집합이 되기 위해선 모든 집합의 숫자가 다 비슷해야한다. 무슨 말이냐 만약 n=3이고 s=10이라고 가정했을때 {3, 3, 4}가 최고의 집합이 된다. {2, 2, 6} , {2, 3, 7}, {4, 2, 4} 등등 어떠한 집합도 {3, 3, 4}보다 곱이 클 수가 없다. 그래서 ..
-
[프로그래머스] 줄 서는 방법 (08.06)algorithm/프로그래머스 2020. 8. 6. 18:45
문제 https://programmers.co.kr/learn/courses/30/lessons/12936 코딩테스트 연습 - 줄 서는 방법 n명의 사람이 일렬로 줄을 서고 있습니다. n명의 사람들에게는 각각 1번부터 n번까지 번호가 매겨져 있습니다. n명이 사람을 줄을 서는 방법은 여러가지 방법이 있습니다. 예를 들어서 3명의 사람 programmers.co.kr 접근법 처음에는 재귀로 모든 경우의 수를 찾고 k 번째 경우의 수에서 재귀를 멈췄다. 이런 방법으로 하면 k가 long으로 선언된 변수이므로 너무 많은 재귀가 돌아갔다. 그래서 찾은 방법은 k를 줄여나가는 방식이다. 숫자가 n 개인 경우에 정렬할 수 있는 모든 경우의 수 점화식은 dp[n] = dp[n-1] * n 이다. 숫자가 1개일 때는 ..
-
[JAVA] GCstudy/java 2020. 8. 6. 00:43
GC란? Java는 JVM ( Java Virtual Machine ) 위에서 구동이 된다. JVM에서 애플리케이션이 사용하는 메모리를 관리하는 작업이 있는데 이를 GC라고 한다. Garbage Collection의 약자로 런타임 시에 힙 영역에 저장되는 객체들을 주기적으로 확인하여 사용하지 않는 객체를 해제하여 정리하는 역할을 한다. Stop-the-world GC를 실행하기 위해 JVM이 애플리케이션 실행을 멈추는 것을 말한다. Full GC가 발생하면 JVM은 애플리케이션의 실행을 멈추고 GC를 실행하는 스레드만 동작한다. 웹 서버에서 Full GC가 발생하면 서비스는 중단될 것이고 서비스가 중단된 동안 각종 Time out이 발생할 것이며 미뤄진 작업들이 쌓여 또 다른 Full GC를 발생시키게 ..
-
[프로그래머스] 야근 지수 (08.05)algorithm/프로그래머스 2020. 8. 5. 18:14
문제 https://programmers.co.kr/learn/courses/30/lessons/12927 코딩테스트 연습 - 야근 지수 회사원 Demi는 가끔은 야근을 하는데요, 야근을 하면 야근 피로도가 쌓입니다. 야근 피로도는 야근을 시작한 시점에서 남은 일의 작업량을 제곱하여 더한 값입니다. Demi는 N시간 동안 야근 피로도 programmers.co.kr 접근법 야근지수의 최소값을 찾기위한 방법을 먼저 찾아야했다. 내가 생각한 방법은 works 배열에 있는 값들 중 남은 일의 작업량이 가장 많은 순으로 작업을 진행하는 것이다. 그렇기 위해서 남은 일의 작업량들이 역순으로 정렬이 되어있어야한다. 남은 일의 작업량의 역순을 유지하기 위해서 우선순위 큐를 사용했다. 우선순위 큐를 돌면서 최대값을 p..
-
[SPRING] DispatcherServletstudy/spring 2020. 8. 4. 23:53
DispatcherServlet : 서블릿 컨테이너에서 HTTP 프로토콜을 통해 들어오는 모든 요청을 프레젠테이션 계층의 제일 앞에 둬서 중앙 집중식으로 처리해주는 프론트 컨트롤러 클라이언트로부터 요청이 들어오면 Tomcat 같은 서블릿 컨테이너가 요청을 받는데 이때 제일 앞에서 서버로 들어오는 모든 요청을 처리하는 프론트 컨트롤러 장점 web.xml의 역할을 축소시켰다. default / jsp *.jsp jsp *.jspx 기존엔 위처럼 모든 서블릿에 대해서 URL 매핑을 위해 반드시 web.xml에 등록해야 했지만 dispatcher org.springframework.web.servlet.DispatcherServlet 1 dispatcher / 으로 DispatcherServlet을 등록해주어 ..