Coding Test/알고리즘 실전

Coding Test/알고리즘 실전

[15685] 드래곤 커브

✔ 드래곤 커브[백준 15685]코드 구현하기/* * 문제 분석하기 * : 세대가 거듭할 수록 이전 세대의 좌표들을 기준으로 반시계 방향으로 90도 회전시킨 방향으로 드래곤 커브가 그려지는 것을 볼 수 있음 * 그러므로 이를 이용해 드래곤 커브의 세대만큼 반복하여 선분의 방향을 구하도록 함 * *//* * 손으로 풀어보기 * 1. 입력받은 드래콘 커브의 정보에 따라 시작점부터 시작해 이동하는 방향을 모두 구하기 * 이때 1세대부터 시작해 g세대까지 반복하며 이전 세대를 바탕으로 선분의 방향을 구하도록 함 * 선분의 방향은 이전 세대의 좌표를 기준으로 반시계 방향으로 90도 회전시킨 방향 * 2. 구한 방향에 따라 드래곤 커브를 그림 * 3. 모든 드래곤 커브를 그린 후, 좌표를 살펴..

Coding Test/알고리즘 실전

[20056] 마법사 상어와 파이어볼

✔ 마법사 상어와 파이어볼[백준 20056]코드 구현하기/* * 문제 분석하기 * : 파이어볼의 정보에 따라 파이어볼을 배열에 저장한 후, 이를 이동하고 소멸하도록 함 * 또한 조건에 따라 합쳐 4개의 파이어볼로 나누도록 함 * 이를 K번 반복한 후, 남아있는 파이어볼 질량의 합을 구하도록 함 *//* * 손으로 풀어보기 * 1. 파이어볼의 정보에 따라 파이어볼을 저장 * 2. 모든 파이어볼을 방향과 속력에 따라 이동 * 이때 1번과 N번은 이어져 있으므로 이를 위해 N으로 나눈 나머지 값의 위치로 이동하도록 함 * 3. 이동이 모두 끝난 뒤, 2개 이상의 파이어볼이 있다면 분열 * 모든 파이어볼을 합쳐 질량, 속력을 구하고 이들의 방향에 따라 만들어진 파이어볼을 새로 저장 * ..

Coding Test/알고리즘 실전

[6443] 애너그램

✔ 애너그램[백준 6443]코드 구현하기/* * 문제 분석하기 * : 각 단어의 알파벳을 분리한 후, 이를 모두 사용하며 만들 수 있는 단어들을 찾도록 함 * 이때 중복되고 알파벳 순서로 출력해야 하므로 알파벳의 수를 카운트하고, * 이를 이용해 가장 앞에 있는 알파벳부터 시작하여 단어를 만들도록 함 *//* * 손으로 풀어보기 * 1. 각 단어의 알파벳을 분리 * 2. 각 단어에 존재하는 알파벳의 개수를 세기 * 3. 각 알파벳을 탐색하며 만들 수 있는 단어들을 출력 *//* * 6443) 애너그램 */public class Main { static BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); ..

Coding Test/알고리즘 실전

[21278] 호석이 두 마리 치킨

