https://school.programmers.co.kr/questions/80612 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr접근 방법enqueue와 dequeue를 통해 원소를 옮겨가며 queue1과 queue2의 합이 서로 같도록해야한다 -> queue1의 원소를 관리하고 나머지는 queue2로 볼 수 있다.두 큐를 하나의 배열로 잇고 각 sum1과 sum2가 같도록한다 즉, 합이 큰 큐에서 작은 큐로 원소를 옮긴다.큐가 빈다면 답을 구할 수 없는경우이다. 코드class Solution { public int solution(int[] queue1, int[] queue2) { ..
https://school.programmers.co.kr/learn/courses/30/lessons/12979 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr접근 방법기지국이 필요한 구간의 길이 = d 라고할때, 이 구간에 필요한 기지국의 개수는d % w == 0 이면 d / w 개가 필요하다아니면 d / w + 1개가 필요하다그렇다면 슬라이딩 윈도우로 필요한 구간을 찾고 "ans += fnc(구간)" 형태로 값을 더해주면 되겠다 ! => 시간 초과 발생사실 구간은 solution 함수의 파라미터 만으로 알 수 있다0 ~ stations[0]-w-1 , stations[0]+w+1 ~ station..
https://school.programmers.co.kr/learn/courses/30/lessons/68936 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 접근방법현재 범위에서 조건에 따라 4등분하고 다시 검사하는 반복적인 함수 호출이 일어난다 -> 재귀가 적절해보임배열을 넘겨서 해당 배열의 원소가 모두 같으면 class 변수인 ans에 기록한다.같지 않으면 4등분한 배열을 재귀적으로 다시 검사한다.길이가 1이되면 모두 같을 수 밖에 없다. 코드class Solution { int[] ans = new int[2]; public int[] solution(int[][] arr) { ..
0. 시작하며https://nooroongzi.tistory.com/19 [SonarQube] 소나큐브 연동하기0. 시작하며 개인적으로 프로젝트 리팩토링을할때 "기존 대비 ~~의 향상!" 이라는 부분이 필요하다고 느꼈습니다. 따라서 프로젝트 코드의 기존 상태를 파악하기위해 사용한 소나큐브에대한 기nooroongzi.tistory.com저번글에 이어서 Jacoco도 같이 사용하는 방법을 가져왔습니다. Gradle 프로젝트 기반으로 진행하겠습니다! 또한 제가 사용한 소나큐브와 자코코의 버전은 java17과 호환합니다. 1. Jacoco란?Jacoco란 Java코드의 테스트 커버리지를 체크하는 라이브러리입니다. 테스트로 얼마나 커버가 되는지 수치와 html, xml등의 리포트로 확인할 수 있어서 직관적으로 바..
0. 시작하며 저번에 이어서 Gof 생성 패턴 중 하나인 Builder 패턴을 알아보겠습니다. 알아 보면서 개인적으로 팩토리 메서드 패턴과 유사하다고 느꼈지만 목적에 있어서 차이점을 보여주는거같습니다. 두 패턴의 공통점과 차이점을 생각해보면 더 좋을거 같습니다. 1. 기존 코드 1. Client public class App { public static void main(String[] args) { TourPlan shortTrip = new TourPlan(); shortTrip.setTitle("오레곤 롱비치 여행"); shortTrip.setStartDate(LocalDate.of(2021, 7, 15)); TourPlan tourPlan = new TourPlan(); tourPlan.setTi..
0. 시작하며 https://nooroongzi.tistory.com/12 [SpringBoot] SSE알림과 비동기 0. 시작하며 프로젝트에서 SSE(Server Sent Event) 방식의 알림을 구현을 담당했습니다. 이때발생한 에러와 트러블 슈팅을 기록하려합니다. 1. 알림 구현 방식 후보군 1-1 Short Polling 클라이언트가 서버 nooroongzi.tistory.com 위 글에서 이어지는 글 입니다. SpringBoot에서의 비동기처리를할때 많이 고려되는 ConcurrentHashMap에대하여 알아보겠습니다. 1. ConcurrentHashMap 이란? Multi-Thread 환경에서 동시성을 고려하여 최적화한 자료구조 입니다. 여러 스레드가 맵에 동시에 접근해도 성능이 저하되지 않도록..