전체 글 51

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

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

Session 과 Token 방식을 활용한 '인증'과 '인가'란?

📌 들어가며 백엔드 개발자로서 피할 수 없는 개발 영역 중 하나가 session 혹은 token을 이용한 사용자 인증/인가 방식에 대한 개발 부분입니다. 해당 부분은 개인정보와도 밀접하게 연관되어 있는 부분이고 보안사항에서도 중요한 부분입니다. 만약 잘못될 경우 A 사용자의 화면에서 B 사용자의 정보가 담긴 화면이 보이는 등 큰 사고로 이어질 수 있습니다.(이런 사례가 발생하여 사용자가 언론제보 및 신고할 경우... 개인정보 탈취 등과 관련하여 회사는 큰 고초를 겪게 될 수 있습니다..😂) 이처럼 인증과 인가 부분은 매우 중요한 개발 영역이라고 할 수 있습니다. 불행인지 다행인지.. 저는 아직 입사 이후 '인증'관련 도메인은 개발해 본 적이 없어 대략적으로 회원 인증하는 절차에 대해서만 알고 있었는데요...

[프로그래머스][Lv2][Java] 귤 고르기

📌 문제 귤 고르기 - lv2 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 📌 풀이 알고리즘 보다는 문제의 제약조건 내용대로 구현 하는 문제 고르기로 한 개수인 k개 만큼 고르기 위해 필요한 각 귤의 개수를 알아야 한다. ➡️ 이를 위해 Map 을 사용해야 함 Map을 만든 후에는 key-value 에서 value 값에 따라 내림차순 정렬(❗️가장 개수가 많은 귤부터 차감해야 함) 내림차순으로 차감하여 귤을 k개 만큼 다 골랐을 시점이 서로 다른 귤의 종류가 최소일 때이다. 📌 코드 import java.util.*; class Solution { pu..

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

[프로그래머스][Java] 명예의 전당 (1)

문제 [명예의 전당 (1)] 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 ❗️알고리즘을 굳이 생각하지 않아도 문제의 규칙대로 구현하면 되는 구현 문제 ❗️명예의 전당에 등록할 수 있는 수만큼 점수를 등록하면서 명예의 전당 리스트 사이즈가 == k 일때 가장 작은 최소 점수와 비교대상인 score[i] 점수보다 크냐 작냐에 따라 다른 규칙을 실행하면 됩니다. 코드 import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Collections;..

DDD - 애그리거트

들어가며 애그리거트는 DDD에서 굉장히 자주 등장하는 용어입니다. 항상 개발을 공부할 때마다 느끼는 것은 정의가 천차만별 이라는 것입니다. 이번 포스팅에서는 이 '애그리거트'의 정의와 간단한 예시를 알아보고자 합니다. 📌 애그리거트의 등장 배경 보통 DDD에 대한 설명을 할 때 설명의 예시가 되는 시스템으로 '온라인 쇼핑몰'에 대한 예시를 많이 들고 있습니다. 개인적으로는 온라인 쇼핑몰 e-커머스 시스템이 고객, 주문, 결제, 상품 등 다양한 서브 도메인들로 이루어져 있기 때문이 아닐까 싶습니다. 저 또한 e-커머스 시스템을 예시로 들도록 하겠습니다. e-커머스 시스템을 상위 수준에서 모델을 정리하면 다음과 같을 수 있습니다. 이러한 상위 수준에서의 모델을 개별 객체 수준으로 나타내면 다음과 같습니다. ..

BackEnd/DDD 2023.02.04

객체란 무엇인가 - 객체(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..

[프로그래머스][Java] 가장 가까운 같은 글자

문제 프로그래머스 - 가장 가까운 같은 글자 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 answer 가 초기에는 int[] 로 초기화 되어있지만 값을 넣기 편하게 List 로 만들어서 사용 String 배열에 값을 구해야 하는 String 낱말 별로 넣어두기 Ex.)['b','a','n','a','n','a'] ❗️split 함수는 배열에서만 사용 가능 tempList 를 만들어서 해당하는 낱말이 없으면 -1을 answer에 넣고 있으면 인덱스값을 계산해서 answer에 넣어준다. 마지막으로 answer를 다시 int[] 로 변환 ➡️ Strea..