✔ 호석이 두 마리 치킨[백준 21278]코드 구현하기/* * 문제 분석하기 * : 플로이드 워셜을 이용해 각 건물 지점에서 다른 지점까지 가는 모든 경로의 시간을 구한 후, * 건물을 두 개 짓는 모든 경우의 수에 대하여 가장 적은 시간을 갖는 건물 두 개를 고르도록 함 *//* * 손으로 풀어보기 * 1. 플로이드 워셜을 이용해 각 건물 지점에서 다른 지점까지 가는 모든 경로의 시간을 구하도록 함 * 2. 건물 중 두 개를 골라 치킨집을 정할 경우의 왕복 시간의 총합을 구하도록 함 * 이때 두 치킨집 중 더 작은 거리를 선택해야 함 * 3. 이를 반복하여 최단 시간을 구해 출력하도록 함 *//* * 21278) 호석이_두_마리_치킨 */public class Main { stati..

Coding Test/알고리즘 실전

[2668] 숫자고르기

✔ 숫자고르기[백준 2668]코드 구현하기/* * 문제 분석하기 * : 첫째 줄에서 수를 선택한 후, 그 수의 바로 밑의 둘째 줄에 해당하는 수를 첫째 줄에서 찾아 * 두 수가 일치하는지 확인하는 것을 반복하여 최대 정수의 개수를 구하도록 함 * 예) 1 -> 3 -> 1 / 5 -> 5 *//* * 손으로 풀어보기 * 1. 첫째 줄에서 수를 선택한 후, * DFS 탐색을 통해 숫자 -> numbers[숫자] -> numbers[numbers[숫자]]로 싸이클이 발생하는지 확인하도록 함 * 2. 이를 반복하여 싸이클이 발생하는 수를 찾아 그 개수와 숫자들을 출력하도록 함 *//* * 2668) 숫자고르기 */public class Main { static BufferedRea..

Coding Test/알고리즘 실전

[3980] 선발 명단

✔ 선발 명단[백준 3980]코드 구현하기/* * 문제 분석하기 * : 각 선수별로 포지션을 배치하는 경우의 수를 모두 구하여 능력치의 합이 최대가 되는 것을 찾도록 함 * 이때 각 포지션에 대한 능력이 0이라면 그 포지션에 적합하지 않으므로 배치하지 않도록 함 *//* * 손으로 풀어보기 * 1. 각 선수에 대한 능력을 저장 * 2. 선수들에 따라 만들 수 있는 포지션 배치 경우를 모두 살펴가며 능력치의 합을 구하도록 함 * 이때 이미 포지션이 정해진 선수와 그 포지션에 대해 능력이 0인 선수는 배치할 수 없음 * 3. 이를 반복하여 능력치의 합의 최댓값을 구하여 출력하도록 함 *//* * 3980) 선발_명단 */public class Main { static BufferedRea..

Coding Test/알고리즘 실전

[15686] 치킨 배달

✔ 치킨 배달[백준 15686]코드 구현하기/* * 문제 분석하기 * : 폐업 시키지 않을 치킨 집을 M개 구하는 모든 경우의 수에 따라, 도시의 치킨 거리를 구해 가장 작은 값을 구하도록 함 *//* * 손으로 풀어보기 * 1. 집과 치킨집의 좌표 정보를 저장하기 * 2. 치킨 집을 M개 선택한 후, 그 치킨 집에 따른 도시의 치킨 거리 구하기 * 3. 이를 반복하여 가장 작은 도시의 치킨 거리 값을 구하여 출력하기 *//* * 15686) 치킨_배달 */public class Main { static BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); static int N, M; static Lis..

Coding Test/알고리즘 실전

[2212] 센서

✔ 센서[백준 2212]코드 구현하기/* * 문제 분석하기 * : 각 센서들을 K개의 그룹으로 나눌 때 수신 가능 영역의 길이의 합을 최소화하도록 함 * 이를 위해 각 센서들의 좌표를 정렬한 후, N - K개의 거리 차이를 무시하여 제외한 후 나머지의 합을 구해줌 * * 예) N = 6 (1, 6, 9, 3, 6, 7), K = 2일 때 * 각 센서들의 위치는 1, 3, 6, 6, 7, 9이므로 센서들끼리의 거리 차이는 2, 3, 0, 1, 2가 되므로 * 1, 3 / 6, 6, 7, 9로 그룹을 나누면 집중국의 수신 가능 영역의 길이의 합은 2 + 3이므로 5가 됨 *//* * 손으로 풀어보기 * 1. 각 센서들의 좌표를 정렬 * 2. 각 센서들의 거리 차이 구하기 * 3. N -..

김깅긍
'Coding Test/알고리즘 실전' 카테고리의 글 목록 (4 Page)