Practice 55

이분탐색)백준_숫자 카드 2

알고 넘어가야 할 이론: 이분탐색 : https://minhamina.tistory.com/127 이진탐색 = 이분탐색 (Binary Search) - Java로 구현 이진 탐색 = 이분 탐색 (Binary Search) 정렬된 배열 또는 리스트에 적합한 고속 탐색 방법이다. 배열의 중앙에 있는 값을 조사하여 찾고자 하는 항목이 왼쪽 또는 오른쪽 부분 배열에 있는지를 알아 minhamina.tistory.com HashMap : https://pulpul8282.tistory.com/153 HashMap- getOrDefault 메소드(완주하지 못한 선수) 위는 자주 사용되는 메소드들이다. 그중 getOrDefault 에 대해 알아보자 getOrDefault(key,0) : 찾는 키값이 존재하면 key값..

이분탐색) 백준_수 찾기

알고 넘어가야 할 이론: 원리는 이 영상에 잘 나와있어서 참고하면 좋을 듯 하다. https://www.youtube.com/watch?v=HjtYYBsknX0 오늘 공부한 내용 더보기 문제: 백준 ) 수찾기 https://www.acmicpc.net/problem/1920 내가 생각한 문제풀이 : 처음에는 첫번째 배열의 값을 정렬해준뒤, 두번째 배열의 값을 이중포문으로 하나하나 탐색하여 찾아주었다. 당연히 시간초과가 났고, 이진탐색에 대해 공부한 뒤 다시 풀어보았다. 더보기 정답코드: import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; im..

배열과 링크드리스트

배열이란? 배열은 특정 크기만큼 메모리 공간에 연속적으로 저장하는 자료구조이다. 메모리상에서 연속적으로 저장되어 있는 특징을 갖기 때문에, index로 접근이 용이하다. 배열의 크기는 처음 생성할 때 정하며 이후에는 변경할 수 없다. 삽입/삭제가 오래걸린다. 왜냐하면 데이터를 추가하려고 하는 자리를 비우고 뒤에 있는 데이터를 한 칸씩 뒤로 밀어야 하기 때문이다. 배열 중간의 데이터가 삭제되면, 공간 낭비가 발생한다. 빠른 접근이 요구되고, 데이터의 삽입과 삭제가 적을때 사용한다. 링크드리스트란? 링크드리스트는 여러개의 노드들이 순차적으로 연결된 형태를 갖는 자료구조이다. 첫번째 노드를 head, 마지막 노드를tail이라고 한다. 각 노드는 데이터와 다음 노드를 가리키는 포인터로 이루어져 있다. 이 포인터..

Practice/Java 2023.03.20

테스트코드 공부 참고자료 블로그

https://batory.tistory.com/497 @PersistenceContext 개인 공부 목적으로 작성한 글입니다. 아래 출처를 참고하여 작성하였습니다. 목차 @PersistenceContext 란? @PersistenceContext를 사용해야 하는 이유 1. @PersistenceContext 란? EntityManager를 빈으로 주입할 때 batory.tistory.com ->엔티티 매니저 의존성 주입 받을때 https://go-coding.tistory.com/102 TDD와 BDD에서 사용되는 given/when/then 행동과 실습 [Spring Boot] when(), given(), any() 및 BDD 설명 패스트 캠퍼스 강의를 듣던 도중 테스트 구문 작성 코드에서 처음 보..

Practice/Java 2023.03.06

테스트코드 공부 1

@ExtendWith(mockitoExtension.class) = JUnit과 mockito를 연결해주는 어노테이션 @Mock 어노테이션을 붙이고 의존성 주입할 필드를 넣는다. @InjectMocks : 테스트할 클래스를 넣는다. @Spy : 클래스 안에서 실제로 쓰겠다~ 하는 애들을 넣어준다. @Mock 은 가짜 객체를 만들어 반환해주는 어노테이션이다. @DisplayName : 테스트코드의 이름을 정해준다. 한글지원해서 한글로 이름을 정해줘도 된다. 🧡Given-When-Then 패턴 Given : 테스트에 필요한 변수를 정의하거나 Mock 객체를 통해 특정 상황에 대한 행동을 정의한다. When: 실제 테스트를 하는 메소드가 호출되며 테스트를 통한 결과값을 가져온다. Then: When 단계에서 ..

Practice/Java 2023.03.06

스프링) 의존성 주입

