java 15

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

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

백엔드 아키텍처 개요(2) - DIP

지난 글에서 가장 기본적인 계층 구조의 아키텍처 구성에 대해 알아보았습니다. 이번 글에서는 그러한 계층 구조 아키텍처를 사용했을 때의 문제점과 이를 해결하기 위한 DIP(Dependency Inversion Principle) 의존성 역전 원칙을 알아보도록 하겠습니다. 예를 들어 어떠한 도메인의 가격 계산 규칙 기능이 있습니다. 할인 금액 계산 로직이 복잡해지게 되면 객체 지향으로 로직을 구현하는 것보다 룰 엔진을 사용하는 것이 더 알맞을 때가 있습니다. 다음의 예시 코드는 Drools라는 룰 엔진을 사용해서 로직을 수행하는 인프라스트럭처 영역의 코드입니다. public class DroolsRulerEngine { private KieContainer kContainer; public DroolsRul..

Architecture 2023.01.22

[프로그래머스][Java] 크기가 작은 부분 문자열

문제 프로그래머스 - 크기가 작은 부분 문자열 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 String p 의 길이 length_p 를 저장 문자열 t 에서 len 만큼 잘라서 long 타입으로 저장 (int 는 값이 작아 오류 발생) ❗️for문으로 순회하면서 substring ➡️ 인덱스 넘어가지 않도록 주의 String p를 Long 타입으로 변환 후, 작거나 같으면 answer 값 증가 코드 import java.util.ArrayList; import java.util.List; class Solution { public int solut..

[Java] extends 와 implements 의 차이

자바에 있어서 OOP, 상속과 관련되 개념은 매우 중요하다고 할 수 있습니다. 자바 코딩의 핵심이라고 볼 수 있으며 자바 관련 조금만 큰 규모 혹은 작은 규모더라도 SpringBoot 코딩을 하다보면 반드시 사용하게 되는 개념 입니다. 얼마 전 회사에서 하나의 시스템과 다른 시스템을 연동하는 20여개의 api 를 개발할 때도 implements를 이용했습니다. 이 때HttpClient.java 라는 파일에는 public ResponseDto getInformation(); 과 같은 형식으로 개발할 api 들에 대해 나열한 interface를만들고 HttpClientImpl 이라는 구현체를 만들어 구현체에서 각 api 들을 구현했습니다. 이렇게 코딩을 하게 되면 api 의 스펙이 도중에 변경 되더라도 Ht..

Java 2023.01.10

[Java] AtomicInteger 사용하기

오늘은 Java의 AtomicInteger에 대해 정리해보고자 합니다. AtomicInteger는 Java에서 제공하는 클래스로 Java의 멀티스레드 환경에서 숫자 관련 계산을 진행할 때 자원의 동시성 제어를 위해 사용되는 클래스입니다. 이러한 AtomicInteger는 동기화된 int 보다 성능 역시 뛰어나다고 합니다. -- Java의 멀티스레드 환경과 동시성 제어는 여기서 다루기엔 내용이 길어져 따로 정리해보도록 하겠습니다. 이번에 AtomicInteger를 알게 된 계기는 테이블의 데이터를 조회하여 해당 데이터를 정렬 후 점수에 따라 랭크를 부여해야 했습니다. 이때 AtomicInteger 클래스를 사용하여 처리한 팀원의 코드를 보고 찾아보게 되었습니다. 객체 생성 public void atomic..

Java 2023.01.07