자바 15

[Java] 정적 멤버와 Static

📌 Static 의 정의 정적(Static)은 '고정된'을 의미합니다. 정적 멤버는 클래스에 고정된 멤버로서 객체를 생성하지 않고 사용할 수 있는 필드 와 메서드를 말합니다. 📌 Static 의 특징 이러한 static은 다음과 같은 특징이 있습니다. 메모리에 고정적으로 할당됩니다. 객체마다 가지고 있을 필요가 없는 공용 데이터라면 정적 필드로 선언하는 것이 좋습니다. 객체 생성없이 사용이 가능합니다. 클래스 로더가 클래스(바이트코드)를 로딩해서 메소드 메모리 영역에 적재할 때 클래스별로 관리됩니다. 클래스의 로딩이 끝나면 바로 사용할 수 있습니다. static 메서드 내에서는 인스턴스 변수를 사용할 수 없습니다. 객체 자신의 참조인 this 키워드 사용이 불가합니다. 프로그램이 종료될 때 해제됩니다. ..

Java 2023.11.09

[Lv2] 뒤에 있는 큰 수 찾기

📌 문제 뒤에 있는 큰 수 찾기 (스택) https://school.programmers.co.kr/learn/courses/30/lessons/154539 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 📌 풀이 이 문제는 우선 주어진 제한사항에 따라 이중 for 문이 아닌 다른 방법을 사용해서 정답을 탐색해야 함을 인지해야 합니다 각 자리 수 크기를 비교하기 위해 스택을 사용해야 시간 초과를 방지할 수 있습니다. 자세한 풀이는 코드의 주석으로 대체합니다. 📌 코드 import java.util.*; class Solution { public int[] ..

[1940번] 주몽의 명령

📌 문제 https://www.acmicpc.net/problem/1940 1940번: 주몽 첫째 줄에는 재료의 개수 N(1 ≤ N ≤ 15,000)이 주어진다. 그리고 두 번째 줄에는 갑옷을 만드는데 필요한 수 M(1 ≤ M ≤ 10,000,000) 주어진다. 그리고 마지막으로 셋째 줄에는 N개의 재료들이 가진 고 www.acmicpc.net 📌 풀이 해당 문제는 이중 포인터를 사용하면 해결할 수 있습니다. 문제의 가장 첫 풀이 시작은 주어진 N 개의 숫자 개수가 15,000 개 이므로 정렬 후 문제를 풀 수 있다 입니다. 정렬이 가능하기에 이중 포인터로 M(두 숫자를 합해서 만들어야 하는 숫자)을 구할 수 있습니다. 📌 코드 import java.io.*; import java.util.*; clas..

Algorithms/백준 2023.09.21

@Transient 어노테이션에 대한 이해

📌 들어가며 이번 포스팅에서는 @Transient 어노테이션이 무엇인지, 그리고 그 쓰임에 대하여 정리하고자 합니다. 새롭게 합류한 도메인팀의 스프링부트 로직에서 @Transient 가 다수 발견되어 정리하게 되었습니다. 📌 @Transient 란 @Transient는 엔티티 객체의 데이터와 테이블의 컬럼(column)과 매핑하고 있는 관계를 제외하기 위해 사용합니다. 주로 보안정보나 굳이 테이블에 저장할 필요는 없지만 도메인 로직 또는 비즈니스 로직상 계산을 위해 필요한 경우 해당 어노테이션을 활용합니다. 더 정확히 표현하면 JPA의 가장 큰 특징 중 하나인 영속성 컨텍스트 대상에서 제외시키기 위하여 사용됩니다. 또한 JPA 의 컬럼 매핑 레퍼런스 어노테이션은 Field, Property 방식을 지원하..

BackEnd/JPA 2023.04.20

[Java] 접근 제한자란 무엇인가

