분류 전체보기
-
선택정렬카테고리 없음 2023. 4. 18. 12:31
선택정렬 주어진 리스트에서 최소값을 찾는다. 최소 값을 찾아서 대상과 교환을 한다. arr.length - 1 만큼 반복한다. 마지막은 할 필요가 없기 때문에 예를 들어보자 min = 6 6 2 7 8 1 min과 2를 비교해서 더 작은 값을 min에다 넣는다. min=2 7과 8 도 비교를한다. 2가 더 작기 때문에 min은 그대로 2다. min과 1을 비교한다. 1이 더 작기때문에 min 1을 넣는다. 6과 1을교환 한다. 이를 반복한다. 소스를 보자! private static void selectionSort(int arr[]) { for (int i = 0; i < arr.length - 1; i++) { int min = i; for (int j = i + 1; j < arr.length; j..
-
버블정렬카테고리 없음 2023. 4. 18. 12:31
버블정렬 거품 정렬(Bubble sort)은 두 인접한 원소를 검사하여 정렬하는 방법이다. 시간 복잡도가 O(n^2)로 상당히 느리지만, 코드가 단순하기 때문에 자주 사용된다. 원소의 이동이 거품이 수면으로 올라오는 듯한 모습을 보이기 때문에 지어진 이름이다. 6 2 7 8 1 6보다 2이 작기 때문에 교환 2 6 7 8 1 6보다 7이 크기 때문에 교환 하지 않는다. 2 6 7 8 1 7보다 8이 크기 때문에 교환 하지 않는다. 2 6 7 8 1 8보다 1이 작기 때문에 교환 2 6 7 1 8 다시 처음으로 돌아가 반복 한다. private static void bubbleSort(int[] arr){ for (int i = 0; i < arr.length; i++) { for (int j = 0; j..
-
사다리 게임(모 회사 입사문제)카테고리 없음 2023. 4. 18. 12:31
사다리 게임 slipp 사이트를 보다보니 사다리 게임 문제가 있어서 한번 풀어봤다. 내용은 즉 이렇다. 위 그림은 커피 내기를 할 때 유용한 사다리 게임입니다. 잘 생각해 보면, 사다리 게임은 가로선을 (높이, 왼쪽의 세로줄 번호) 형태로 나타낼 수 있습니다. 예컨대, 위 사다리 게임은 (1, 1), (6, 1), (9, 1), (3, 2), (5, 2) ....와 같이 표현할 수 있습니다. 보면 시작점만 (1,1) 이런 형태로 넣고 있다. 그래서 끝점 (1,2) 도 알아야 2에서 1로 갈 수 있을텐데... 그런데 가만보면 시작과 끝점 형태를 보면 (x,y) 시작점 , (x,y+1)이 끝점이 된다. 어떻게 하면 풀 수 있을까 하다가 깊이우선탐색 혹은 너비우선탐색에 쓰이던 인접행렬이 떠올랐다. 그래서 (1..
-
Spring boot의 ApplicationContext카테고리 없음 2023. 4. 18. 12:31
Spring boot ApplicationContext 인터넷을 보다보니까 좋은 자료가 있어 한번 보게 되었다. Spring ApplicationContext 스터디 하는 그룹인데 아라한사님도 여기 계신다. 보다보니 Spring boot는 어떤식으로 되는지 궁금했다. Spring boot는 기본적으로 AnnotationConfigApplicationContext을 사용하고 있다. Web이라면 AnnotationConfigEmbeddedWebApplicationContext을 사용한다. 물론 둘다 아무 설정이 안되어 있을때 이야기다. protected ConfigurableApplicationContext createApplicationContext() { Class contextClass = this.a..
-
JAVA8에 대해 알아보자(번외)카테고리 없음 2023. 4. 18. 12:31
java8 번외 갑자기 생각나서 쓴다. java8 의 추가된 기능 중 interface에 관한 내용이다. java8 interface는 static 메소드도 구현 가능하다. 이로써 util interface를 구현 할 수 있다는 거다. 또 다른 하나는 default 키워드가 추가 되어 메소드 바디를 갖는 인터페이스가 추가 되었다. 그러면서 다중 상속의 개념이 다시 등장했다. 그래서 한번 테스트를 해봤다. interface Man { default void print(String name) { System.out.println("Man :" + name); } } interface WoMan { default void print(String name) { System.out.println("WoMan :"..
-
JAVA8에 대해 알아보자(3)카테고리 없음 2023. 4. 18. 12:31
java8 이번엔 메소드 레퍼런스에 대해 알아보자. 메소드 레퍼런스를 알아보기전에 알아두어야 할 것이 있다. first-class citizen(일급 시민) 이 용어는 60년대에 크리스토퍼 스트래치 라는 분이 만들었다. first-class citizen란 무엇인가. 일단 내가 알고 있는 것으로 설명하겠다. 1. 파라미터로 전달받을 수 있어야 한다. 2. 리턴 값으로 반환 할 수 있어야 한다. 3. 변수 혹은 Data 구조에 담을 수 있어댜 한다. 그럼 필자가 말한 위에 3개가 자바에서 가능 한지를 알아보겠다. 첫 번째로 파라미터롤 전달 받을 수 있는지 알아보자. 일단 function을 담을수 있는 functionalInteface를 만들자 @FunctionalInterface interface Func..
-
주키퍼 설치 및 설정카테고리 없음 2023. 4. 18. 12:31
주키퍼 설치 및 설정 주키퍼를 설치 해보자. 다운로드 여기서 다운 받으면 되겠다 압축을 풀고 원하는 디렉토리에 넣어두자. 필자는 /usr/local/에 넣어 두었다. ${home}/conf/zoo.cfg 파일이 주키퍼 설정 파일이다. tickTime=2000 initLimit=10 syncLimit=5 dataDir=/var/zookeeper1 clientPort=2184 설정을 저장하자. 서버를 실행시켜보자! ./bin/zkServer.sh start JMX enabled by default Using config: /usr/local/zookeeper1/bin/../conf/zoo.cfg Starting zookeeper ... STARTED 주키퍼 클라이언트를 이용해서 접속해보자! ./bin/zkC..
-
JAVA8에 대해 알아보자(2)카테고리 없음 2023. 4. 18. 12:31
java8 이전에 FunctionalInterface와 람다표현식을 배웠다. 아직 못봤거나 까먹었다면 여기에가서 다시 보자! Stream Stream 에는 많은 기능이 있다. 다 설명할 수는 없지만 중요한 몇가지를 공부해보겠다. 자바의 컬렉션들은 Stream을 사용 할 수 있다. 혹은 스트림을 만들 수 있다. 흔히 쓰는 List를 예로 들어 공부해보겠다. 그전에 알아두어야 할 용어가 있다. Intermediate Operation Method 와 Terminal Operation Method이다. Intermediate Operation Method는 중간단계로써 스트림을 리턴하기 때문에 계속 Method Chaining 통해 지시 할 수 있다. 그리고 Terminal Operation Method는 스..