본문 바로가기

JAVA22

프로그래머스 레벨1 - 공원[자바] 문제  프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 풀이 mats 가 정사각형이기 때문에 2차원 배열을 탐색하면서 -1인 값을 찾고 그곳을 시작점으로 정사각형의 넓이만큼 -1이 존재하는지를 조건문으로 검색합니다. class Solution { public int solution(int[] mats, String[][] park) { for(int m : mats) { for(int i=0; i mats 배열의 원소를 하나씩 꺼내서 하나씩 비교합니다. 30점 나왔습니다.뭐가 문제인지 문제부터 다시 읽었는데 mats의 배열의 .. 2024. 10. 5.
CopyOnWriteArrayList vs SynchronizedList 개요 채팅 프로그램을 만들 때 유저 세션정보를 저장하는 리스트에 대해 동시성 문제를 고민했습니다. 동시에 두 유저가 접속했을때 동기화가 되지 않으면 한명의 유저가 리스트에 정상적으로 등록되지 않을 가능성이 있기 때문입니다.이를 스레드 안전성이라 합니다. ArrayList에 동시에 두 스레드가 접근하게 되면 스레드 안전하지 않은 상태가 됩니다.동기화는 이를 방지하기 위해 한 자원에 하나의 스레드만 접근할 수 있게 해줍니다. 그래서 동기화를 지원하는 리스트에 대해 알아봤습니다. CopyOnWriteArrayList 값을 변경할때 내부의 값을 복사해서 복사본을 통해 변경합니다.public boolean add(E e) { synchronized (lock) { Object[] .. 2024. 9. 29.
프로그래머스 레벨 2 - 퍼즐 게임 챌린지[자바] 문제  프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 풀이과정 배열의 어마어마한 길이를 보고 당연히 시간복잡도 때문에 안될줄 알면서도 순차적으로 돌며 체크해봤다. 생각이 안나서... import java.util.*;class Solution { public int solution(int[] diffs, int[] times, long limit) { //각 배열의 레벨별 증가값을 구하기 //증가값 = (전 시간 + 현재시간) * 틀린횟수 + 현재시간 int level = Arrays.stream(diffs) .. 2024. 9. 11.
프로그래머스 레벨 1 - 동영상 재생기[자바] 문제  프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 답 시간의 흐름 순으로 이동하며 풀었습니다. 1 - 초기 pos가 오프닝 구간일 경우 건너뛰기 실행2 - command 배열만큼 10초 뒤, 앞으로 이동3 - 10초 뒤 이동했는데 동영상 시작시간보다 짧아질 경우 0분 0초로 변환4 - 10초 앞으로 이동했는데 동영상 종료시간보다 길어질 경우 동영상 종료시간으로 변환5 - 구간이동 후 오프닝 구간일 경우 건너뛰기 실행 그래서 저는 이렇게 풀었습니다. import java.util.*;class Solution { public String solutio.. 2024. 9. 7.
Spring security web config 설정 시작스프링부트로 웹 프로젝트를 개발할 때 스프링 시큐리티는 필수적인 프레임워크 기능입니다. 실무에서는 이미 설정이 완료된 상태의 프로젝트 환경에서 개발을 했지만 직접 프로젝트를 생성하고 환경을 구성해보고자 하였습니다. 이 포스팅에서는 제가 설정한 파일의 코드와 왜 그렇게 설정했는가에 대한 이유를 풀이하였습니다. 전문@Configuration@EnableWebSecuritypublic class WebConfig implements WebMvcConfigurer { //Spring security 관련 설정 @Bean public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { http .. 2024. 7. 17.
헥사고날 아키텍처를 사용한 스프링 부트 로그인 API 구현해보기 목적 클린 아키텍처라는 책을 읽으면서 프로젝트의 아키텍처 자체에 관심을 가지게 되었습니다. 저자가 제시한 클린 아키텍처는 이론적인 의미는 이해하였으나 구현 방향에 대한 갈피를 잡지 못했습니다. 그러다 헥사고날 아키텍처에 대해 알게 되었습니다. 클린 아키텍처에서 제시한 핵심 정책의 분리에 대한 원칙을 지키고 있으며 좀 더 실무에서 유용하게 사용하고 있다는 사실을 알고 직접 구현해보며 이해하고 싶었습니다. 그래서 흔한 기능 중 하나인 로그인에 대해 헥사고날 아키텍처로 설계해 보았습니다. 직접 설계해보며 느낀점에 대해 포스팅 해볼까 합니다. 프로젝트 구조프로젝트 구조는 그림과 함께 보면 이해가 쉬울거라 생각해서 같이 가져왔습니다.각 계층에 대해 살펴보자면, Adapter각 핵심 로직과 외부를 연결하는 계층입니.. 2024. 7. 12.