2024/07 20

[JAVA] 프로그래머스 전력망을 둘로 나누기_트리

문제 : https://school.programmers.co.kr/learn/courses/30/lessons/86971 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 접근 :    - 양방향 그래프로 트리를 형성   - 모든 노드에서 시작점을 Root로 지정하여서 모든 노드를 순회   - 각각의 Root 노드에서 자식노드의 갯수를 파악하여 해당 간선을  끈었을 때 차를 비교   - 간선을 끈었을 때 서로의 갯수 차가 최소가 되는 값을 정답으로 출력      코드 구현 :  import java.util.*;public class Solution { ..

JAVA/Coding Test 2024.07.30

[JAVA] 프로그래머스 택배상자_stack

문제 : https://school.programmers.co.kr/learn/courses/30/lessons/131704 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr  접근 :    - 메인 컨베이어의 1부터 n 까지 상자를 대상으로 실행한다.   - order를 확인하여서 order에 해당하는 위치의 상자에 도달하면 트럭에 상자를 넣고 보조 컨베이어의 마지막 상자를 확인하여 order의 다음 순번에 해당하는 상자를 트럭에 넣는다. (다음 순번의 order와 달라지거나 보조 컨베이어가 빌 때까지 반복)   - 만약 order와 다른 상자 일 경우, 보조..

JAVA/Coding Test 2024.07.16

[JAVA] 숫자 변환하기_DP

문제 : https://school.programmers.co.kr/learn/courses/30/lessons/154538 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr  접근 :  * dp[x] => x 숫자를 만들기 위해서 연산되는 최소 횟수   - x 부터 시작하여 y까지 2배, 3배, +n 연산을 하여 그 결과 값을 배열의 해당 인덱스에 입력한다.   > dp[2*x] = dp[x] + 1   - 만약 해당 인덱스에 값이 이미 존재한다면 현재 계산값과 해당 인덱스의 데이터 값 중 작은 값을 유지한다.   > dp[temp] = (dp[temp] ==..

JAVA/Coding Test 2024.07.12

[JAVA] 프로그래머스 주차 요금 계산_tree map

문제 : https://school.programmers.co.kr/learn/courses/30/lessons/92341 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 접근 :    - 입력 받은 기록이 In 인 경우에는 HashMap에 차량 번호를 key, 입차 시간을 value로 저장한다.   - 입력 받은 기록이 Out 이면 HashMap을 조회해서 주차된 시간을 계산하여 park_time TreeMap에 저장 후 In에서 해당 데이터를 삭제한다.   - 입력 받은 기록을 모두 처리한 후, In에 차량이 남아있으면 23:59 에 출차된 것으로 시간 계..

JAVA/Coding Test 2024.07.10

[JAVA] 백준 1103 게임_DP

문제 : https://www.acmicpc.net/problem/1103  접근 :    - 현재까지의 도달한 값을 dp 에 저장   - 4방향으로 탐색을 실행 후, 만약 다음값이 dp 보다 크다면 더이상 탐색을 진행하지 않는다.   > 이미 다른 경로를 통하여 해당 위치에 왔을때, 이전에 지나온 길이가 긴 것의 결과가 무조건 큰 수가 나오기 때문   >  ex) before + after = res 라고 할때 before 가 큰 res가 무조건 더 크기 때문 (after 는 같은 값)   - 만약 다음 값이 H인 경우에도 더이상 탐색을 진행하지 않는다.   - 방문한 노드를 다시 방문한 경우에는 cyle이 생성되서 무한이므로 -1을 리턴한다.                코드 구현 :  import j..

JAVA/Coding Test 2024.07.06

[JAVA] 백준 1913 달팽이_탐색

문제 : https://www.acmicpc.net/problem/1913  접근 :    - 아래, 오른쪽, 위, 왼쪽 순으로 방향을 설정한다.   - 만약 다음 진행할 위치가 벽밖으로 나가거나 이미 숫자가 있는 경우에는 방향을 다음 순번으로 옮긴다.   - 만약, 방향이 왼쪽 다음 인 경우 처음 순번인 아래 쪽부터 다시 진행한다.     코드 구현 : import java.io.*;public class Main { static class Position{ private int x; private int y; public Position(int x, int y){ this.x = x; this.y = y; ..

JAVA/Coding Test 2024.07.05

[JAVA] 프로그래머스 타겟 넘버_탐색

문제 : https://school.programmers.co.kr/learn/courses/30/lessons/43165 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr  접근 :    - 입력 받은 수를 모두 합한다.   - 입력 받은 수의 2배 만큼 빼면서 target 과 일치하면 count를 증가 시킨다.   - dfs 를 사용하여 만약 다음 수를 뺄때 target 보다 작으면 더 진행하지 않고 지나간다.   - 수 를 선택하는 방법은 중복 없이 오름차순으로 뽑는다.       - 끝까지 탐색을 진행한 후 결과를 출력한다.     - 코드 구현 : cl..

JAVA/Coding Test 2024.07.04

[JAVA] 프로그래머스 피로도_브루트포스

문제 : https://school.programmers.co.kr/learn/courses/30/lessons/87946 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr  접근 :   - 던전을 순서를 고려하면서 중복을 허용하지 않는 모든 경우의 수에 대해서 결과값을 도출한다.  - EX 던전의 수가 3인경우          1  2  3         1  3  2         2  1  3         2  3  1         3  1  2         3  2  1  - 만약 결과 값 중 던전의 수와 동일한 경우가 나오면 더 이상의 탐색하지 않..

JAVA/Coding Test 2024.07.04

[JAVA] 백준 2263 트리의순회_탐색

문제 : https://www.acmicpc.net/problem/2263  접근 :    - 인오더와 포스트오더를 저장한다.   - 포스트오더의 마지막 값은 root 노드 이므로 해당 값을 프리오더에 저장하고, 인오더에서 노드의 값을 기점으로 좌우를 나눈다.   - 인오더에서 좌우를 나눈거와 동일한 길이만큼 포스트오더에서 좌우로 나눈다.   - 좌측 나눈 sub 트리에서 위에 과정을 동일하게 반복하고, 오른쪽에 대해서도 동일하게 시행한다.   -결과 값을 출력한다.         코드 구현 :  import java.io.*;public class Main { private static StringBuilder sb; private static int[] in_order_idx; pri..

JAVA/Coding Test 2024.07.03

[JAVA] 백준 17609 회문_탐색

문제 : https://www.acmicpc.net/problem/17609  접근 :   - 좌측 끝과 우측 끝에 포인터를 두고 양쪽에서 1씩 감소시키면서 일치하는지 판단한다.   - 만약 다르다면 현재 좌측+1, 우측 포인터 위치에서 다시 한번 검사를 실시한다.   - 또한, 현재 좌측, 우측-1 포인터 위치에 대해서도 검사를 실시하고 둘 중 작은 값을 결과로 출력한다.  코드 구현 : import java.io.*;public class Main { private static int checkPal(String str, int s, int e, int rm_cnt){ if (rm_cnt >= 2) return 2; while (s

JAVA/Coding Test 2024.07.03