레파지토리를 선언만 해주고 의존성 주입을 해주지 않으면 널값이 들어가게 된다. 의존성 주입은 생성자를 통해서 할 수 있다. 아니면 어노테이션을 달아줘야 한다. @NoArgsConstructor 파라미터가 없는 기본 생성자를 생성 @AllArgsConstructor 모든 필드 값을 파라미터로 받는 생성자를 만듦 @RequiredArgsConstructor final이나 @NonNull인 필드 값만 파라미터로 받는 생성자 만듦 의존성 주입 말로만 듣고 찾아보고 혼자 공부할때는 이해가 안됐었는데 직접 이렇게 널값이 들어가는걸 눈으로 보고 에러를 마주하니까 다시는 의존성주입에 대해 잊지 않을 것 같다. 파이널에 생성자를 꼭 넣어줘야 하는 이유 = 파이널은 변경이 불가능한데 초기화를 안시켜주면 어..? 나 파이널..

Practice/Java 2023.02.16

스프링) JPA 페이징 처리 개념 및 활용방법.

개념 페이징은 사용자가 어떠한 데이터를 필요로 할 때, 전체 데이터 중의 일부를 보여주는 방식이다. JPA 에서는 데이터베이스에서 조회한 결과를 페이지 단위로 나누어 처리할 수있도록 도와주는 page객체로 페이징을 처리한다. public interface RecommendCourseBoardRepository extends JpaRepository { @Query("select rb from RecommendCourseBoard rb where rb.postStatus =:postStatusEnum") Page findAllBySatusIsVailable(Pageable pageable, PostStatusEnum postStatusEnum); } JPA를 상속받은 레파지토리에서 page타입의 안에 엔티..

Practice/Java 2023.02.15

파이썬) 최소힙, heapq

알고 넘어가야 할 이론: 자료구조 힙: https://www.youtube.com/watch?v=Zl07LUsR6P0 파이썬 힙과 관련된 코드: heappush : 힙에 원소 추가하기 heappush(배열,추가할원소) import heapq my_heap = [] heapq.heappush(my_heap,5) print(f'my_heap 5 추가 = {my_heap}') heapq.heappush(my_heap,4) print(f'my_heap 4 추가 = {my_heap}') heapq.heappush(my_heap,3) print(f'my_heap 3 추가 = {my_heap}') heapq.heappush(my_heap,2) print(f'my_heap 2 추가 = {my_heap}') heapq...

스프링) 빌더 패턴

문제인식 컨트롤러에서 postRequestDto 를 받아와서 엔티티인 Post에 postRequestDto 객체를 바로 넘겨주면 결합도가 높아져서 최소한의 데이터를 넘겨주도록 해야겠다는 생각이 들었다. 따라서 postRequestDto의 데이터 값을을 꺼내서 변수에 지정해 준 뒤 이런 식으로 Post에 하나하나 넣어주었는데 데이터베이스의 데이터가 바르게 들어가지 않고 뒤섞여 들어가는 문제가 발생하였다. Try 뒤섞여 들어갔다는 것은 생성을 할 때 문제가 생겼다는 뜻이니까 생성자를 만들어주었던 Post 객체에 가서 살펴보았더니 생성자를 이렇게 만들었는데 순서가 바뀌어서 레파지토리에 뒤섞여서 저장되었다. 다시 바르게 입력하여 저장하면 바르게 잘 들어가지만, 생성자에 들어가야 할 데이터들이 많을 경우 분명히 ..

Practice/Java 2023.01.17

파이썬 알고리즘: 유클리드 호제법으로 최대공약수 최소공배수 구하기

알고 넘어가야 할 이론: 최대공약수 구하는 방법 + 유클리드 호제법: https://www.youtube.com/watch?v=R1gxRwXRpMQ 오늘 공부한 내용 더보기 문제: 두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환하는 함수, solution을 완성해 보세요. 배열의 맨 앞에 최대공약수, 그다음 최소공배수를 넣어 반환하면 됩니다. 예를 들어 두 수 3, 12의 최대공약수는 3, 최소공배수는 12이므로 solution(3, 12)는 [3, 12]를 반환해야 합니다. 제한 사항 두 수는 1이상 1000000이하의 자연수입니다. 입출력 예 nmreturn 3 12 [3, 12] 2 5 [1, 10] 입출력 예 설명 입출력 예 #1 위의 설명과 같습니다. 입출력 예 #2 자연수 2와 5의 ..