반응형

코딩테스트 50

12100번 - 2048 (Easy)

1. 문제 정의 2048 게임은 4×4 크기의 보드에서 혼자 즐기는 재미있는 게임이다. 이 링크를 누르면 게임을 해볼 수 있다. 이 게임에서 한 번의 이동은 보드 위에 있는 전체 블록을 상하좌우 네 방향 중 하나로 이동시키는 것이다. 이때, 같은 값을 갖는 두 블록이 충돌하면 두 블록은 하나로 합쳐지게 된다. 한 번의 이동에서 이미 합쳐진 블록은 또 다른 블록과 다시 합쳐질 수 없다. (실제 게임에서는 이동을 한 번 할 때마다 블록이 추가되지만, 이 문제에서 블록이 추가되는 경우는 없다) 의 경우에서 위로 블록을 이동시키면 의 상태가 된다. 여기서, 왼쪽으로 블록을 이동시키면 의 상태가 된다. 의 상태에서 블록을 오른쪽으로 이동시키면 가 되고, 여기서 다시 위로 블록을 이동시키면 이 된다. 여기서 오른쪽..

13460번 - 구슬 탈출 2

1. 문제 정의 스타트링크에서 판매하는 어린이용 장난감 중에서 가장 인기가 많은 제품은 구슬 탈출이다. 구슬 탈출은 직사각형 보드에 빨간 구슬과 파란 구슬을 하나씩 넣은 다음, 빨간 구슬을 구멍을 통해 빼내는 게임이다. 보드의 세로 크기는 N, 가로 크기는 M이고, 편의상 1×1크기의 칸으로 나누어져 있다. 가장 바깥 행과 열은 모두 막혀져 있고, 보드에는 구멍이 하나 있다. 빨간 구슬과 파란 구슬의 크기는 보드에서 1×1크기의 칸을 가득 채우는 사이즈이고, 각각 하나씩 들어가 있다. 게임의 목표는 빨간 구슬을 구멍을 통해서 빼내는 것이다. 이때, 파란 구슬이 구멍에 들어가면 안 된다. 이때, 구슬을 손으로 건드릴 수는 없고, 중력을 이용해서 이리 저리 굴려야 한다. 왼쪽으로 기울이기, 오른쪽으로 기울이..

PCCP 모의고사 1회 - 운영체제

