11. Container With Most Water
·
Algorithm/LeetCode
문제각 위치의 높이를 나타내는 정수 배열이 주어진다. 두 위치 간 높이에 따른 최대 부피를 계산하는 문제이다.Constraints:n == height.length2 0 링크https://leetcode.com/problems/container-with-most-water/Solution 1class Solution { public int maxArea(int[] height) { int max = 0; int n = height.length; for(int i=0;i문제를 읽고 직관적으로 생각한 풀이 방식이다.시간 복잡도: O(n^2)타임 초과 발생!Solution 2class Solution { public int maxArea(int[] height..
추상 클래스
·
Programming/Java
목차1. 추상 클래스 특징2. 인터페이스와 차이점3. 추상 클래스의 목적 "추상 클래스는 공통 기능을 제공하면서 하위 클래스가 필수적으로 구현해야 할 규격을 정의하여 일관성과 다형성을 지원하는 클래스 설계 도구이다." 1. 추상 클래스 특징- 일부 메서드를 구현하지 않고 서브 클래스에서 구체화하도록 강제하는 클래스- 인스턴스화 할 수 없다- 세부 구현은 자식 클래스가 맡는다.public abstract class Animal { public String kind; public void breath(){ System.out.println("숨 쉰다."); } //추상메서드 public abstract void sound();//구체적인 구현부는 없음!} 2. 인터페이..
15. 3Sum
·
Algorithm/LeetCode
문제 링크https://leetcode.com/problems/3sum/description/ 해결 1.class Solution { public List> threeSum(int[] nums) { int n= nums.length; List> answer=new ArrayList(); //중복을 방지하고자 임시로 사용할 Set을 선언하였다. Set> temp=new HashSet(); // 배열을 먼저 정렬하여 중복 및 순서 문제를 해결 Arrays.sort(nums); for(int i=0;i set = new HashSet(); for(int j=i+1;j triplet = Arrays..
MapStruct & Lombok 적용
·
Programming/Spring
MapStruct - Dto를 Entity로 매핑(반대도 가능)해주는 라이브러리다. - 리플렉션이 아닌 직접 메소드를 호출하는 방식으로 동작하여 속도가 빠르다. Set up ... 11 1.3.1.Final 1.18.12 ... org.mapstruct mapstruct ${org.mapstruct.version} org.projectlombok lombok ${org.projectlombok.version} provided ... org.springframework.boot spring-boot-maven-plugin org.apache.maven.plugins maven-compiler-plugin 3.5.1 11 11 org.mapstruct mapstruct-processor ${org.mapst..
@JsonProperty, @JsonNaming
·
Programming/Spring
REST API 방식으로 서버와 클라이언트가 데이터를 통신할 때 JSON 형식을 주로 사용한다. 서버는 카멜 방식(Camel Case), 클라이언트는 스네이크 방식(Snake Case)을 사용한다. 카멜 방식 - 첫 글자는 소문자, 중간 글자들은 대문자 표기법 ex)phoneNumber 스네이크 방식 - 언더바가 포함된 표현 방식 ex) phone_number 서버와 클라이언트의 JSON 표현의 방식의 차이로 데이터의 key가 달라지는 상황이 발생한다. 이러한 문제를 @JsonProperty, @JsonNaming을 사용하여 해결할 수 있다. 예제 UserRequest package org.juhyun.kotlinspringboot.model data class UserRequest ( var name:..
변경 감지와 병합
·
Programming/JPA
준영속 엔티티란? - 영속성 컨텍스트가 더는 관리하지 않는 엔티티를 말한다. - DB에 한번 저장 되어서 식별자가 존재한다. - 임의로 만들어낸 엔티티도 기존 식별자(id)를 가지고 있으면 준영속 엔티티로 볼 수 있다. 준영속 엔티티를 수정하는 방법 2가지 - 변경 감지(Dirty Checking) 기능 사용 - 병합(merge) 사용 변경 감지 기능 사용 @Transactional void update(Item itemParam) { //itemParam: 파리미터로 넘어온 준영속 상태의 엔티티 Item findItem = em.find(Item.class, itemParam.getId()); //같은 엔티티를 조회한다. findItem.setPrice(itemParam.getPrice()); //데이..
IoC Container의 기능, 장점 설명해주세요.
·
Interview
IoC란? - 제어권 역전 - 생성, 생명주기 관리까지 모든 객체에 대한 제어권이 바뀌었음을 의미 IoC Container - Spring Framework도 객체에 대한 생성 및 생명주기를 관리할 수 있는 기능 - IoC Container는 객체의 생성을 책임지고, 의존성을 관리한다. - POJO의 생성, 초기화, 서비스, 소멸에 대한 권한을 가진다. - 개발자는 직접 POJO를 생성할 수 있지만 컨테이너에 맡긴다. - 장점: 개발자는 객체 관리를 컨테이너 맡기고, 로직에만 집중할 수 있다. IoC 종류 DL(Dependency Lookup) 저장소에 저장되어 있는 Bean에 접근하기 위해 컨테이너가 제공하는 API를 이용하여 Lookup 하는 것 DI(Dependency Injection): 의존성 ..
Problem2
·
Algorithm/Socar
문제설명 - int[] numbers가 있다. - 각 요소들은 인접한 요소와 값의 차가 k이하가 되어야 한다. - k 이하가 안되면 swap을 해서라도 k이하가 되게 만들어야 한다. - 최소 swap 횟수를 구한다. - numbers의 길이는 최대 8이다. 입출력 정보 input - int k - int[] numbers output int answer(최소 swap 횟수) Code Solution.class package jason.socar.problem2; import java.util.*; public class Solution { static Set answerSet = new HashSet(); static int sum=0; public int solution(int k, int[] numb..
Problem1
·
Algorithm/Socar
문제 설명 - 각 섬(=노드) 사이를 자전거 타고 활보한다. k 시간에 정차 할 수 있는 섬들은? - 간선의 값은 이동거리를 의미한다. - 섬은 중복해서 이동할 수 있다. - 시작 노드는 0 이다. 입출력 정보 Input - int n(노드의 수): 0~n-1까지 노드가 존재 - int k(도착시간) - int[][] roads(간선 정보) int[][] roads={{5, 4, 6}, {5, 2, 5}, {0, 4, 2}, {2, 3, 3}, {1, 2, 7}, {0, 1, 3}}; //roads[0]= {5,4,6}; //노드 5와 노드 4 사이 간선의 길이는 6 Output - int[] answer(k 시간에 도착할 수 있는 노드들의 집합) Code Solution2.class package ja..
11053. 가장 긴 증가하는 부분 수열(Java)
·
Algorithm/BaekJoon
문제 링크 https://www.acmicpc.net/problem/11053 11053번: 가장 긴 증가하는 부분 수열 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이 www.acmicpc.net 문제 풀이 DP 문제입니다. n의 범위를 고려해서 이중 for문을 사용했습니다. 코드 package jason.baekjoon.problem11053; import java.util.Scanner; public class Main { public static void main(String[] args) { S..