전체 글 276

숫자 카드 나누기 [자바]

🧫 문제 분석✔️ 출처숫자 카드 나누기 level 2📖 문제 영희, 철수 각각 하나의 카드를 선택해서 소인수 분해 후분해한 수들을 영희 카드와 철수카드를 나눠본다.  영희 카드 중 하나를 소인수분해 했을 경우영희 자신의 모든 카드 수는 소인수로 나눠지면서, 철수 것은 나눠지면 안된다.  반대의 경우도 마찬가지이다.  🔅 문제 풀이import java.util.*;class Solution { // 가장 작은 수 선택후 소인수 분해 // 분해된 수들로 해당 배열을 다 나눠본다. boolean으로 나눠지는지 확인 // 다 나눠지면 상대 카드들을 나눠본다. boolean으로 나눠지는지 확인 int max = 0; public int solution(int[..

programmers/Lv 2 2025.02.01

호텔 대실 [자바]

🧫 문제 분석✔️ 출처호텔 대실 level 2📖 문제 시작 시간을 기준을 정렬후빈 방이면 방을 배정해주고, 끝나는 시간 + 10 을 해준다. 그리고 다음 예약자는 우선, 배정된 방중 퇴실후 시간대인 방을 찾는다.없다면 새로운 빈 방을 배정해준다.  이를 반복하면 된다.  예약 시간이 자정을 넘어가는 경우는 없다.  🔅 문제 풀이import java.util.*;class Solution { public int solution(String[][] book_time) { // 최대 룸 개수, 시-분 Integer[] time = new Integer[1000]; // 시작 시간 순 정렬 Arrays.sort(book_time, (o1, o2) -..

programmers/Lv 2 2025.02.01

마법의 엘리베이터 [자바]

🧫 문제 분석✔️ 출처마법의 엘리베이 level 2📖 문제  우선 예제를 보고 생각해보면어떨 때는 올림이 좋고 어떨 때는 내림이 좋다. 2554는 16번2454는 어떨까?단순히 5라고 올리면 17번이 된다.  하지만 전부 내리면 15번이면 된다. 555를 예로 들어보자. 5를 내리면 15번이지만5를 다 올리면 +1 5번  = 560+10 4번 = 600+ 100 4번 = 1000- 1000 1번 = 0 14번 이 된다.  즉, 5가 핵심이다. 연속으로 5가 나오면 올리는 것이 좋고아니라면 내리는 것이 좋다.  뒤에 숫자부터 판별한다.  🔅 문제 풀이class Solution { // 현재 층수 + 버튼 수로 이동 // 0보다 작으면 안움직임 // 0층이 가장 아래층 //..

programmers/Lv 2 2025.01.30

소수 찾기 [자바]

🧫 문제 분석✔️ 출처소수 찾기 level 2📖 문제 numbers의 각 자릿수를 조합하여 숫자를 만들고 그 수가 소수인지 카운트  소수 판별 + 완전탐색 문제 핵심0으로 시작하지 않음2는 소수짝수는 소수가 아님조합된 수 중복 체크🔅 문제 풀이class Solution { boolean[] visited; boolean[] check = new boolean[10000000]; int answer = 0; public int solution(String numbers) { char[] num = numbers.toCharArray(); visited = new boolean[num.length]; dfs(..

programmers/DFS-BFS 2025.01.24

쿼드압축 후 개수 세기 [자바]

🧫 문제 분석✔️ 출처쿼드압축 후 개수 세기 level 2📖 문제 분할 정복 문제 처음은 전체를 다 돌아본다. for문으로 주어진 영역이 모두 같은 수 인지 확인 아니라면 4등분으로 영역을 나눠서 각각 영역별로 재호출영역 길이 / 2 한 값으로 4등분한다. 여기서는 행의 길이가 영역을 정한다. 비슷한 문제 포스팅 백준 1074번 : Z백준 1030번 : 프렉탈 평면백준 2447번 : 별 찍기 - 10백준 2448번 : 별 찍기 - 11🔅 문제 풀이class Solution { // 분할 정복 // for문으로 해당 영역 탐색 int[] count = new int[2]; public int[] solution(int[][] arr) { divAndConque..

programmers/Lv 2 2025.01.23

숫자 변환하기 [자바]

🧫 문제 분석✔️ 출처숫자 변환하기 level 2📖 문제 간단하지만 생각해볼게 좀 있는 문제최단경로 BFS로 풀어보자고 생각했다. 핵심x == y 일때,x로 y를 만들 수 없을때 bfs 탐색을 멈추는 조건중복 탐색 방지 (시간 초과 가능성)🔅 문제 풀이import java.util.Queue;import java.util.LinkedList;class Solution { // x -> y // x + n || x * 2 || x * 3 //bfs 최단 경로 boolean[] visited = new boolean[1000001]; public int solution(int x, int y, int n) { int answer = bfs(x,y,..

programmers/Lv 2 2025.01.21

스프링 부트 - 외부 설정과 프로필2

✔️ 스프링이 지원하는 외부 설정스프링이 지원하는 다양한 외부 설정 조회 방법Environment@Value - 값 주입@ConfigurationProperties - 타입 안전한 설정 속성 @Slf4jpublic class MyDataSource { private String url; private String username; private String password; private int maxConnection; private Duration timeout; private List options; // 생성자 // @PostConstruct 로 멤버변수 log 출력 }  # application.propertiesmy.datasource.u..

스프링 부트 - 외부 설정과 프로필

✔️ 외부 설정하나의 애플리케이션을 여러 다른 환경에 적용개발 환경 : 개발 서버, 개발 DB 사용운영 환경 : 운영 서버, 운영 DB 사용 개발, 운영에 따라 환경 설정을 다르게 하여 빌드하는 것은 비효율적이다. 따라서 우선 빌드를 하고 배포 후 실행 시점에 외부 설정을 주입하는 것이다. 유지보수하기 좋은 애플리케이션 개발의 가장 기본적인 원칙변하는 것과 변하지 않은 것을 분리 외부 설정 사용 방법4가지 방법이 있다.OS 환경 변수 자바 시스템 속성 자바 커맨드 라인 인수외부 파일(설정 데이터) 1. OS 환경 변수System.getenv();전체 OS 환경 변수를 MAP으로 조회 가능 단, 다른 프로그램에서도 사용 가능 2. 자바 시스템 속성java -Durl=devdb -Dusername=de..

택배상자 [자바]

🧫 문제 분석✔️ 출처택배상자 level 2📖 문제 메인 컨테이너 벨트는 1부터 n까지 순서대로 한쪽 방향으로 내려옴보조 컨테이너 벨트는 stack구조, LIFO  주어진 입출력(order)의 요소들을 순서이면서 택배상자 번호라고 가정하고 풀이한다. 1. order[i]의 택배상자 번호 전까지 메인 벨트의 상자를 보조 컨테이너 벨트에 넣는다.2. order[i]의 택배상자 번호와 현재 메인 벨트 상자의 번호가 같은지 확인한다.3. order[i]의 택배상자 번호와 보조 벨트의 입구쪽 상자의 번호가 같은지 확인한다. 4. 2,3 번 둘다 아니라면 더이상 실을 수 없으므로 종료한다. 5. 이를 order의 모든 상자수만큼 반복한다.  🔅 문제 풀이import java.util.Stack;class So..

programmers/Lv 2 2025.01.20

뒤에 있는 큰 수 찾기 [자바]

🧫 문제 분석✔️ 출처뒤에 있는 큰 수 찾기 level 2📖 문제 스택 구조를 써야될거같은 느낌이 든다.  스택이 비어있다면 숫자를 넣는다.  스택이 비어있지 않다면 1. 스택의 TOP 원소와 현재 숫자를 비교해서 더 크다면 그 수가 뒷 큰 수 이다.2. TOP원소를 꺼내서 numbers에 있었던 당시 인덱스를 answer 배열의 인덱스에서 뒷 큰 수를 넣어준다.이를  1번이 false일 때까지 반복한다. 마지막으로 스택에 남은 뒷 큰 수가 없는 숫자들은 -1로 처리해준다. 🔅 문제 풀이 import java.util.Stack;class Solution { // 스택을 이용 // idx를 함께 저장 // 스택 top 원소 뒷 큰수 넣고, pop() public int[] s..

programmers/Lv 2 2025.01.16