나를 기록하다
article thumbnail
[Spring Boot] initializationError 해결(@RunWith 관련)
Error/Spring Boot 2023. 7. 11. 21:42

@RunWith(SpringRunner.class) 매핑 시 initializationError 발생 1) 발생 package jpabook.jpashop; import org.assertj.core.api.Assertions; import org.junit.jupiter.api.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; import org.spring..

article thumbnail
[Spring Boot] assertThat 호출 오류 해결
Error/Spring Boot 2023. 7. 11. 21:38

1. assertThat 호출 오류(import 구문 문제) 1) 발생 위와 같이 Assertions을 임포트하였으나 assertThat에 빨간줄이 그이는 것을 확인할 수 있다. 2) 원인 이유를 찾기 위해 서핑 결과, Intellij에서 자동으로 import 해주는 구문의 문제라는 것을 알 수 있었다. 3) 해결 [intelliJ] assertThat import 안되는 오류 [intelliJ] assertThat import 안되는 오류 문제 발생 assertThat을 사용하기 위해 AssertJ를 import를 하려고 했는데 import가 안되는 문제가 발생했다. 해결 방법 import static org.junit.Assert.*; 테스트를 생성할 때 자동으로 들어가는 import문을 지워주 sh..

article thumbnail
[TIL-17 / 230710] 알고리즘 - 슬라이딩 윈도우(백준 12891)
TIL 2023. 7. 10. 23:28

4. 슬라이딩 윈도우 슬라이딩 윈도우 알고리즘은 2개의 포인터로 범위를 지정한 다음 범위(window)를 유지한 채로 이동(sliding)하며 문제를 해결한다. 투 포인터 알고리즘과 매우 비슷하다. [❌][백준 12891] DNA 비밀번호 12891번: DNA 비밀번호 1단계 - 문제 분석하기 P와 S의 길이가 1,000,000으로 매우 큼 → O(n)의 시간 복잡도 알고리즘으로 문제를 해결해야 함. 부분 문자열의 길이가 P → 슬라이딩 윈도우의 개념을 이용하면 문제를 쉽게 해결 가능 길이가 P인 윈도우를 지정하여 배열 S의 시작점에 놓는다. 윈도우를 오른쪽으로 밀면서 윈도우에 잡힌 값들이 조건에 맞는지 탐색 배열 S의 길이만큼만 탐색을 진행하면 되므로 O(n)의 시간 복잡도로 문제 해결 가능 2단계 -..

article thumbnail
[TIL-16 / 230706] 알고리즘 - 구간 합(백준 11659/11660/10986)
TIL 2023. 7. 6. 23:29

2. 구간합 구간 합은 배열을 이용하여 시간 복잡도를 더 줄이기 위해 사용하는 특수한 목적의 알고리즘. 코딩 테스트에서 사용 빈도 높음! 구간 합의 핵심 이론 합 배열 S 정의 S[i] = A[0] + A[1] + A[2] + ... + A[i-1] + A[i] // A[0]부터 A[i]까지의 합 합 배열은 기존의 배열을 전처리한 배열. 합 배열을 미리 구해두면 기존 배열의 일정 범위의 합을 구하는 시간 복잡도가 O(N)에서 O(1)로 감소! A[i]부터 A[j]까지의 배열 합을 합 배열 없이 구하는 경우, 최악의 경우는 i가 0이고 j가 N인 경우로 시간 복잡도는 O(N)이다. 합 배열을 사용한다면 O(1) 안에 답을 구할 수 있다. 합 배열 S를 만드는 공식 S[i] = S[i - 1] + A[i] ..

article thumbnail
[TIL-15 / 230705] 알고리즘 - 배열과 리스트
TIL 2023. 7. 6. 10:51

1. 배열과 리스트 배열과 리스트의 핵심 이론 배열 배열은 메모리의 연속 공간에 값이 채워져 있는 형태의 자료구조 배열의 값은 인덱스를 통해 참조 가능하고 선언한 자료형의 값만 저장 가능 ex) 아래 배열을 배열 A라 하고, 값 4에 접근하고자 하면 → A[3] 배열의 특징 인덱스를 사용하여 값에 바로 접근 가능 새로운 값을 삽입하거나 특정 인덱스에 있는 값을 삭제하기 어려움. -> 값을 삽입하거나 삭제하려면 해당 인덱스 주변에 있는 값을 이동시키는 과정 필요 배열의 크기는 선언할 때 지정 가능, 한 번 선언하면 크기를 늘리거나 줄일 수 없다. 구조가 간단 → 코딩 테스트에서 많이 사용 리스트 리스트는 값과 포인터를 묶은 노드라는 것을 포인터로 연결한 자료구조 리스트의 특징 인덱스가 없다 → 값에 접근하..

article thumbnail
[TIL-14 / 230702] 알고리즘 - 카운팅 정렬(Counting Sort)
TIL 2023. 7. 2. 23:26

알고리즘을 공부하면서 많은 정렬들이 등장한다. 버블 정렬, 삽입 정렬 등등... 오늘 공부한 내용은 이렇게 수많은 정렬 알고리즘 중 시간 복잡도가 O(n)으로 엄청난 성능을 보여주는 알고리즘이다. 카운팅 정렬을 공부하면서 처음에는 이게 왜 빠를까?를 생각했다. 시간 복잡도를 공부할 때, 시간 복잡도 도출 기준은 상수의 시간 복잡도는 계산에서 제외하고, 가장 많이 중첩된 반복문의 수행 횟수가 시간 복잡도의 기준이 된다고 배웠다. 카운팅 정렬은 각 배열 원소끼리(예를 들어 for문 중첩) 직접 비교하지 않고, 인덱스를 가지고 위치를 찾아나가는 것이다. 이 방법의 가장 큰 장점은 매우 빠르다는 것이다. 하지만 카운팅 정렬은 수의 범위가 매우 클 경우(예를 들어 10억, 100억 등등...) 심한 메모리 낭비를..

profile on loading

Loading...