전체 글85 [알고리즘] two pointers 요소가 동일하지 않은 배열의 공통요소를 찾을때 사용하기 유용한 알고리즘 예제) 두 배열의 공통원소를 구하시오. public static void solution(int n, int[] arr, int m, int[] arr2) { // n = arr 배열의 길이 // arr = 대상배열 // m = arr2 배열의 길이 // arr2 = 대상배열 List list = new ArrayList(); Arrays.sort(arr); Arrays.sort(arr2); int p1 = 0, p2 = 0; // 두개의 포인터 생성 while(p1 < n && p2 < m) { // 두 배열의 끝까지 수행 if(arr[p1] == arr2[p2]) { // 공통원소가 발견되면 list.add(arr[p1]); //.. 2022. 6. 1. [JAVA] 캡슐화 객체 지향언어의 특징인 캡슐화를 고려한 로직을 작성하면 기능수정이 발생할때 사이드이펙트를 최소화 하며 로직수정의 유연함을 보유할 수 있다. 이는 다양한 이점을 가진다. 한 번에 캡슐화잘된 코드를 작성하기란 불가능 하겠지만 요소들을 잘 기억하여 다시 살펴볼때 수정할수 있도록 공부하자! 개인적인 학습의 정리글입니다. 먼저 캡슐화의 특성을 보면 1. 데이터 + 관련 기능을 하나의 클래스에 담기 - 관련있는 데이터와 기능을 하나의 클래스에 필드, 메서드로 작성한다. 2. 객체가 기능을 어떻게 구현했는지 외부로부터 감추기 - 기능을 객체의 메소드안에 작성하여 메소드 호출로서 기능을 사용할 수 있도록 한다. 3. 정보은닉 - 위의 특성과 비슷하며 객체에 대한 구체적인 정보를 노출시키지 않도록 한다. 다음은 캡슐화를.. 2022. 5. 26. [MYBATIS] 복수의 파라미터 전달하기 vo, dto, Map, List 등 복수의 파라미터를 넘기는 방법이 있지만 직접 복수개의 파라미터를 전달하는 방법을 정리합니다. 1. Mapper 인터페이스 import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @Mapper public interface FileMapper { int deleteFile(@Param("fileId") Long fileId, @Param("userId") String userId); } @Param("파라미터명") 어노테이션을 파라미터 앞에 추가합니다. 파라미터명은 XML파일에 명시할 텍스트로 추가합니다. 2. Mapper XML파일 /** deleteFile */ .. 2022. 5. 18. [알고리즘] 에라토스테네스 체 1부터 자연수 N까지의 소수를 확인할때 사용하기 용이한 공식이다. 이중반복문을 피하여 소수를 구할 수 있기 때문에 효율성에서 많은 이점이있다. 자연수 N+1의 크기를 가지는 배열을 만들어 2부터 반복문을 실행하여 배열의 데이터가 0(소수)라면 해당 수의 배수를 모두 1로 변경하여 소수에서 제외 시킨다. ex) 자연수 N 까지의 소수의 총 개수를 구한다. public static int solution(int n) { int[] arr = new int[n+1]; int answer = 0; for (int i = 2; i 2022. 5. 12. [알고리즘] 다양한 정렬 알고리즘 배열을 특정 기준으로 정렬해야 할 때 사용할 수 있는 정렬 알고리즘에 대한 정리 모든 예시는 오름차순 기준으로 작성하였습니다. 삽입정렬 이중 반복문을 사용하여 기준점에서 배열의 앞쪽으로 가며 비교한다. 기준점 데이터와 비교하여 교환대상이면 앞의 인덱스와 데이터와 교환하며 반복문이 진행된다. 기준점의 위치는 기준점보다 큰 수가 없을 때까지 진행한다. public static int[] solution(int n, int[] arr) { for (int i = 0; i = 0; j--) { // 기준점의 한칸뒤에서 부터 시작 if (arr[j] > tmp) arr[j + 1] = arr[j]; 앞의 값이 더 크면 교.. 2022. 4. 28. [JAVA] String, StringBuffer, StringBuilder의 차이점 해당 주제에 대해선 이미 많은 분들이 정리한 좋은 글이 있지만 성능과 연관이 있고 문자열을 다루는 일은 번번하여 기록을 남깁니다. 자바에서 문자열을 다루는 클래스는 String, StringBuffer, StringBuilder라는 3개의 클래스가 있다. 위의 3가지 클래스는 문자열을 저장하고 관리하는 기능을 제공하며 각각 조금의 차이가 존재합니다. 문자열의 연산이 많지 않다면 무관하나 연산이 많아지면 클래스의 종류에 따라 성능이슈가 발생할 수 있고, 쓰레드환경의 변화에도 이슈가 발생할 수 있습니다. 이렇기에 클래스의 특성을 이해하고 상황에 따라 알맞은 클래스를 사용해야 합니다. String과 StringBuffer, StringBuilder의 차이점 String과 StringBuffer, StringB.. 2022. 4. 19. 이전 1 ··· 4 5 6 7 8 9 10 ··· 15 다음