1. 문제 정의 2. 문제 접근 PriorityQueue를 써서 대기열에 넣었다가, 하나씩 꺼내서 실행시키면서 각 점수마다 대기시간을 갱신시켜 주면 된다. 3. 문제 풀이 1. Program Class 를 정의한다. 1.1 Comparable 인터페이스를 구현해 정렬 기준을 준다. 1.1.1. 점수가 같다면 호출 순서가 작은 것부터(오름차순) 1.1.2. 만약 점수가 다르다면 점수가 더 낮은 것 부터(오름차순) 2. 본 로직 실행 전에 program 입력 값을 정렬해 준다. 2.1 점수가 더 낮은 순서대로(오름차순) 3. 실행 순서대로 queue에 담고, 하나씩 실행시킨다. 4. 정답을 return 한다. 4. 코드 import java.util.*; class Solution { // score: 점수..

PCCP 모의고사 2회 - 보물 지도

1. 문제 정의 2. 문제 접근 bfs로 접근해서 풀면 될 것 같다. 3. 문제 풀이 1. 지도를 matrix로 표기한다. 2. hole의 위치를 matrix 위에 표기한다. 3. bfs를 돌면서 칸마다 최소 이동 횟수를 표기한다. 4. 정답을 return한다. 4. 코드 import java.util.*; class Solution { static int[][] dist, matrix; static boolean[][] visit; static int[][] dir = {{1, 0}, {0, 1}, {-1, 0}, {0, -1}}; static int N, M; static void bfs(int x, int y,int n, int m) { // (x, y)를 Q에 넣어주고, visit 표시와 dist..

PCCP 모의고사 2회 - 카페 확장

1. 문제 정의 2. 문제 접근 시간대 별로 사람이 몇명이 들어오는지를 계산해주면 될 것 같다. 시간 범위는 마지막 사람이 들어올 때를 마지막으로 더 이상 계산해 주지 않아도 된다. 그때가 들어오는 사람이 최대가 되는 시점이기 때문이다. 3. 문제 풀이 1. 마지막 사람이 들어오는 시점에 시간을 최대 시간으로 정의한다. 2. 최대 시간 만큼 사람수를 계산하는 배열을 정의한다. 3. 소요되는 시간을 정의한다. 4. for 문을 돌면서 order가 들어올 때 마다 people 배열을 갱신한다. 4. 정답을 return 해 준다. 4. 코드 // 누적합 원리 이용 import java.util.*; class Solution { public int solution(int[] menu, int[] order, ..

PCCP 모의고사 2회 - 신입사원 교육

1. 문제 정의 2. 문제 접근 PriorityQueue 를 이용하여 문제를 해결하면 될 것 같다. 3. 문제 풀이 1. PriorityQueue 에 사원들 능력치를 다 넣어준다. 2. for 문을 돌면서 2개를 빼내어 sum을 구한다. 3. 빼낸 만큼 다시 que에 넣어준다. 4. queue 를 하나씩 빼면서 정답에 더해준다. 5. 정답을 return 한다. 4. 코드 import java.util.*; class Solution { public int solution(int[] ability, int number) { int answer = 0; PriorityQueue pq = new PriorityQueue(); for(int x: ability){ pq.add(x); } for(int i = 0..

PCCP 모의고사 2회 - 실습형 로봇

1. 문제 정의 2. 문제 접근 명령어에 따라 움직여주는 함수만 잘 짜주면 될 것 같다. 3. 문제 풀이 1. x, y, dir 세가지 변수를 가지는 point class 를 정의한다. 2. for 문을 돌면서 명령어를 하나씩 실행한다. 3. 정답을 출력한다. 4. 코드 import java.util.*; class Solution { int[] dx = {0, 1, 0, -1}; int[] dy = {1, 0, -1, 0}; Point point; public void move(char command) { switch (command) { case 'R': point.dir = (point.dir + 1) % 4; break; case 'L': point.dir = (point.dir + 3) % 4;..

PCCP 모의고사 1회 - 유전법칙

1. 문제 정의 2. 문제 접근 계속해서 세대 수를 줄여가는 재귀함수를 짜주면 될 것 같다. 3. 문제 풀이 1. rec_fun 을 정의한다. 2. 세대 수를 계속 줄여가는 로직을 구현한다. 3. 부모가 RR 이거나 rr 일 경우 그대로 리턴해 준다. 4. 코드 import java.util.*; class Solution { public String rec_fun(int generation, int idx) { if(generation == 1) return "Rr"; String parent = rec_fun(generation-1, (idx-1)/4+1); if(parent.equals("RR") || parent.equals("rr")) return parent; int group = (idx-1..

PCCP 모의고사 1회 - 체육대회

1. 문제 정의 2. 문제 접근 한명에 한 능력치씩 골라 능력치의 최대 합산을 구하는 완전탐색으로 풀면 될 것 같다. 3. 문제 풀이 dfs를 정의한다. 원하는 횟수만큼 반복할때 마다 정답을 갱신한다. dfs가 끝나고 정답을 출력한다. 4. 코드 import java.util.*; class Solution { static int answer = 0; static int number_student, number_evnet; static boolean[] check_student; public void dfs(int k,int sum, int[][] ability) { if(k == number_evnet){ answer = Math.max(answer, sum); } else { for(int i = 0..

PCCP 모의고사 1회 - 외톨이 알파벳

1. 문제 정의 2. 문제 접근 문자열을 하나씩 떼어서 문자로 만든 후, for문을 돌면서 연속해서 중복되는지를 판별해주면 될 것 같다. 체크를 위해 문자를 key로 하는 map과 set을 써서 비교를 위한 객체 하나와 정답을 담을 객체 하나를 정의해서 문제를 풀이할 것이다. Set 은 요소의 저장 순서를 유지하지 않고, 같은 요소의 중복 저장을 허용하지 않는 특징이 있다. HashSet, TreeSet 등이 있으며, TreeSet은 위의 기능 + 오름차순 정렬이라는 특징까지 가지고 있어서 TreeSet으로 정답 객체를 구현하였다. 3. 문제풀이 문자를 담아줄 객체 Map 과 정답을 담아줄 객체 Set 을 정의한다. 입력 받은 String 을 Char 배열로 Casting 해준다. for문을 돌면서 조건..

반응형