GitHub

https://github.com/Choidongjun0830

전체 글 444

[프로그래머스] Lv1. 달리기 경주 파이썬

달리기 경주 문제 설명 얀에서는 매년 달리기 경주가 열립니다. 해설진들은 선수들이 자기 바로 앞의 선수를 추월할 때 추월한 선수의 이름을 부릅니다. 예를 들어 1등부터 3등까지 "mumu", "soe", "poe" 선수들이 순서대로 달리고 있을 때, 해설진이 "soe"선수를 불렀다면 2등인 "soe" 선수가 1등인 "mumu" 선수를 추월했다는 것입니다. 즉 "soe" 선수가 1등, "mumu" 선수가 2등으로 바뀝니다. 선수들의 이름이 1등부터 현재 등수 순서대로 담긴 문자열 배열 players와 해설진이 부른 이름을 담은 문자열 배열 callings가 매개변수로 주어질 때, 경주가 끝났을 때 선수들의 이름을 1등부터 등수 순서대로 배열에 담아 return 하는 solution 함수를 완성해주세요. 제..

[Spring DB2] 데이터 접근 기술 - 활용 방안

스프링 데이터 JPA 예제와 트레이드 오프 스프링 데이터 JPA 예제 클래스 의존 관계 ItemSerive가 ItemRepository 인터페이스에 의존 ItemRepository를 JpaItemRepositoryV2가 구현 JpaItemRepositoryV2가 SpringDataJpaItemRepository에 의존 SpringDataJpaItemRepository 인터페이스는 JpaRepository 인터페이스를 상속 SpringDataJpaItem 프록시 리포지토리가 SpringDataJpaItemRepository를 구현 중간에서 JpaItemRepository가 어댑터 역할을 해준 덕분에 itemService가 사용하는 itemRepository 인터페이스를 그대로 사용할 수 있고, 클라이언트인..

Spring 2024.03.26

[백준] G4. boj1967 트리의 지름 / 분류 : 트리, dfs 😑

https://www.acmicpc.net/problem/1967 1967번: 트리의 지름 파일의 첫 번째 줄은 노드의 개수 n(1 ≤ n ≤ 10,000)이다. 둘째 줄부터 n-1개의 줄에 각 간선에 대한 정보가 들어온다. 간선에 대한 정보는 세 개의 정수로 이루어져 있다. 첫 번째 정수는 간선이 연 www.acmicpc.net 트리의 지름 구하기 트리의 아무 노드에서 시작해서 dfs를 수행하여 가장 길이가 먼 노드를 구한다. 그럼 그 노드가 리프 노드가 된다. 앞에서 찾은 리프 노드에서 동일한 dfs를 수행하여 가장 긴 길이가 지름이 된다. import sys sys.setrecursionlimit(10 ** 8) input = sys.stdin.readline N = int(input()) grap..

[Spring DB2] 데이터 접근 기술 - Querydsl

DSL 도메인 + 특화 + 언어 특정한 도메인에 초점을 맞춘 제한적인 표현력을 가진 컴퓨터 프로그래밍 언어 특징 : 단순, 간결, 유창 QueryDSL 쿼리 + 도메인 + 특화 + 언어 쿼리에 특화된 프로그래밍 언어 단순, 간결, 유창 다양한 저장소 쿼리 기능 통합 자바 코드로 쿼리를 작성할 수 있다. JPA, MongoDB, SQL 같은 기술들을 위해 type-safe SQL을 만드는 프레임 워크 SpringData프로젝트의 약점은 조회. Querydsl로 복잡한 조회 기능을 보완 가능(복잡한 쿼리, 동적 쿼리) 컴파일 시점에 sql 오류를 잡아준다. Querydsl은 스프링 예외 추상화를 해주지 않는다. 그래서 JPA에서처럼 @Repository에서 스프링 예외 추상화를 처리해준다. Querydsl ..

Spring 2024.03.25

[백준] G5. boj2293 동전1 / 분류 : DP 🙁

