Coding Test with Java/알고리즘 실전

Coding Test with Java/알고리즘 실전

[2696] 중앙값 구하기

✔ 중앙값 구하기[백준 2696]코드 구현하기/* * 문제 분석하기 * : 중앙값과 중앙값보다 큰 값을 저장할 우선순위 큐와 작은 값을 저장할 우선순위 큐를 생성한 후 * 값을 저장하고 교환하며 중앙값을 찾도록 함 *//* * 손으로 풀어보기 * 1. 중앙값과 중앙값보다 큰 값을 저장할 우선순위 큐와 작은 값을 저장할 우선순위 큐를 생성 * 2. 두 우선순위 큐의 크기가 같다면 큰 값을 저장하는 우선순위 큐에 걊을 저장 * 3. 두 우선순위 큐의 크기가 다르다면 작은 값을 저장하는 우선순위 큐에 값을 저장 * 4. 큰 값을 저장하는 우선순위 큐의 최소값과 작은 값을 저장하는 우선순위 큐의 최대값을 비교 * 5. 작은 값을 저장하는 우선순위 큐의 최대값이 더 클 경우, 이 값으로 중앙값이 갱신되므로 ..

Coding Test with Java/알고리즘 실전

[22942] 데이터 체커

✔ 데이터 체커[백준 22942]코드 구현하기/* * 문제 분석하기 * : 모든 원의 중심 좌표는 x축 위에 존재하므로 중심 좌표 기준으로 반지름의 길이를 활용해 맨 앞의 점과 맨 뒤의 점을 인덱스와 함께 저장 * 이후 좌표 순으로 정렬하여 스택에 넣으며 같은 원의 점 끼리 모두 짝이 맞아 스택이 비었다면 YES * 아니라면 원 사이에 다른 점이 있는 것이므로 NO를 출력 *//* * 손으로 풀어보기 * 1. 중심 좌표 기준으로 반지름의 길이를 활용해 맨 앞의 점과 맨 뒤의 점을 인덱스와 함께 저장 * 2. 좌표 순으로 정렬하여 스택에 넣으며 같은 원의 점 끼리 모두 짝이 맞는지 확인 * 3. 모두 짝이 맞아 스택이 비었다면 YES, 아니라면 원 사이에 다른 점이 있는 것이므로 NO를 출력 */..

Coding Test with Java/알고리즘 실전

[2533] 사회망 서비스(SNS)

✔ 사회망 서비스(SNS)[백준 2533]코드 구현하기/* * 문제 분석하기 * : 자식 노드부터 탐색하며 자신이 얼리 어답터가 아닐 경우와 얼리 어답터일 경우를 나누어 구하며 * 필요한 최소 얼리 어답터의 수를 구하도록 함 *//* * 손으로 풀어보기 * 1. 자식 노드부터 탐색하며 자신이 얼리 어답터가 아닐 경우와 얼리 어답터일 경우 나누어 구함 * 2. 자신이 얼리 어답터가 아닐 경우(0), 자식 노드가 모두 얼리 어답터여야 함 * 자신이 얼리 어답터일 경우(1), 자식 노드들은 얼리 어답터일 수도 있고, 아닐 수도 있음 * 3. 루트 노드까지 이를 구한 후, 필요한 최소 얼리 어답터의 수를 출력하도록 함 *//* * 2533) 사회망_서비스(SNS) */public class Ma..

Coding Test with Java/알고리즘 실전

[5052] 전화번호 목록

✔ 전화번호 목록[백준 5052]코드 구현하기/* * 문제 분석하기 * : 트라이 자료구조를 사용해 모든 전화번호 목록을 저장한 후 접두사가 일치하는지 확인 * 또는 문자열을 정렬한 후 완전탐색으로 모든 문자열을 비교 *//* * 손으로 풀어보기 * 1. 트라이 자료구조에 모든 전화번호 목록 저장 * 2. 저장해둔 트라이 자료구조를 통해 각 전화번호를 입력하여 해당 전화번호가 다른 전화번호의 접두사로 포함되는지 확인 * 3. 만약 현재 입력된 전화번호의 끝 부분이 다른 전화번호에 포함되는 부분이라면 일관성이 있지 않으므로 false를 출력 * 4. 모두 일관성 있다면 true를 출력 *//* * 5052) 전화번호_목록 */public class Main { static BufferedR..

Coding Test with Java/알고리즘 실전

[1922] 네트워크 연결

✔ 네트워크 연결[백준 1922]코드 구현하기/* * 문제 분석하기 * : 모든 컴퓨터를 연결할 수 있는 최소 신장 트리를 찾도록 함 *//* * 손으로 풀어보기 * 1. 크루스칼 알고리즘을 수행해 사용하지 않은 엣지 중 가중치가 가장 작은 간선을 선택 * 2. 선택한 간선을 연결했을 때 사이클이 발생하는지 판단 * 3. 간선을 더한 횟수가 정점의 개수 - 1이 될 때까지 이를 반복 * 4. 모든 컴퓨터를 연결하는데 필요한 최소 비용 출력 *//* * 1922) 네트워크_연결 */public class Main { static BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); static int N, M; ..

Coding Test with Java/알고리즘 실전

[1976] 여행 가자

✔ 여행 가자[백준 1976]코드 구현하기/* * 문제 분석하기 * : 연결된 도시들을 집합으로 묶은 후, 여행 계획에 속한 도시들이 모두 같은 집합에 속하는지 확인하도록 함 *//* * 손으로 풀어보기 * 1. 연결된 도시들을 집합으로 묶기 * 2. 여행 계획에 속한 도시들이 모두 같은 집합에 속하는지 확인 * 3. 모두 같은 집합이라면 YES, 아니라면 NO를 출력 *//* * 1976) 여행_가자 */public class Main { static BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); static int N, M; static int[][] city; // city(도시의 연결 정보 배열..

Coding Test with Java/알고리즘 실전

[1005] ACM Craft

✔ ACM Craft[백준 1005]코드 구현하기/* * 문제 분석하기 * : 위상 정렬 알고리즘을 이용해 각 건물까지의 건설 시간을 갱신한 후 특정 건물의 건설완료 최소 시간을 출력 *//* * 손으로 풀어보기 * 1. 위상 정렬 알고리즘을 이용해 각 건물까지의 건설 시간을 갱신 * 2. 특정 건물까지의 건설완료 최소 시간 출력 *//* * 1005) ACM_Craft */public class Main { static BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); static int N, K; static int[] time; // time(건물당 건설에 걸리는 시간 배열) static Arr..

Coding Test with Java/알고리즘 실전

[11265] 끝나지 않는 파티

✔ 끝나지 않는 파티[백준 11265]코드 구현하기/* * 문제 분석하기 * : 파티장끼리 연결된 도로를 저장한 후, * 플로이드 워셜 알고리즘을 통해 다른 파티장에 시간 안에 도착할 수 있는지 확인 *//* * 손으로 풀어보기 * 1. 파티장끼리 연결된 도로를 저장 * 2. 플로이드 워셜 알고리즘을 통해 다른 파티장에 시간 안에 도착할 수 있는지 확인 * 3. 시간내에 다른 파티장에 도착할 수 있으면 "Enjoy other party" 출력 * 4. 시간내에 도착할 수 없다면 "Stay here" 출력 *//* * 11265) 끝나지_않는_파티 */public class Main { static BufferedReader br = new BufferedReader(new InputStr..

김깅긍
'Coding Test with Java/알고리즘 실전' 카테고리의 글 목록