Coding Test/Java 알고리즘 실전

Coding Test/Java 알고리즘 실전

[14500] 테트로미노

✔ 테트로미노[백준 14500]코드 구현하기/* * 문제 분석하기 * : 각 테트로미노를 회전, 대칭시키며 종이 위에 올린 후, 가장 큰 수들의 합을 찾는 것이므로 * 한 칸을 정한 후, 이 위치에서 상하좌우로 탐색하며 테트로미노의 크기인 4만큼이 되었을 때 수를 갱신하도록 함 * 이때 보라색 테트로미노를 제외하고 나머지 테트로미노는 상하좌우 탐색을 통해 만들 수 있지만 * 보라색 테트로미노는 탐색 시 2번째 칸에서 3번째 칸으로 이동하는 것이 아니라 2번째 칸에서 다시 한 번 탐색을 하도록 함 * * 파란색 : 우우우 (좌좌좌, 하하하, 상상상 ...) * 노란색 : 하우상 (우하좌, 상우하, 좌하우 ...) * 주황색 : 하하우 (우우상, 우우하, 좌좌하, 좌좌상, 상상좌,..

Coding Test/Java 알고리즘 실전

[21315] 카드 섞기

✔ 카드 섞기[백준 212315]코드 구현하기/* * 문제 분석하기 * : 초기 상태부터 시작해 K가 될 수 있는 수를 두 개 뽑아 완전 탐색하여 알맞는 K를 찾도록 함 * 예) 초기 상태 -> 1 2 3 4 5 * 4개의 카드를 더미의 맨 위에 올림 -> 2 3 4 5 1 * 2 4, 5, 2, 3, 1 * i = 3일 때, 직전에 맨 위에 올린 카드(4, 5) 중에서 밑에서 1개의 카드 더미를 맨 위에 올림 -> 5, 4, 2, 3, 1 *//* * 손으로 풀어보기 * 1. K가 될 두 수를 뽑도록 함 * 2. K에 따라 2번의 (2, K) 섞기를 하여 결과를 찾도록 함 * 2^K개의 카드를 더미의 맨 위에 올린 후, 그 중에서 2^(K - i + 1)개의 카드를 더미의 ..

Coding Test/Java 알고리즘 실전

[16235] 나무 재테크

✔ 나무 재테크[백준 16235]코드 구현하기/* * 문제 분석하기 * : K번 동안 사계절의 나무 재테크를 하도록 한 후 살아있는 나무의 개수를 구하도록 함 * *//* * 손으로 풀어보기 * 1. 각 칸에 추가되는 양분의 양을 저장 * 2. 처음 칸의 양분을 5로 시작하도록 저장 * 3. 상도가 심은 나무의 정보를 저장 * 4. 나무가 자신의 나이만큼 양분을 먹고, 나이를 1 증가시키도록 함 * 이때 하나의 칸에 여러 개의 나무가 있다면, 나이가 어린 나무부터 양분을 먹고 * 양분이 부족해 자신의 나이만큼 먹을 수 없다면 이 나무를 죽인 후, 나이를 2로 나눈 값을 양분으로 만들도록 함 * 5. 존재하는 나무의 나이가 5의 배수라면 인접한 8개의 칸에 나이가 1인 나무를 생성 * 6..

Coding Test/Java 알고리즘 실전

[18430] 무기 공학

✔ 무기 공학[백준 18430]코드 구현하기/* * 문제 분석하기 * : 나무의 재료에 따라 부메랑을 만들 수 있는 조합을 모두 찾은 후, 부메랑들의 강도의 합의 최댓값을 찾도록 함 * *//* * 손으로 풀어보기 * 1. 부메랑의 중심이 될 좌표를 하나 선정하여 하나의 부메랑을 만들어 부메랑의 강도의 합을 구함 * 2. 만들어진 부메랑을 기준으로 만들 수 있는 부메랑 조합(┑, ┙, ┕, ┍, 만들지 않음)을 계속해서 만들어나가 부메랑들의 강도의 합에 더해주도록 함 * 3. 이를 반복하여 만들어질 수 있는 부메랑들의 조합에 따른 부메랑들의 강도의 합의 최댓값을 찾아 출력 *//* * 18430) 무기_공학 */public class Main { static BufferedReader br..

Coding Test/Java 알고리즘 실전

[16236] 아기 상어

✔ 아기 상어[백준 16236]코드 구현하기/* * 문제 분석하기 * : 아기상어의 상하좌우를 확인하며 물고기를 먹으러 가도록 함 * 이때 자신보다 작은 물고기가 있다면 이를 먹고, 같다면 지나가고, 크면 지나갈 수 없음 * 이를 반복하며 아기상어가 더 이상 먹을 수 있는 물고기가 없다면 멈추도록 함 * *//* * 손으로 풀어보기 * 1. 아기상어의 상하좌우를 확인하며 먹을 수 있는 물고기가 1마리 이상 있는지 확인 * 먹을 수 있는 물고기는 자신보다 크기가 작은 물고기이며, 이동 시 자신과 같다면 지나갈 수 있고 자신보다 크다면 지나갈 수 없음 * 이때 물고기가 1마리라면 이 물고기를 먹으러 가고, * 그렇지 않다면 거리가 가장 가까운 물고기/거리가 가까운 물고기 많다..

Coding Test/Java 알고리즘 실전

[17140] 이차원 배열과 연산

✔ 이차원 배열과 연산[백준 17140]코드 구현하기/* * 문제 분석하기 * : 행의 개수와 열의 개수의 크기에 따라 R 연산과 C 연산을 반복하여 A[r][c]에 들어있는 값이 k가 되도록 함 * 예) [3, 1, 1] * 3이 1번, 1이 2번 등장하므로 등장 횟수가 커지는 순으로 정렬해야 하므로 [3, 1, 1, 2] * *//* * 손으로 풀어보기 * 1. 행의 개수가 열의 개수보다 많거나 같다면 R 연산을 수행, 그렇지 않다면 C 연산을 수행 * 2. 수의 등장 횟수가 커지는 순으로 정렬. 같은 것이 있을 경우, 수가 커지는 순으로 정렬 * 이 정렬 결과(수, 등장 횟수)를 배열 A에 다시 넣도록 함 * 이를 위해 한 행(열)에 해당하는 수와 그 수의 등장 횟수를 찾고..

Coding Test/Java 알고리즘 실전

[15685] 드래곤 커브

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

Coding Test/Java 알고리즘 실전

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

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

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