java 15

Java 에서 입력 값 받아오기

📌 들어가며 백준에서 코딩 테스트를 연습할 땐 한 가지 더 신경써야 하는 부분이 있습니다. 바로 입력값을 받아오는 것인데요..! 프로그래머스의 경우에는 입력값을 따로 받아오지 않아도 제출 하는 과정에서 입력값이 받아지게 되지만 백준의 경우에는 입력값을 받아오는 부분까지 코딩을 직접 해줘야 합니다. 기업마다 코딩테스트를 보는 방식이 달라서 요즘 대부분은 프로그래머스 방식이긴 하지만 이번 기회에 java 에서 입력값을 받아오는 방법을 정리해 보고자 합니다. 📌 Scanner 일반적으로 크지 않은 숫자를 받을 때 사용합니다. import java.util.Scanner; public class Main{ public static void main(String[] args){ Scanner sc = new Sc..

Algorithms/백준 2023.06.12

Java 에서의 예외처리

📌 들어가며 개발을 할 때 가장 중요한 요소 중 하나를 뽑으라면 '예외처리' 를 들 수 있을 것 같습니다. 모든 개발을 하는 과정에선 예외 Exception이 발생할 수 있고 해당 Exception을 얼마나 세분화 해서 처리하는지 또는 Exception이 발생했을 때 어떻게 대처할 것 인지를 정하는 것은 매우 중요한 요소 중 하나라고 할 수 있습니다. 오늘 포스팅에서는 Java에서 Exception을 어떻게 처리하는지에 대해 정리해 보도록 하겠습니다. 📌 예외 처리하기 예외 처리하기 위해서는 크게 두 가지 방법을 사용합니다. 하나는 try - catch 구문을 사용하는 것이고 다른 하나는 Exception 을 throw(예외 던지기) 하는 것입니다. try { ... } catch(예외1) { ... }..

Java 2023.06.03

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

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

BackEnd/JPA 2023.04.20

[프로그래머스][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..

자바의 자료구조 - 컬렉션 프레임워크(Collection Framework)

📌 들어가며 모든 프로그래밍 언어에는 데이터 값들을 다루기 위한 '자료구조'가 존재합니다. 컴퓨터 과학에서의 '자료구조'는 효율적인 접근 및 수정을 가능케 하는 자료의 조직, 관리, 저장을 의미한다. 더 정확히 말해, 자료 구조는 데이터 값의 모임, 또 데이터 간의 관계, 그리고 데이터에 적용할 수 있는 함수나 명령을 의미한다. 오늘 해당 포스팅에서는 자바 언어에서 자료구조에 대해 살펴보도록 하겠습니다. 📌 자바 컬렉션 프레임워크(Java Collection Framework) 자바에서는 배열(Array)를 사용해서 값을 저장하고 해당 값들을 계산할 수 있습니다. 이러한 배열은 기본 타입뿐만 아니라 클래스 타입의 배열도 만들 수 있기 때문에 객체 저장소로 사용될 수 있습니다. 하지만 배열은 선언 시 정한..

Java 2023.02.05

객체란 무엇인가 - 객체(object), 클래스(class) , 인스턴스(instance)

📌 들어가며 개발과 관련된 업무를 하다보면 '객체'라는 용어를 자주 사용하게 됩니다. "객체를 생성해서...", "객체를 넘겨서..." 등등 이러한 객체의 정의에 대해 한번쯤은 짚고 넘어가야 할 필요가 있을 것 같아 이번 포스팅을 통해 정리해보고자 합니다. 📌 객체의 정의 객체에 대한 정의는 어떠한 관점에서 정의하느냐에 따라 다르게 정리할 수 있습니다. 사전적 의미 : 먼저 사전적 의미로서의 객체는 '실제 존재하는 것'을 말합니다. 컴퓨터 과학 : 컴퓨터 과학에서의 객체 또는 오브젝트(object)는 클래스에서 정의한 것을 토대로 메모리(실제 저장공간)에 할당된 것을 의미합니다. 프로그램에서 사용되는 데이터 또는 식별자에 의해 참조되는 공간을 의미하며 변수, 자료구조, 함수 또는 메소드가 이에 해당할 수..

[프로그래머스] 문자열 나누기 - Java

문제 문자열 나누기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 문제의 규칙대로 구현하면 되는 구현 문제 반복문을 통해 돌리면서 첫번째 글자와 문자열들을 비교해 나간다. 첫 번째 글자와 같은 글자 수 세기 첫 번째 글자와 다른 글자 수 세기 코드 class Solution { public int solution(String s) { int answer = 0; // 정답 char first_character = s.charAt(0); // 첫 번째 문자 int same_count = 0; //첫 번째 글자와 같은 글자 수 세기 int diff_co..