[Programmers] x만큼 간격이 있는 n개의 숫자 (Stream 사용) * 내 풀이 class Solution { public long[] solution(int x, int n) { long[] answer = new long[n]; answer[0] = x; for(int i = 1; i x+i).limit(n).toArray(); } } * Stream.iterate(초기값, 어떻게 변경될지).limit() i를.. 코딩테스트/Programmers 2023.07.30
[Programmers] 평균 구하기 (Stream) 정수 배열 arr의 평균 구하기 import java.util.*; class Solution { public double solution(int[] arr) { return Arrays.stream(arr).average().getAsDouble(); } } 코딩테스트/Programmers 2023.07.30
[Programmers] 경기도에 위치한 식품창고 목록 출력 (SQL) FOOD_WAREHOUSE 테이블에서 경기도에 위치한 창고의 ID, 이름, 주소, 냉동시설 여부를 조회하는 SQL문을 작성해주세요. 이때 냉동시설 여부가 NULL인 경우, 'N'으로 출력시켜 주시고 결과는 창고 ID를 기준으로 오름차순 정렬해주세요. SELECT warehouse_id, warehouse_name, address, nvl(freezer_yn, 'N') as freezer_yn from food_warehouse where address like '경기도%' * like * nvl() 코딩테스트/Programmers 2023.07.30
[Programmers] 그룹별 조건에 맞는 목록 출력 (SQL) select m.member_name as member_name, r.review_text as review_text, to_char(r.review_date, 'YYYY-MM-DD') review_date from (select member_id, rank() over(order by count(review_id) desc) rank from rest_review group by member_id) c, member_profile m, rest_review r where c.rank = 1 and c.member_id = m.member_id and m.member_id = r.member_id order by review_date asc, review_text asc * rank 함수 * to_cha.. 코딩테스트/Programmers 2023.07.30
[Programmers] 상위 n개 레코드 (SQL) 동물 보호소에 가장 먼저 들어온 동물의 이름 조회 SELECT NAME FROM (SELECT * FROM ANIMAL_INS ORDER BY DATETIME) WHERE ROWNUM = 1 코딩테스트 2023.07.29
[인프런/스프링DB 2편] 6. 스프링 트랜잭션 전파 (2) 1. 스프링 트랜잭션 전파 활용 비즈니스 요구사항 - 회원을 등록하고 조회한다. - 회원에 대한 변경 이력을 추적할 수 있도록 데이터 변경(등록) 이력을 DB LOG 테이블에 남긴다. 1-1. 객체 세팅 * Member package hello.springtx.propagation; import jakarta.persistence.Entity; import jakarta.persistence.GeneratedValue; import jakarta.persistence.Id; import lombok.Getter; import lombok.Setter; @Entity @Getter @Setter public class Member { @Id @GeneratedValue private Long id; pri.. Spring 2023.07.28
[Programmers] 구슬을 나누는 경우의 수 (팩토리얼 / 재귀함수X) class Solution { public int solution(int balls, int share) { return factorial(balls) / (factorial(balls - share) * factorial(share)); } private int factorial(int num) { if (num == 1) return 1; return num * factorial(num - 1); } } 팩토리얼 -> 재귀함수로 푸는 문제라 생각하고 아 문제 잘풀었다 하고 제출했는데 와다다 실패 -> 재귀 범위 넘어감 40 몇점 class Solution { public long solution(int balls, int share) { return factorial(balls) / (factoria.. 코딩테스트 2023.07.27
[인프런/스프링DB 2편] 6. 스프링 트랜잭션 전파 (1) 1. 트랜잭션 기본 * 트랜잭션 관련 로그 logging.level.org.springframework.transaction.interceptor=TRACE logging.level.org.springframework.jdbc.datasource.DataSourceTransactionManager=DEBUG #JPA log logging.level.org.springframework.orm.jpa.JpaTransactionManager=DEBUG logging.level.org.hibernate.resource.transaction=DEBUG #JPA SQL logging.level.org.hibernate.SQL=DEBUG 1) 기본 커밋, 롤백 package hello.springtx.propagat.. Spring 2023.07.25
[인프런/스프링 DB 2편] 5. 스프링 트랜잭션 📌 @Transactional 사용 -> 트랜잭션 프록시 적용 -> 트랜잭션 AOP 처리 1. 트랜잭션 적용 확인 1) build.gradle plugins { id 'java' id 'org.springframework.boot' version '3.1.1' id 'io.spring.dependency-management' version '1.1.0' } group = 'hello' version = '0.0.1-SNAPSHOT' java { sourceCompatibility = '17' } configurations { compileOnly { extendsFrom annotationProcessor } } repositories { mavenCentral() } dependencies { impl.. Spring 2023.07.20
[인프런/스프링 DB 2편] 4. 데이터 접근 기술 (6) SpringData JPA + Query DSL 1. 트레이드 오프 * 스프링 데이터 JPA를 사용할 때의 두가지 방법 1) 구조의 안정성 (DI, OCP를 지킴 -> 어댑터 도입) * Service Repository 인터페이스 구현체의 메소드 호출 * Repository 인터페이스 구현체 SpringDataJpa 의 메소드 호출 Service -> Repository 어댑터를 거쳐서 -> 스프링 데이터 JPA 의 메소드 사용 장점 : Service에서 의존하는 Repository 인터페이스를 유지, Service의 코드도 유지하면서 Repository의 구현체를 변경할 수 있음 (DI, OCP원칙) 단점 : 중간 어댑터 작성, 실제 코드까지 함께 유지보수해야 함 2) 구조의 단순성 + 개발의 편리성 (service에서 직접 호출) Service에서.. Spring 2023.07.18