자바 20

JPA

JPA란?JPA는 Java Persistence API의 약자로, 자바 진영의 ORM(Object Relational Mapping) 기술 표준입니다. 간단히 말해, 애플리케이션의 객체와 데이터베이스 사이에서 매핑 작업을 담당하여 개발자가 보다 객체지향적으로 데이터를 다룰 수 있도록 돕는 기술이다.ORM이란?Object Relational Mapping은 객체와 관계형 데이터베이스를 매핑하며 패러다임 불일치를 해결해주는 기술패러다임 불일치란?객체지향 프로그래밍은 상속, 다형성, 캡슐화 같은 개념에 중점을 두지만, 관계형 데이터베이스는 데이터 중심적이며 이러한 개념이 존재하지 않는다. 객체지향적인 부분과 데이터 중심에서의 차이를 '패러다임 불일치'라고 한다.  JPA는 자바 진영의 ORM API 표준 명세..

개발/JPA 2024.11.22

[백준] 1374 강의실

https://www.acmicpc.net/problem/1374 풀이구하고자 하는 것 : 필요한 최소 강의실 개수 해당 값을 구하기 위해 우선 시작 순서가 빠른 순서로 정렬 만약 시작 시간이 같다면 끝나는 시간이 더 빠른 걸로 정렬 no시작 시간종료 시간3214138562086272713412186152172025 강의실이 필요한 경우는이전 강의 종료 시간 > 다음 강의 시작 시간해당 경우에 강의실이 추가로 필요하다. 위 예제로 한번 천천히 보자 3번 강의(2 - 14)는 1번 강의실을 사용한다.1번 강의(3 - 8)는 1번 강의실이 이미 사용중이므로 2번 강의실에서 진행5번 강의(6 - 20) 또한 1,2번 강의실이 모두 강의 진행 중이므로 3번 강의실에서 진행 이런식으로 가다가 4번 강의(12 - ..

개발/PS 2024.11.05

[백준] 1038 감소하는 수

https://www.acmicpc.net/problem/1038 풀이찾고자 하는 값은 N 번째 감소하는 수를 찾아내면 된다. N번째 감소하는 수를 찾는 법은 굉장히 간단하다. 1~9까지 각 숫자로 시작하는 경우에서 나올 수 있는 값들을 찾으면 된다. 예시를 들어보면 가장 큰 자릿수가 2라고 했을 때  2, 20, 21, 210 이런 값들을 구해 나가면 된다.  해당 값들은 재귀를 통해서 찾아낼 수 있다.  % 10을 하는 이유는 해당 값의 1의 자리 수 다음으로 올 수 있는 값의 범위를 알아야 하기 때문이다. 예시로 num = 543일 경우 1의 자리 3 다음으로 올 수 있는 경우는 0,1,2재귀(int num) { for(int i = 0; i  전체 코드import java.io.BufferedRe..

개발/PS 2024.11.02

[백준] 6236 용돈관리

https://www.acmicpc.net/problem/6236 6236번: 용돈 관리현우는 용돈을 효율적으로 활용하기 위해 계획을 짜기로 하였다. 현우는 앞으로 N일 동안 자신이 사용할 금액을 계산하였고, 돈을 펑펑 쓰지 않기 위해 정확히 M번만 통장에서 돈을 빼서 쓰기로www.acmicpc.net문제현우는 용돈을 효율적으로 활용하기 위해 계획을 짜기로 하였다. 현우는 앞으로 N일 동안 자신이 사용할 금액을 계산하였고, 돈을 펑펑 쓰지 않기 위해 정확히 M번만 통장에서 돈을 빼서 쓰기로 하였다. 현우는 통장에서 K원을 인출하며, 통장에서 뺀 돈으로 하루를 보낼 수 있으면 그대로 사용하고, 모자라게 되면 남은 금액은 통장에 집어넣고 다시 K원을 인출한다. 다만 현우는 M이라는 숫자를 좋아하기 때문에, ..

개발/PS 2024.02.16

