본문 바로가기

분류 전체보기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.