본문 바로가기

Algorithm Test

최솟값 만들기 [문제 설명] 길이가 같은 배열 A, B 두개가 있습니다. 각 배열은 자연수로 이루어져 있습니다. 배열 A, B에서 각각 한 개의 숫자를 뽑아 두 수를 곱합니다. 이러한 과정을 배열의 길이만큼 반복하며, 두 수를 곱한 값을 누적하여 더합니다. 이때 최종적으로 누적된 값이 최소가 되도록 만드는 것이 목표입니다. (단, 각 배열에서 k번째 숫자를 뽑았다면 다음에 k번째 숫자는 다시 뽑을 수 없습니다.) 예를 들어 A = [1, 4, 2] , B = [5, 4, 4] 라면 A에서 첫번째 숫자인 1, B에서 첫번째 숫자인 5를 뽑아 곱하여 더합니다. (누적된 값 : 0 + 5(1x5) = 5) A에서 두번째 숫자인 4, B에서 세번째 숫자인 4를 뽑아 곱하여 더합니다. (누적된 값 : 5 + 16(4x4) = .. 더보기
멀쩡한 사각형 [문제] 가로 길이가 Wcm, 세로 길이가 Hcm인 직사각형 종이가 있습니다. 종이에는 가로, 세로 방향과 평행하게 격자 형태로 선이 그어져 있으며, 모든 격자칸은 1cm x 1cm 크기입니다. 이 종이를 격자 선을 따라 1cm × 1cm의 정사각형으로 잘라 사용할 예정이었는데, 누군가가 이 종이를 대각선 꼭지점 2개를 잇는 방향으로 잘라 놓았습니다. 그러므로 현재 직사각형 종이는 크기가 같은 직각삼각형 2개로 나누어진 상태입니다. 새로운 종이를 구할 수 없는 상태이기 때문에, 이 종이에서 원래 종이의 가로, 세로 방향과 평행하게 1cm × 1cm로 잘라 사용할 수 있는 만큼만 사용하기로 하였습니다. 가로의 길이 W와 세로의 길이 H가 주어질 때, 사용할 수 있는 정사각형의 개수를 구하는 solution.. 더보기
포켓몬 선택 [문제 설명] 당신은 폰켓몬을 잡기 위한 오랜 여행 끝에, 홍 박사님의 연구실에 도착했습니다. 홍 박사님은 당신에게 자신의 연구실에 있는 총 N 마리의 폰켓몬 중에서 N/2마리를 가져가도 좋다고 했습니다. 홍 박사님 연구실의 폰켓몬은 종류에 따라 번호를 붙여 구분합니다. 따라서 같은 종류의 폰켓몬은 같은 번호를 가지고 있습니다. 예를 들어 연구실에 총 4마리의 폰켓몬이 있고, 각 폰켓몬의 종류 번호가 [3번, 1번, 2번, 3번]이라면 이는 3번 폰켓몬 두 마리, 1번 폰켓몬 한 마리, 2번 폰켓몬 한 마리가 있음을 나타냅니다. 이때, 4마리의 폰켓몬 중 2마리를 고르는 방법은 다음과 같이 6가지가 있습니다. 첫 번째(3번), 두 번째(1번) 폰켓몬을 선택 첫 번째(3번), 세 번째(2번) 폰켓몬을 선택.. 더보기
기능개발 [문제 설명] 프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 기능보다 먼저 개발될 수 있고, 이때 뒤에 있는 기능은 앞에 있는 기능이 배포될 때 함께 배포됩니다. 먼저 배포되어야 하는 순서대로 작업의 진도가 적힌 정수 배열 progresses와 각 작업의 개발 속도가 적힌 정수 배열 speeds가 주어질 때 각 배포마다 몇 개의 기능이 배포되는지를 return 하도록 solution 함수를 완성하세요. [제한사항] 작업의 개수(progresses, speeds배열의 길이)는 100개 이하입니다. 작업 진도는 100 미만의 자연수입니다. 작업 속도는 100 이하.. 더보기
리눅스 쉘 명령어 [문제 설명] 리눅스의 쉘 명령어가 하는 일을 유사하게 따라 하는 프로그램을 작성하려고 합니다. 다음 세 가지 명령어가 동작하도록 프로그램을 작성해주세요. 1. 이름 mkdir 사용 방법 mkdir directory 설명 특정 위치에 디렉토리를 생성합니다. 2. 이름 rm 사용 방법 rm directory 설명 특정 디렉토리를 삭제합니다. 삭제한 디렉토리의 하위 디렉토리를 또한 함께 삭제됩니다. 3. 이름 cp 사용 방법 cp source dest 설명 source 디렉토리를 dest로 복사합니다. source 디렉토리의 하위 디렉토리들 또한 복사되어야 합니다. 위 명령을 수행할 시스템에는 오직 디렉토리만 존재하며, 최상위 디렉토리는 "/"로 표시하고 그 하위 디렉토리는 "/root", "/usr", ".. 더보기
재정렬 배열 반환 [문제 설명] 길이가 n인 정수 배열 arr가 주어집니다. arr를 다음과 같은 과정을 거쳐서 섞은 결과를 return 하도록 solution 함수를 완성해주세요. arr의 길이가 1이라면, arr를 그냥 그대로 두고 과정을 종료합니다. arr를 앞뒤로 뒤집습니다. 만약 arr의 길이가 짝수(2k)라면, 앞뒤로 길이가 k, k인 두 배열로 나눕니다. 만약 arr의 길이가 홀수(2k+1)라면, 앞뒤로 길이가 k+1, k인 두 배열로 나눕니다. 두 배열에 대해 이 과정을 다시 반복한 뒤, 다시 이어 붙입니다. [제한사항] 1 0) { arr.push(secondHalf); } } if (arr.length === GIVENARRAYLENGTH) done = true; } else { const half = .. 더보기
입출금 response code 반환 [문제 설명] [제한사항] reqs의 길이는 1 이상 100,000 이하입니다. reqs의 원소는 명령어 계좌아이디 숫자 형식입니다. 명령어는 CREATE, DEPOSIT, WITHDRAW 중 하나입니다. 계좌아이디 는 영문 소문자와 숫자로 구성된, 길이 1 이상 30 이하인 문자열입니다. 숫자는 1 이상 1,000,000 이하인 자연수입니다. [입출력 예] reqs result ["DEPOSIT 3a 10000", "CREATE 3a 300000", "WITHDRAW 3a 150000", "WITHDRAW 3a 150001"] [404,200,200,403] ["CREATE 3a 10000", "CREATE 3a 20000", "CREATE 2bw 30000"] [200,403,200] [입출력 예 설.. 더보기
신규 아이디 추천 [문제 설명] 카카오에 입사한 신입 개발자 네오는 "카카오계정개발팀"에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. "네오"에게 주어진 첫 업무는 새로 가입하는 유저들이 카카오 아이디 규칙에 맞지 않는 아이디를 입력했을 때, 입력된 아이디와 유사하면서 규칙에 맞는 아이디를 추천해주는 프로그램을 개발하는 것입니다. 다음은 카카오 아이디의 규칙입니다. 아이디의 길이는 3자 이상 15자 이하여야 합니다. 아이디는 알파벳 소문자, 숫자, 빼기(-), 밑줄(_), 마침표(.) 문자만 사용할 수 있습니다. 단, 마침표(.)는 처음과 끝에 사용할 수 없으며 또한 연속으로 사용할 수 없습니다. "네오"는 다음과 같이 7단계의 순차적인 처리 과정을 통해 신규 유저가 입력한 .. 더보기