https://www.acmicpc.net/problem/2293 2293번: 동전 1 첫째 줄에 n, k가 주어진다. (1 ≤ n ≤ 100, 1 ≤ k ≤ 10,000) 다음 n개의 줄에는 각각의 동전의 가치가 주어진다. 동전의 가치는 100,000보다 작거나 같은 자연수이다. www.acmicpc.net import sys input = sys.stdin.readline n, k = map(int, input().split()) coins = [] for i in range(n): coins.append(int(input())) dp = [0] * (k+1) dp[0] = 1 for coin in coins: for i in range(coin, k+1): dp[i] += dp[i - coin] p..

[백준] G5. boj14502 연구실 / 분류: bfs 🙁

https://www.acmicpc.net/problem/14502 14502번: 연구소 인체에 치명적인 바이러스를 연구하던 연구소에서 바이러스가 유출되었다. 다행히 바이러스는 아직 퍼지지 않았고, 바이러스의 확산을 막기 위해서 연구소에 벽을 세우려고 한다. 연구소는 크 www.acmicpc.net import sys import copy from itertools import combinations from collections import deque N, M = map(int, sys.stdin.readline().split()) #전체 graph, 0의 인덱스들, 바이러스가 있는 인덱스들 graph = [] zeros = [] viruses = [] for i in range(N): row = li..

[백준] S3.Boj9375번 패션왕 신해빈 / 분류: 해시

https://www.acmicpc.net/problem/9375 9375번: 패션왕 신해빈 첫 번째 테스트 케이스는 headgear에 해당하는 의상이 hat, turban이며 eyewear에 해당하는 의상이 sunglasses이므로 (hat), (turban), (sunglasses), (hat,sunglasses), (turban,sunglasses)로 총 5가지 이다. www.acmicpc.net import sys input = sys.stdin.readline T = int(input()) for i in range(T): clothes = {} N = int(input()) for j in range(N): name, category = input().split() if category not..

[Spring DB2] 데이터 접근 기술 - 스프링 데이터 JPA

스프링 데이터 JPA 주요 기능 공통 인터페이스 기능 JPARepository 인터페이스를 통해서 기본적인 CRUD 기능을 제공 공통화 가능한 기능이 거의 모두 포함되어 있음. 쿼리 메서드 기능 인터페이스에 메서드만 적어두면, 메서드 이름을 분석해서 필요한 JPQL을 만들고 실행해준다. JPQL은 JPA가 SQL로 번역해서 실행한다. 규칙 조회 : find..By, read..By, query..By, get..By ex) findByUsernameAndAgeGreaterThan(String username, int age) COUNT: count..By / 반환 타입은 long EXIST: exists..By / 반환 타입은 boolean 삭제 : delete.. By, remove..By / 반환 타..

Spring 2024.03.21

[백준] S2. boj2512 예산 / 분류 : 이분 탐색

https://www.acmicpc.net/problem/2512 2512번: 예산 첫째 줄에는 지방의 수를 의미하는 정수 N이 주어진다. N은 3 이상 10,000 이하이다. 다음 줄에는 각 지방의 예산요청을 표현하는 N개의 정수가 빈칸을 사이에 두고 주어진다. 이 값들은 모두 1 이상 www.acmicpc.net import sys input = sys.stdin.readline N = int(input()) #지방의 개수 li = list(map(int, input().split())) # 각 지방의 예산 요청 배열 M = int(input()) #총 예산 #예산 요청의 합이 총 예산보다 작으면 가장 큰 값 출력 if sum(li)

[Spring DB2] 데이터 접근 기술 - JPA

JPA는 ORM 데이터 접근 기술을 제공한다. JdbcTemplate이나 MyBatis같은 SQL 매퍼 기술은 개발자가 SQL을 직접 작성해야 하지만, JPA는 SQL도 JPA가 대신 작성해주고, 처리해준다. ORM 개념 SQL 중심적인 개발의 문제 무한 반복하는 select, update, insert, ... 코드를 계속해서 작성해야한다. 만약 필드가 추가되면 모든 쿼리들을 수정해야하는 번거로움이 있다. 객체를 관계형 데이터베이스에 저장하려면 객체를 SQL로 변환해서 데이터베이스에 조회하거나 넣어야 한다. 그런데 객체를 SQL로 변환하는 것은 개발자가 하는 것이다. 또, 객체에는 상속이 있지만, 관계형 데이터베이스에는 상속이 없다. 그래서 조회할 때는 두 테이블을 조인해야하고, 넣을 때는 데이터를 분..

Spring 2024.03.19
728x90