📌 들어가며... Java 코딩을 하다보면 public, private, protected 와 같은 접근 제한자들을 마주치게 됩니다. 그런데 이러한 접근제한자의 정의나 기능을 명확히 알지 못하고 단순히 '다른 메서드들이 private으로 되어 있어서.. public 으로 되어 있어서.. 나도 그대로 public 으로 선언 해야지' 라는 가벼운 마음으로 사용할 때가 있는 것 같아 명확히 정의와 그 기능을 알아보고자 합니다. 📌 접근 제한자란? 접근 제한자란 말 그대로 클래스 및 인터페이스 그리고 이들이 갖고 있는 멤버들에 대한 접근을 제한하는 것을 말합니다. 클래스와 인터페이스를 다른 패키지에서 사용 못하도록 막기 객체 생성을 막기 위해 생성자를 호출하지 못하게 하기 필드나 메소드를 사용하지 못하도록 막기..

Java 2023.03.08

[프로그래머스][Lv1][Java] 푸드파이트 대회

📌 문제 푸드파이트 대회 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 📌 풀이 레벨 1의 구현 문제라서 그런지 풀이라고 할 만한 것이 딱히 없고 문제에 나온 조건대로 구현하면 쉽게 풀 수 있는 문제였습니다. 다만 바로 떠오르지 않은 문자열 뒤집는 메서드에 대한 공부가 필요할 것 같습니다. 📌 코드 import java.util.*; import java.util.Collections; class Solution { public String solution(int[] food) { String answer = ""; //0, 1, 2, 3 for(int ..

[프로그래머스][Lv2][Java] 폰켓몬

📌 문제 폰켓몬 - Lv2 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 📌 풀이 배열의 크기를 구해 고를 수 있는 폰켓몬의 숫자를 구합니다. HashSet을 사용하여 폰켓몬의 종류 번호가 담긴 1차원 배열의 중복값을 제거합니다. 여기서 폰켓몬을 뽑는 경우의 수와는 상관없이(굳이 따지자면 순열 - 순서가 있음) 중복값을 제거한 폰켓몬의 종류에 따라 정답이 정해집니다. ❗️어차피 정답으로 구하는 것은 폰켓몬의 종류❗️ 중복을 제거한 Set 의 크기가 고를 수 있는 폰켓몬의 수보다 크다면 '고를 수 있는 폰켓몬의 수'가 정답입니다. 만약 Set의 크기가 고를..

[프로그래머스][Lv2][Java] 멀리뛰기

📌 문제 멀리뛰기 - Lv2 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 📌 풀이 맨 처음에는 2를 나눠서 개수를 늘리는 방식을 생각했습니다... ➡️ 매우 큰 삽질... ❗️그러나 이 문제의 힌트는 멀리뛰기 할 수 있는 칸의 수가 1 또는 2 라는 곳에 있습니다. 멀리뛰기 할 수 있는 칸 수가 정해져 있으므로 총 점프한 거리는 점프하고자 하는 위치에서 1칸 전인 곳과 2칸 전인 곳에서 점프하는 경우로 생각할 수 있습니다.. 따라서 numList[i] = numList[i-1] + numList[i-2] 다음과 같은 점화식이 성립합니다. 📌 코드 cla..

[프로그래머스][Java] 삼총사

📌 문제 프로그래머스 Lv1 - 삼총사 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 📌 풀이 처음엔 순서가 없는 조합 문제라고 생각하여 파이썬에서와 같은 조합을 구해주는 라이브러리가 있나 생각했지만 이중 for문으로 구할 수 있는 문제였다. 이중 for문으로 세가지 숫자의 조합을 만들 수 있을 때까지 반복문을 돌린다 이 때 idx 를 선언하여 마지막 숫자는 고정 값으로 넣어준다. 📌 코드 class Solution { public int solution(int[] number) { int answer = 0; //3개의 숫자 그룹을 만들 수 있을때까지만..

[프로그래머스][Java] 기사단원의 무기

📌 문제 프로그래머스 - 기사단원의 무기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 📌 풀이 numbers 의 숫자들마다 약수의 개수를 구하고 구한 약수의 개수를 정답 리스트에 담는다. 이 때 limit 보다 약수의 개수가 크다면 power 의 공격력 수치로 그 값을 대체한다. 리스트에 담긴 값들의 합을 return 한다. 📌 코드 import java.util.List; import java.util.ArrayList; import java.util.IntSummaryStatistics; class Solution { public int soluti..