[백준] 2751 병합정렬

https://www.acmicpc.net/problem/2751 2751번: 수 정렬하기 2첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다.www.acmicpc.net풀이해당 문제는 단순 정렬 문제이다. 하지만 정렬에는 종류가 아주 많다는거^^... 병합정렬로 풀이를 제출하면서 이전에 제출 기록이 있길래 코드를 살짝 봤더니...핰ㅋㅋㅋㅋㅋㅋㅋ그냥 ArrayList로 입력받은 값들을 넣은 다음 Collection.sort로 아주 간단하게 해결해버렸다...ㅎㅎ 편함을 추구한 과거의 나 반성하자 아무튼 병합정렬은 무엇이냐 하면 수열이 있을 때 중간 값을 기준으..

개발/PS 2023.10.25

[프로그래머스]대충 만든 자판

https://school.programmers.co.kr/learn/courses/30/lessons/160586 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 public int[] solution(String[] keymap, String[] targets) { int[] answer = new int[targets.length]; HashMap map = new HashMap(); for (String s : keymap) { for (int j = 0; j < s.length(); j++) { int key = map.containsKey(..

개발/PS 2023.08.16

[JAVA]클래스, 객체, 인스턴스

클래스, 객체, 인스턴스 객체 다른 글들을 보면 프로그래밍에서 객체라는 것은 소프트웨어 세계에서 구현될 대상, 클래스에 정의된 그대로 생성된 실체라고들 한다사실 이 부분이 많이 이해가 안갔다 누군가는 실세계에 존재하는 것이 객체라고도 하며 누군가는 소프트웨어에서 생성된 실체 라고 하는데 뭐가 맞고 틀린지는 크게 중요하지 않은 것 같다.  우선 우리는 개발자다. 개발자 관점에서라면 소프트웨어를 구현하는 과정에서 어떤식으로 바라볼지가 중요하다. 이런 의미에서 내가 생각한 객체라는 것은 실세계의 구현할 객체를 소프트웨어 세계에 실체화 한 것을 객체라고 생각한다. 즉 다시 말해 우리가 만들고자 했던 실세계의 어떠한 객체를 프로그램에 실제로 생성된 것을 객체라고 본다는 의미이다.  이러한 맥락에서 객체가 가지는 ..

개발/java 2023.07.20

[JAVA]Call By Reference, Call By Value

프로그래밍에서 메소드 매개변수 호출 방식에는 call by reference와 call by value 두가지 방식이 있다. call by reference - 직역을 하자면 참조에 의한 호출이다. call by value - 값에 의한 호출.저렇게 적어놓으면 뭔가 더 없나 하겠지만 정말 저게 전부다. 우선 자바에서 저 두개를 이해하기 전에 JVM을 알고 있다면 훠어얼씬 이해하기 쉽다. 만약 자세하게 모른다면 아래 두개만 우선 기억하자자바에서는 다른 메소드를 호출하게 될 경우 스택이라는 영역 내에 프레임이라는 메소드의 상태 정보를 가지고 있는 하나의 단위가 들어간다. 자바에서 원시 타입의 변수는 스택 프레임 안에서 값과 함께 생성된다. 참조 타입의 변수는 실제 객체의 값은 Heap 영역에 생성되고 해당 ..

개발/java 2023.07.14

[JAVA]JVM

JVM과 자바 어플리케이션 JVM은 자바 프로그램을 실행하기 위한 소프트웨어이다. 다시 말해 결국 JVM도 일종의 프로그램이다. 그렇기 때문에 자바 어플리케이션을 실행 시키면 우선 JVM이 OS로부터 메모리를 할당을 받는다. 이후 .java 파일의 소스 코드를 컴파일 하여 나오는 바이트 코드를 해석하고 실행하는 역할을 한다. public class Main { public static void main(String[] args) { Audio audio = new Audio(); } } class Audio { final static String color = "WHITE"; int volume; void volumeUp() { this.volume += 1; } void volumeDown() { th..

개발/java 2023.07.06