개인공부 63

[ Pytest ] fixture 'sync_client' not found, 정의한 fixture를 찾지 못하는 문제

테스트 환경개발환경python==3.9async-asgi-testclient==1.4.11pytest==8.1.1pytest-asyncio==0.23.6 디렉토리 구조├── alembic├── frontend├── scripts├── src│   ├── domains│   ├── external_service│   ├── main.py├── tests│   ├── conftest.py│   └── src└── venv상황 FastAPI를 활용한 동기 API 단위 테스트를 작성하던 중 정의한 fixture를 찾을 수 없다는 문제에 직면했다.  나는 conftest.py에 sync_client를 정의한 상태였는데, 해당 fixture를 찾아오지 못했다.  이와 관련하여, 나는 conftest.py의 선언된 ..

[ 탐색 ] 백준 1261번 알고스팟, 다익스트라

문제 링크 1261번: 알고스팟 첫째 줄에 미로의 크기를 나타내는 가로 크기 M, 세로 크기 N (1 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 미로의 상태를 나타내는 숫자 0과 1이 주어진다. 0은 빈 방을 의미하고, 1은 벽을 의미 www.acmicpc.net 💡문제 분석 요약 탐색 알고리즘 문제로 최소 개수를 구해야 하는 문제였기 때문에, BFS를 활용하여 문제를 풀이했다. 문제에서 조건을 제한하고 있기 때문에 조건을 따라 문제를 풀이하면 된다. 이동할 수 있는 방 == 이동할 수 있는 방향 미로 밖으로 이동할 수 없음 1 = N: # 범위를 벗어나면 아래의 코드를 실행하지 않는다. continue if dist[nx][ny] == -1: # 아직 해당 방을 방문하지 않았다면 # 만약..

[ 탐색 ] 백준 13549 숨박꼭질 3

문제 링크 13549번: 숨바꼭질 3 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 때 www.acmicpc.net 💡문제 분석 요약 탐색 알고리즘 중 하나인 BFS를 활용하여 문제를 풀이하면 쉽다. DFS를 떠올릴 수 있으나, 이 문제에서 DFS은 적절한 방법이 될 수 없다. 효율성이 떨어지기 때문이다. - 최단 경로 찾기의 비효율성: 현재의 문제는 가장 빠른 시간을 찾아야한다. 하지만 DFS는 깊이 우선 탐색의 특성으로, 최적이 아닌 경로를 더 오랫동안 탐색하게 될 수 있어 적합하지 않다. 💡알고리즘 설계 BFS 알고리즘을 만..

[ 수학 ] 백준 2609 최대공약수와 최소공배수, Kotlin, 유클리드 알고리즘

문제 링크 2609번: 최대공약수와 최소공배수 첫째 줄에는 입력으로 주어진 두 수의 최대공약수를, 둘째 줄에는 입력으로 주어진 두 수의 최소 공배수를 출력한다. www.acmicpc.net 💡문제 분석 요약 두 자연수의 최대 공약수(GCD)와 최소 공배수(LCM)을 구해야한다. 최대 공약수는 두수를 나머지 없이 나누는 가장 큰수를 의미한다. 최소 공배수는 두 수로 균등하게 나누어지는 가장 작은 수를 의미한다. 💡알고리즘 설계 GCD: a와 b의 GCD를 찾기위해 *유클리드 알고리즘을 사용한다. LCM: GCD를 찾으면, 공식(LCM = (a * b) / a와 b의 GCD)을 활용하여 계산한다. 💡코드 import java.util.* fun gcd(a: Int, b: Int): Int { return i..

[ 수학 ] 백준 17427 약수의 합 2 kotlin

문제 링크 17427번: 약수의 합 2 두 자연수 A와 B가 있을 때, A = BC를 만족하는 자연수 C를 A의 약수라고 한다. 예를 들어, 2의 약수는 1, 2가 있고, 24의 약수는 1, 2, 3, 4, 6, 8, 12, 24가 있다. 자연수 A의 약수의 합은 A의 모든 약수를 더 www.acmicpc.net 💡문제 분석 요약 자연수 A의 약수의 합은 f(A)이다. x보다 작거나 같은 모든 자연수 y의 f(y)값을 더한 값은 g(x)이다. 자연수 N이 주어졌을 때, g(N)을 구해야한다. 1부터 N까지 각 숫자에 대하여 그 숫자의 모든 약수들의 합을 구해야 한다. n 의 상한(0 < n

[ DP ] 백준 15988번 1, 2, 3 더하기 3, Kotlin

문제 링크 15988번: 1, 2, 3 더하기 3 각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 1,000,000,009로 나눈 나머지를 출력한다. www.acmicpc.net 💡문제 분석 요약 n 이 1, 2, 3의 합으로 표현될 수 있는 방법의 수를 찾는 것이다. 문제 n 을 구성하려면 명시적으로 두 개 이상의 숫자가 필요하다. n 의 상한(0 < n 3에 대하여 dp[i] = dp[i-1] + dp[i-2] + dp[i-3]가 된다. (dp[1] = 1, dp[2] = 2, dp[3] = 4.) 💡코드 const val MOD = 1_000_000_009 fun main() { val T = readLine()!!.toInt() val dp = LongArray(1_000..

[ 그리디 ] 백준 1783 병든 나이트

백준 알고리즘 문제 원본 1783번: 병든 나이트첫째 줄에 체스판의 세로 길이 N와 가로 길이 M이 주어진다. N과 M은 2,000,000,000보다 작거나 같은 자연수이다.www.acmicpc.net 방문할 수 있는 칸의 최대 개수를 구하는 문제는 조건에 따라 다양한 접근 방식이 필요하다. 이번 문제해결의 핵심은 체스판의 크기와 나이트의 이동 규칙을 분석하는 것이었다.문제 이해 병든 나이트는 4가지 방법으로만 이동할 수 있다.2칸 위로, 1칸 오른쪽1칸 위로, 2칸 오른쪽1칸 아래로, 2칸 오른쪽2칸 아래로, 1칸 오른쪽이동 횟수가 4번 이상일 경우, 4가지 이동 방법을 모두 사용해야 한다. 이러한 제약 아래에서 나이트가 체스판에서 방문할 수 있는 최대 칸 수를 찾아야 한다.해결 전략문제 해결을 위해 ..

[ JPA ] 다양한 어노테이션을 사용한 효과적인 엔터티 매핑_2.연관관계 매핑

DB 테이블에서는 관계에서 방향의 개념이 존재하지 않다. DB 테이블에서는 특정 테이블을 기준으로 원하는 정보를 JOIN하여 조회하기 때문이다. 즉, DB 테이블에서는 테이블 사이의 연관관계를 FK(외래 키)로 맺을 수 있고 방향 상관없이 조회가 가능하다. 하지만, 객체에서는 다른 엔터티의 정보를 갖고있지 않다면 조회(참조)가 불가능하다. 이로인해 DB 테이블에서는 없는 단방향, 양방향와 같은 방향의 개념이 존재한다. 따라서 DB 테이블에 실제 칼럼으로 존재하지는 않지만 Entity 상태에서 다른 Entity를 참조하기 위해 방향을 설정한다. OverView - 연관관계 어노테이션 - @OneToOne - @ManyToOne - @OneToMany - @ManyToMany 연관관계 어노테이션 JPA 는 ..

개인공부 2024.02.12

[ JPA ] 다양한 어노테이션을 사용한 효과적인 엔터티 매핑_1.객체와 테이블 매핑

JPA 어노테이션을 효과적으로 사용하는 방법을 아는 것은 애플리케이션에서 데이터베이스와의 상호작용을 최대한으로(아마도) 잘 활용하기 위해서는 필수적이라고 생각한다. 그리고 나는 이 작업을 잘하고 싶다. 그래서 이번 정리를 통해, JPA 어노테이션을 카테고리별로 나눠 정리함으로써, JPA 를 활용한 모델링을 더 잘 이해하고 활용할 수 있을 것이라고 기대한다. 객체와 테이블 매핑 어노테이션 객체(Entity)와 데이터 베이스의 Table 을 매핑 할 때에는 주로 다음과 같은 어노테이션이 사용된다. @EntityJPA 에서 테이블에 매핑할 클래스에 붙인다. 이 어노테이션이 붙은 클래스는 엔티티로 불린다.privaet 혹은 protected 인 기본 생성자(default constructor)를 반드시 작성해야..

개인공부 2024.02.12

[ JPA ] JPA Entity, EntityManagerFactory, EntityManager, Persistence context

개요 이번 정리에서는 JPA를 이해하고 사용하기 위한 내용으로, JPA의 엔티티 매핑, 엔티티 매니저 팩토리와 엔티티 매니저의 역할 및 사용법, 그리고 영속성 컨텍스트의 이해와 작동 원리에 대한 설명 을 중심으로 정리 한다. 내용 구성 - JPA Entity 생성 - 엔티티 매니저 팩토리(EntityManagerFactory) - 엔티티 매니저(EntityManager) - 영속성 컨텍스트(Persistence context) JPA Entity 생성 @Entity // DB 테이블과 매핑 대상 @Table(name="user") // user 테이블과 매핑 public class User { @Id // 식별자에 대응 private String email; // email 칼럼과 매핑 private S..

개인공부 2024.02.11