01 당장 좋은 것만 선택하는 그리디 02 아이디어를 코드로 바꾸는 구현 03 꼭 필요한 자료구조 탐색 알고리즘 DFS/BFS 04 기준에 따라 데이터를 정렬 05 범위를 반씩 좁혀가는 탐색 06 다이나믹 프로그래밍 07 가장 빠른 길 찾기 08 다양한 그래프 알고리즘 [문제] 슈퍼 게임 개발자 오렐리는 큰 고민에 빠졌다. 그녀가 만든 프랜즈 오천성이 대성공을 거뒀지만, 요즘 신규 사용자의 수가 급감한 것이다. 원인은 신규 사용자와 기존 사용자 사이에 스테이지 차이가 너무 큰 것이 문제였다. 이 문제를 어떻게 할까 고민 한 그녀는 동적으로 게임 시간을 늘려서 난이도를 조절하기로 했다. 역시 슈퍼 개발자라 대부분의 로직은 쉽게 구현했지만, 실패율을 구하는 부분에서 위기에 빠지고 말았다. 오렐리를 위해 실패..
01 당장 좋은 것만 선택하는 그리디 02 아이디어를 코드로 바꾸는 구현 03 꼭 필요한 자료구조 탐색 알고리즘 DFS/BFS 04 기준에 따라 데이터를 정렬 05 범위를 반씩 좁혀가는 탐색 06 다이나믹 프로그래밍 07 가장 빠른 길 찾기 08 다양한 그래프 알고리즘 [문제] 일직선 상의 마을에 여러 채의 집이 위치해 있다. 이중에서 특정 위치의 집에 특별히 한 개의 안테나를 설치하기로 결정했다. 효율성을 위해 안테나로부터 모든 집까지의 거리의 총 합이 최소가 되도록 설치하려고 한다. 이 때 안테나는 집이 위치한 곳에만 설치할 수 있고, 논리적으로 동일한 위치에 여러 개의 집이 존재하는 것이 가능하다. 집들의 위치 값이 주어질 때, 안테나를 설치할 위치를 선택하는 프로그램을 작성하시오. 예를 들어 N=..
01 당장 좋은 것만 선택하는 그리디 02 아이디어를 코드로 바꾸는 구현 03 꼭 필요한 자료구조 탐색 알고리즘 DFS/BFS 04 기준에 따라 데이터를 정렬 05 범위를 반씩 좁혀가는 탐색 06 다이나믹 프로그래밍 07 가장 빠른 길 찾기 08 다양한 그래프 알고리즘 [문제] 도현이네 반 학생 N명의 이름과 국어, 영어, 수학 점수가 주어진다. 이때, 다음과 같은 조건으로 학생의 성적을 정렬하는 프로그램을 작성하시오. 국어 점수가 감소하는 순서로 국어 점수가 같으면 영어 점수가 증가하는 순서로 국어 점수와 영어 점수가 같으면 수학 점수가 감소하는 순서로 모든 점수가 같으면 이름이 사전 순으로 증가하는 순서로 (단, 아스키 코드에서 대문자는 소문자보다 작으므로 사전순으로 앞에 온다.) [입력 조건] 첫째..
01 당장 좋은 것만 선택하는 그리디 02 아이디어를 코드로 바꾸는 구현 03 꼭 필요한 자료구조 탐색 알고리즘 DFS/BFS 04 기준에 따라 데이터를 정렬 05 범위를 반씩 좁혀가는 탐색 06 다이나믹 프로그래밍 07 가장 빠른 길 찾기 08 다양한 그래프 알고리즘 [문제] 동빈이는 두 개의 배열 A와 B를 가지고 있다. 두 배열은 N개의 원소로 구성되어 있으며, 배열의 원소는 모두 자연수이다. 동빈이는 최대 K 번의 바꿔치기 연산을 수행할 수 있는데, 바꿔치기 연산이란 배열 A에 있는 원소 하나와 배열 B에 있는 원소 하나를 골라서 두 원소를 서로 바꾸는 것을 말한다. 동빈이의 최종 목표는 배열 A의 모든 원소의 합이 최대가 되도록 하는 것이며, 여러분은 동빈이를 도와야한다. N, K, 그리고 배열..
01 당장 좋은 것만 선택하는 그리디 02 아이디어를 코드로 바꾸는 구현 03 꼭 필요한 자료구조 탐색 알고리즘 DFS/BFS 04 기준에 따라 데이터를 정렬 05 범위를 반씩 좁혀가는 탐색 06 다이나믹 프로그래밍 07 가장 빠른 길 찾기 08 다양한 그래프 알고리즘 [문제] N명의 학생 정보가 있다. 학생 정보는 학생의 이름과 학생의 성적으로 구분된다. 각 학생의 이름과 성적 정보가 주어졌을 때 성적이 낮은 순서대로 학생의 이름을 출력하는 프로그램을 작성하시오. [입력 조건] 첫 번째 줄에 학생의 수 N이 입력된다. (1
01 당장 좋은 것만 선택하는 그리디 02 아이디어를 코드로 바꾸는 구현 03 꼭 필요한 자료구조 탐색 알고리즘 DFS/BFS 04 기준에 따라 데이터를 정렬 05 범위를 반씩 좁혀가는 탐색 06 다이나믹 프로그래밍 07 가장 빠른 길 찾기 08 다양한 그래프 알고리즘 [문제] 하나의 수열에는 다양한 수가 존재한다. 이러한 수는 크기에 상관없이 나열되어 있다. 이 수를 큰 수부터 작은 수의 순서로 정렬해야 한다. 수열을 내림차순으로 정렬하는 프로그램을 만드시오. [입력 조건] 첫째 줄에 수열에 속해 있는 수의 개수 N이 주어진다. 이때 범위는 1
01 당장 좋은 것만 선택하는 그리디 02 아이디어를 코드로 바꾸는 구현 03 꼭 필요한 자료구조 탐색 알고리즘 DFS/BFS 04 기준에 따라 데이터를 정렬 05 범위를 반씩 좁혀가는 탐색 06 다이나믹 프로그래밍 07 가장 빠른 길 찾기 08 다양한 그래프 알고리즘 [문제] 로봇개발자 "무지" 는 한 달 앞으로 다가온 "카카오배 로봇경진대회"에 출품할 로봇을 준비하고 있습니다. 준비 중인 로봇은 2 x 1 크기의 로봇으로 "무지"는 "0" 과 "1" 로 이루어진 N x N 크기의 지도에서 2 x 1 크기인 로봇을 움직여 (N, N) 위치까지 이동 할 수 있도록 프로그래밍을 하려고 합니다. 로봇이 이동하는 지도는 가장 왼쪽, 상단의 좌표를 (1, 1) 로 하며 지도 내에 표시된 숫자 "0"은 빈칸을 "..
01 당장 좋은 것만 선택하는 그리디 02 아이디어를 코드로 바꾸는 구현 03 꼭 필요한 자료구조 탐색 알고리즘 DFS/BFS 04 기준에 따라 데이터를 정렬 05 범위를 반씩 좁혀가는 탐색 06 다이나믹 프로그래밍 07 가장 빠른 길 찾기 08 다양한 그래프 알고리즘 [문제] N×N크기의 땅이 있고, 땅은 1×1개의 칸으로 나누어져 있다. 각각의 땅에는 나라가 하나씩 존재하며, r행 c열에 있는 나라에는 A[r][c]명이 살고 있다. 인접한 나라 사이에는 국경선이 존재한다. 모든 나라는 1×1 크기이기 때문에, 모든 국경선은 정사각형 형태이다. 오늘부터 인구 이동이 시작되는 날이다. 인구 이동은 하루 동안 다음과 같이 진행되고, 더 이상 아래 방법에 의해 인구 이동이 없을 때까지 지속된다. 국경선을 공..
01 당장 좋은 것만 선택하는 그리디 02 아이디어를 코드로 바꾸는 구현 03 꼭 필요한 자료구조 탐색 알고리즘 DFS/BFS 04 기준에 따라 데이터를 정렬 05 범위를 반씩 좁혀가는 탐색 06 다이나믹 프로그래밍 07 가장 빠른 길 찾기 08 다양한 그래프 알고리즘 [문제] NxN 크기의 복도가 있다. 복도는 1x1 크기의 칸으로 나누어지며, 특정한 위치에는 선생님, 학생, 혹은 장애물이 위치할 수 있다. 현재 몇 명의 학생들은 수업시간에 몰래 복도로 빠져나왔는데, 복도로 빠져나온 학생들은 선생님의 감시에 들키지 않는 것이 목표이다. 각 선생님들은 자신의 위치에서 상, 하, 좌, 우 4가지 방향으로 감시를 진행한다. 단, 복도에 장애물이 위치한 경우, 선생님은 장애물 뒤편에 숨어 있는 학생들은 볼 수..
01 당장 좋은 것만 선택하는 그리디 02 아이디어를 코드로 바꾸는 구현 03 꼭 필요한 자료구조 탐색 알고리즘 DFS/BFS 04 기준에 따라 데이터를 정렬 05 범위를 반씩 좁혀가는 탐색 06 다이나믹 프로그래밍 07 가장 빠른 길 찾기 08 다양한 그래프 알고리즘 [문제] N개의 수로 이루어진 수열 A1, A2, ..., AN이 주어진다. 또, 수와 수 사이에 끼워넣을 수 있는 N-1개의 연산자가 주어진다. 연산자는 덧셈(+), 뺄셈(-), 곱셈(×), 나눗셈(÷)으로만 이루어져 있다. 우리는 수와 수 사이에 연산자를 하나씩 넣어서, 수식을 하나 만들 수 있다. 이때, 주어진 수의 순서를 바꾸면 안 된다. 예를 들어, 6개의 수로 이루어진 수열이 1, 2, 3, 4, 5, 6이고, 주어진 연산자가 ..