본문 바로가기

재수강은없다

(77)
[프로그래머스] 위클리 챌린지 7주차 - 입실 퇴실 문제 문제 보기 풀이 #Set #HashSet 회의실(room)은 사람들이 모이는 공간이지만 순서와 상관없이 출입이 가능합니다. 이런 특징은 Set을 회의실로 구현이 가능합니다. #Queue #LinkedList 입실 명부(inList), 퇴실 명부(outList) 명부에 적힌 순서에 따라 인원들이 입, 퇴실해야 합니다. 순서가 중요하기 때문에, 각 명부를 Queue로 구현합니다. 문제에서 주어진 상황인 반드시 만난 사람을 구하는 상황은 회의실에 입실한 사람이 퇴실할 수 있을 때 무조건 퇴실하는 상황입니다. 퇴실 queue의 front 인원이 회의실에 있다면 room에서 나가도록 하고, 입실 queue의 front 인원을 회의실에 입실시키도록 합니다. #Map #HashMap 각 사람별로 반드시 만난 사..
[프로그래머스] 위클리 챌린지 6주차 - 복서 정렬하기 문제 문제 보기 풀이 복서들의 정보를 가지고 문제에서 제시된 조건으로 정렬합니다. 동점자인 경우의 정렬기준이 3가지 있습니다. 번호, 승률, 몸무게가 많은사람을 이긴 횟수, 몸무게를 필드값으로 가지는 Boxer 클래스를 생성합니다. Boxer list를 정렬할 때 Comparator 익명 구현체로 문제에 주어진 상황에 맞게 정렬합니다. 소스코드 github import java.util.*; class Solution { public int[] solution(int[] weights, String[] head2head) { List boxers = new ArrayList(); int N = weights.length; for (int i = 0; i < N; i++) { int totalGameCnt..
[spring] offline 환경에서 gradle 빌드 환경 세팅 개요 오프라인 환경(==망분리, 폐쇄망, 내부망, 인트라넷)에서 gradle 프로젝트를 빌드하기 위한 환경 세팅 방법에 대해 작성합니다. 서론 인터넷에 연결되지 않은 환경에서 개발하는 경우가 있습니다. 인터넷 환경에서 spring boot 프로젝트를 구축하는 경우 maven/gradle을 통해 빌드에 필요한 dependency 작성만 하면, 관련된 파일을 받아와서 사용할 수 있습니다. 하지만 폐쇄망에서는 maven repository에 연결할 수 없어서 dependency를 받아올 수 없습니다. 이 문제를 해결하는 방법은 여러 가지가 있습니다. 큰 범위에서 작은 범위 순서로 작성한 해결방법은 아래와 같습니다. 해결방법 1. 외부망과 연결될 수 있도록 해결하기 외부망과 단절된 이유를 찾아서 해결하는 방법입..
[spring] spring boot에서 SQLite를 JPA로 사용하기 1. 개요 spring data jpa를 이용하는 Spring boot 프로젝트에서 SQLite를 사용하는 방법에 대해 작성합니다. 2. SQLite란? 공식사이트 : https://sqlite.org/index.html DB-engines(H2 vs SQLite) : https://db-engines.com/en/system/H2%3BSQLite SQLite는 서버로 띄우지 않고 애플리케이션에 포함되어 사용할 수 있는 DB입니다. DB를 생성하면 파일 하나로 생성됩니다. Spring boot에서는 비슷한 역할을 하는 H2 DB를 쉽게 사용할 수 있어서 SQLite를 잘 사용하지 않습니다. 하지만 SQLite는 DB-engines overall ranking이 10위권 안에 들 정도로 다른 생태계에서는 ..
[BOJ] 5430번 : AC - Java 문제 백준 풀이 RDD 4 [1,2,3,4] R(배열 뒤집기) 또는 D(앞쪽 숫자 제거)로 구성된 작업을 [1,2,3,4] 배열에 순차적으로 적용한 결과를 얻는 문제다. 중요한 부분이 2가지 있다. 입력데이터를 적절한 데이터로 변환 작업 수행을 얼마나 효율적으로 진행할 것인가? 1. 입력데이터를 적절한 데이터로 변환 R 또는 D로 구성된 작업 리스트는 toCharArray로 문자 배열로 변환했다. [1,2,3,4] 형식을 배열로 변환해야 한다. 앞뒤 '[', ']'는 고정이므로 substring으로 앞뒤 한 칸씩 뺀 문자열을 얻고, split으로 콤마(,)를 기준으로 나눠주면 온전한 숫자 부분만 얻을 수 있다. 2. 작업 수행을 얼마나 효율적으로 진행할 것인가? 작업이 배열을 뒤집거나 가장 앞쪽 원소를 ..
[프로그래머스] 124 나라의 숫자 문제 https://programmers.co.kr/learn/courses/30/lessons/12899 풀이 나사 빠진 진법 문제. 나머지 연산을 조금 꼬아서 풀어야 한다. mod 3 연산과 같다. 다만 0이 없다. mod 3 연산과 동일하게 만든다. 1,2는 나머지 연산과 같고, 몫이 1인 경우는 몫에 1을 뺀다. 1 -> 0... 1 2 -> 0... 2 3 -> 1... 0 -> -1 -> 0... 0 나머지가 0인 경우는 3으로 생각하면 되고, 124 나라 표기 방법대로 3을 4로 생각하면 된다. 즉, 나머지 0인 경우는 4가 된다. 0이 4가 되도록 매핑은 배열을 이용해서 구현했다. 알고리즘 순서를 자세히 설명하면 1. 숫자를 3으로 나눠서 몫과 나머지를 구한다. 2. 몫이 0이면 중단한다...
[프로그래머스] 카카오프렌즈 컬리링북 문제 https://programmers.co.kr/learn/courses/30/lessons/1829 풀이 색깔 영역 갯수와 가장 큰 영역의 넓이를 계산해야한다. DFS 방식으로 해결했다. 같은 색깔 영역을 깊이 탐색으로 조사하여, 영역의 넓이까지 계산한다. 한 영역을 탐색하는 과정은 아래와 같다. - 한 블럭에 들어간다 -> 탐색 색깔로 지정한다 -> (위 or 아래 or 왼 or 오른쪽 블럭에 들어간다. -> 탐색 색깔과 같은 색깔인지 확인한다) 여길 반복 picture가 가질 수 있는 값에 -1을 추가해서 탐색완료된 영역에 대한 정보를 갖도록 했다. picture의 값은 아래와 같이 값을 가질 수 있다. 0 : 색칠하지 않는 영역(문제 정의) 1 이상 : 숫자별로 하나의 색깔을 의미(문제 정의)..
[프로그래머스] 위클리 챌린지 1주차 - 상호 평가 2주 차 문제가 쉬워서 1주 차 풀었는데 1주 차는 더 쉽다. 문제 문제 보기 풀이 필요한 놀이기구 이용 금액을 for를 이용하지 않고 1~n까지의 합을 계산하면 된다. 1~n까지의 합 공식 : n x (n+1) / 2 다른 분 코드 중에 ans 변수를 생성하지 않고 Math.max를 이용해서 구했다. 직관적으로 이해할 수 있어서 좋은것 같다. 소스코드 class Solution { public long solution(int price, int money, int count) { long totalPrice = (count+1L) * count * price / 2; long ans = totalPrice - money; if(ans >= 0) { return ans; } else { return 0;..