전체 글 50

[LeetCode] TwoSum

문제 설명:정수로 이루어진 배열 nums와 하나의 정수 target이 주어졌을 때,배열 안의 두 숫자를 더해서 target이 되는 두 숫자의 인덱스를 찾아서 반환하세요.각 입력에는 딱 하나의 정답만 존재한다고 가정할 수 있습니다.같은 요소를 두 번 사용할 수는 없습니다.정답은 어떤 순서로든 반환해도 됩니다. 시간복잡도: O(n²) (가장 비효율적이다) public static int[] twoSum(int[] nums, int target) { int[] result = new int[2]; for (int i = 0; i 주어진 nums의 정렬이 안된경우 HashMap 사용 시간복잡도: O(n) public static int[] twoSum(int[] nums,..

id 필드에 Long 타입을 사용하는 이유

@Entitypublic class Book { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) // auto increment private Long id = null; @Getter @Column(nullable = false) private String name;}Long 타입 vs long 타입" data-depth="1" data-heading="">Long 타입 vs long 타입Long (Wrapper 클래스):Long은 long 기본형 타입의 래퍼(Wrapper) 클래스입다.객체이므로 null 값을 가질 수 있다 .Long 객체는 힙(Heap) 메모리에 저장된다.컬렉션(Collections)이나 제네릭(Ge..

General/Java☕️ 2025.04.16

JDK와 JRE의 차이점

JDK (Java Development Kit)JDK는 자바 애플리케이션을 개발하기 위한 도구 모음으로, 컴파일러(javac), 디버거, JRE 등을 포함하고있다.JDK는 JRE를 포함하고 있어 자바 프로그램을 개발하고 실행하는 데 필요한 모든 것을 갖추고 있다. ○ 역할 : 자바 애플리케이션 개발 ○ 포함 요소 : JRE + 개발도구 (javac, javadoc, jdb 등) JRE (Java Runtime Environment)JRE는 자바 프로그램을 실행하기 위한 환경을 제공하며, JVM, 클래스 라이브러리, 런타임 라이브러리 등을 포함.JRE만 설치하면 자바 프로그램을 실행할 수 있지만, 개발은 할수없다. ○ 역할 : 자바 애플리케이션 실행 ○ 포함 요소 : JVM + 자바 클래스 라이브..

General/Java☕️ 2025.04.15

@Transactional 과 Rollback규칙 (feat. Checked Exception , Unchecked Exception)

@Transactional 어노테이션과 롤백 규칙 Spring의 @Transactional 어노테이션은 AOP(Aspect-Oriented Programming)를 사용하여 트랜잭션을 관리한다. @Transactional이 적용된 메서드에서 예외가 발생하면, Spring은 해당 예외가 롤백을 유발해야 하는지 확인하는데 기본적으로 Spring은 Unchecked Exception (RuntimeException 또는 Error)이 발생했을 때만 롤백한다. Checked Exception에 대해서는 롤백을 수행하지 않는데, 이는 Checked Exception이 비즈니스 로직에서 복구 가능한 예외로 간주되기 때문. 즉, 개발자가 Checked Exception을 처리하기 위한 별도의 로직을 구현했을 것으로..

[프로그래머스] [PCCE 기출문제] 2번 / 출력 (java)

문제 풀이 public static void main(String[] args) { Scanner sc = new Scanner(System.in); int a = sc.nextInt(); int c = sc.nextInt(); //풀이 1 int b_square = (int) (Math.pow(c, 2) - Math.pow(a, 2)); //풀이 2 //int b_square = (c - a) * (c + a); System.out.println(b_square); } 해설Math.pow() 메소드는 입력값과 출력값은 모두 double형이며 Math.pow(대상숫자,지수)를 넣어주면 된다

[Spring]@RequiredArgsConstructor

@RequiredArgsConstructor란? Lombok 라이브러리에서 제공하는 기능으로, 클래스의 생성자를 자동으로 생성해주는 어노테이션이다. 일반적으로 Spring에서는 @Autowired를 이용하여 의존성을 주입할 때, 해당 클래스의 생성자를 이용한다.이때 @RequiredArgsConstructor를 사용하면 Lombok이 컴파일 시간에 해당 클래스의 생성자를 자동으로 생성해준다. 따라서, @Autowired와 @RequiredArgsConstructor는 모두 Spring에서 의존성 주입을 처리하는데 사용되지만, @RequiredArgsConstructor를 사용하면 코드가 더 간결해지고, 더 안전하게 의존성을 주입이 가능하다.  예시@Controller@RequestMapping("/bas..

[Spring] @Autowired란?

@Autowired란?Spring에서 @Autowired는 의존성 주입(Dependency Injection)을 간편하게 수행할 수 있도록 도와주는 어노테이션이다. 의존성 주입은 객체 지향 프로그래밍에 있어서 중요한 개념으로, 클래스간의 의존 관계를 외부에서 설정하고, 이를 통해 느슨한 결합(Loose Coupling)을 유지하는 것을 목적으로 한다. (즉, 코드의 유연성과 재사용성을 높일 수 있다.) 사용 예시@Controller@RequestMapping("/basic/items")public class BasicItemController { private ItemRepository itemRepository; @Autowired //생성자가 1개일 경우 @Autowired 생략 가능 ..

[백준] 10926번 : ??! 풀이 (java)

문제 접근 과정 처음에는 joonas란 아이디가 이미 존재 하였을때 놀람을 표시하라는 것으로 문제를 잘못이해하였다. 알고 보니 그냥 ID에 대해 놀람을 표시하면 되는 문제였다. 오답 public class Main { public static void main(String[] args) { String originUserId = "joonas"; String newUserId = "joonas"; if(newUserId.equals(originUserId)){ System.out.println(newUserId+"??!"); } } } 문제 풀이 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamRead..

Algorithm🧠 2024.04.22