Algorithm

· Algorithm
- 알고리즘 분류 : greedy- 사용 언어 : JAVA- 문제 요점집의 개수 n과 각 집의 위치를 입력받아 배열에 저장집의 위치 배열을 오름차순으로 정렬안테나는 모든 집까지 거리의 총합이 최소가 되도록 설치해야 거리 합을 최소로 만드는 위치는 중앙값이므로, 정렬된 배열의 중앙 인덱스를 선택중앙값 위치를 출력하여 안테나 설치 위치 얻음import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.StringTokenizer;public class Main { public static void main(String[] args) throws IOException { ..
· Algorithm
- 알고리즘 분류 : greedy- 사용 언어 : JAVA- 문제 요점동전 종류와 목표 금액(K)을 입력받고, 각 동전 단위를 배열에 저장가장 큰 동전부터 거슬러 줄 수 있는 최대 개수를 계산해당 동전으로 거슬러 줄 수 있는 만큼 K에서 차감하고, 사용한 동전 수를 누적K가 0이 되면 반복을 종료최종적으로 사용한 동전의 개수를 출력import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.StringTokenizer;public class Main { public static void main(String[] args) throws IOException { ..
· Algorithm
- 알고리즘 분류 : DP- 사용 언어 : JAVA- 문제 요점dp[i][j]는 i번째 아이템까지 훔쳤고, B의 흔적이 j일 때 A의 최소 흔적을 의미함.A가 훔치면 A의 흔적은 늘고 B는 그대로 → dp[i+1][j]에 업데이트.B가 훔치면 B의 흔적은 늘고 A는 그대로 → dp[i+1][nextB]에 업데이트.Math.min()으로 더 작은 값으로 갱신해 최적 경로 유지.마지막에 B의 흔적이 조건 M보다 작을 때의 A 최소값이 정답.public class perfectCrime { static final int MAX_VALUE = Integer.MAX_VALUE / 2; public static void main(String[] args) { int[][] info = {{1..
· Algorithm
- 알고리즘 분류 : 구현- 사용 언어 : JAVA- 문제 요점players 배열은 각 시간대별 접속 인원을 의미하며, 한 서버당 수용 가능 인원은 m, 서버 유지 시간은 k매 시간마다 해당 시점에 만료된 서버들을 serverList에서 제거현재 인원을 수용하기 위한 필요한 서버 수를 계산하고, 부족한 만큼 서버를 증설증설된 서버는 time + k 시간까지 유효하므로, 그 시간을 리스트에 기록최종적으로 증설된 서버의 총 개수를 반환import java.util.*;public class serverAddCount { static int answer = 0; public static void main(String[] args) { int[] players = {0, 2, 3, 3, ..
· Algorithm
- 알고리즘 분류 : DFS, 백트래킹- 사용 언어 : JAVA- 문제 요점사람 수 N과 친구 관계 수 M을 입력받고 인접 리스트 형태로 그래프를 구성각 정점(사람)에서 DFS를 시작하여 깊이 5가 되는지(=A-B-C-D-E 관계가 있는지) 탐색DFS에서는 방문 배열을 사용해 방문한 노드를 다시 방문하지 않도록 하며, 백트래킹을 적용깊이가 5가 되면 결과를 1로 설정하고 탐색을 종료모든 탐색 후 결과를 출력하며, 깊이 5가 발견되면 탐색 종료import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.ArrayList;import java.util.List;import jav..
· Algorithm
- 알고리즘 분류 : BFS- 사용 언어 : JAVA- 문제 요점입력된 지도를 저장하고, 목표 지점(2인 위치)을 찾아 BFS의 시작점으로 설정distance 배열을 -1로 초기화하여 방문 여부 및 거리를 동시에 관리BFS를 통해 상하좌우 인접한 칸을 탐색하며, 1(갈 수 있는 곳)만 거리 갱신 및 탐색 대상거리 계산 시 한 칸씩 이동하므로 현재 위치의 거리 + 1로 갱신결과 출력 시 갈 수 없는 곳(-1), 원래 못 가는 곳(0), 도달 가능한 거리 값을 각각 조건에 따라 출력import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.LinkedList;import jav..
· Algorithm
- 알고리즘 분류 : 구현- 사용 언어 : JAVA- 문제 요점킹과 돌의 좌표를 알파벳과 숫자를 숫자 좌표로 변환해 저장명령 개수만큼 입력된 이동 명령을 하나씩 처리하며 move() 함수를 호출이동 명령에 따라 킹의 다음 위치를 계산하고, 보드 밖이면 무시킹이 돌과 겹치는 위치로 이동하려 할 경우, 돌도 같은 방향으로 밀 수 있는지 확인이동이 유효할 경우 킹과 돌의 위치를 갱신하고, 마지막에 알파벳+숫자 형식으로 출력import java.util.Scanner;public class Main { static int kingX, kingY; static int stoneX, stoneY; public static void main(String[] args) { Scanner s..
· Algorithm
- 알고리즘 분류 : 구현- 사용 언어 : JAVA(효율성 테스트가 없어 생각나는대로 작성)1. 초기 세팅giftMap:→ 친구들끼리 누가 누구에게 몇 번 선물했는지 저장하는 2차원 Map.(예: giftMap["A"]["B"] = 2 → A가 B에게 선물 2번 줌)summaryMap:→ 각 친구의 총 준 선물 수(GIVE), 받은 선물 수(RECEIVE), 그리고선물지수(SCORE = GIVE - RECEIVE) 를 저장하는 Map.요약:→ 선물 내역과 선물지수를 따로 정리할 준비를 함.2. 선물 기록 파싱gifts 배열을 순회하면서 "sender receiver" 형태를 split 해서→ sender가 receiver에게 선물한 횟수를 1 추가함.그리고 summaryMap에서:sender의 GIVE ..