문제설명정수로 이루어진 배열 numbers가 있습니다. 배열 의 각 원소들에 대해 자신보다 뒤에 있는 숫자 중에서 자신보다 크면서 가장 가까이 있는 수를 뒷 큰수라고 합니다.정수 배열 numbers가 매개변수로 주어질 때, 모든 원소에 대한 뒷 큰수들을 차례로 담은 배열을 return 하도록 solution 함수를 완성해주세요. 단, 뒷 큰수가 존재하지 않는 원소는 -1을 담습니다. 제한사항4 ≤ numbers의 길이 ≤ 1,000,0001 ≤ numbers[i] ≤ 1,000,000 문제풀이일단 이 문제는 프로그래밍 개념 중 하나인 자료구조를 공부하는 사람들에게매우 도움이 될 문제이다. 문제 풀이를 나아가기 전, 해당 문제의 시간복잡도를 보고 어떠한 자료구조를 활용할지 대강 생각해보자numbers의 ..
유형 설명코딩테스트에서 구현이란, 머릿속에 있는 알고리즘을 소스코드로 바꾸는 과정이다.추상적인 설명과 같이, 모든 범위의 코딩 테스트 문제 유형을 포함한다.대부분의 구현 문제는 풀이를 떠올리기는 쉽지만, 소스코드로 옮기는 과정이 어려운 문제를 의미한다.(문제의 알고리즘의 설계를 했음에도, 구현은 먼저 풀 수 있는 문제가 없을 때 마지막으로 푸는 것이 좋다.) 구현 문제의 경우, 사소한 조건이 많을수록 어려운 문제로 평가된다.(간단한 알고리즘에 비해 코드가 길어지는 경우, 특정 소수점 자리까지 출력해야되는 경우, 문자열을 문자 단위로 파싱해야되는 경우 등...) 대부분 구현 문제는 언어의 문법을 잘 이해하고, 다양한 활용 경험이 동반되어야 비로소 체감 난이도가 내려간다.따라서, 많이 경험하고 이해하고 있어..
그리디 알고리즘 : 현 상황에서 가장 좋은 것들만 고르는 방법 (탐욕 알고리즘이라고도 불린다.) 그리디 알고리즘의 특징매 순간 가장 좋은 (점수가 높은) 것만을 선택하며 현재 선택이 미래에 미칠 영향은 고려하지 않는다. (근시안적 선택)사전에 알고리즘을 숙지하지 않아도 해결할 수 있는 문제 유형이다.기준에 따라 좋은 것을 선택하는 알고리즘이기에, 문제에서 '가장 큰 순서대로', '가장 작은 순서대로'와 같은 기준이 함께 포함되며, 따라서 그리디 알고리즘 문제는 자주 정렬 알고리즘과 함께 출제되는 경향이 있다.최적의 해를 찾는 것에 기반하여 최적화 문제를 해결하기 위한 알고리즘으로 불린다. 주로 그리디 알고리즘 유형의 문제는 창의력, 즉, 문제를 풀기 위한 최소한의 아이디어를 떠올릴 수 있는 능력을 요구한..
PCCP 기출문제 2번 - 퍼즐 게임 챌린지문제설명 본 문제는 난이도와 해결 시간이 주어진 퍼즐들을제한 시간내에 해결할 수 있는 최소 숙련도 (level)을 구하는 문제이다.여기 level이란, 퍼즐의 난이도와 같은 의미로 보면 된다. 본 문제의 입력은 총 3가지이다. 문제의 난이도를 갖고 있는 배열 diffs각 문제를 해결하는 데에 걸리는 시간들의 배열 times문제 해결을 위한 제한시간 limit 각 변수들 사이의 상관관계는 문제를 해결하는 시간에 있다. 문제를 해결하는 시간을 구하는 방법은 아래와 같다. level 보다 난이도가 높은 문제에 대해선, diff - level 만큼 실수하게 된다.이 때, 각 실수는 (이전 퍼즐의 시간 + 현재 퍼즐의 해결 시간) 만큼의 시간이 추가 소요되며실수 후에 ..
문제 설명당신은 동영상 재생기를 만들고 있습니다. 당신의 동영상 재생기는 10초 전으로 이동, 10초 후로 이동, 오프닝 건너뛰기 3가지 기능을 지원합니다. 각 기능이 수행하는 작업은 다음과 같습니다.10초 전으로 이동: 사용자가 "prev" 명령을 입력할 경우 동영상의 재생 위치를 현재 위치에서 10초 전으로 이동합니다. 현재 위치가 10초 미만인 경우 영상의 처음 위치로 이동합니다. 영상의 처음 위치는 0분 0초입니다.10초 후로 이동: 사용자가 "next" 명령을 입력할 경우 동영상의 재생 위치를 현재 위치에서 10초 후로 이동합니다. 동영상의 남은 시간이 10초 미만일 경우 영상의 마지막 위치로 이동합니다. 영상의 마지막 위치는 동영상의 길이와 같습니다.오프닝 건너뛰기: 현재 재생 위치가 오프닝 ..
문제해설문제에서 0은 가장 앞에 오면 안된다. 그렇다면, 하나만 고려해주면된다. 0번 방의 가격이 가장 작을 때와 그렇지 않을 때. 즉 0~N 번 방에서의 최소 가격과 1~N 번 방의 최소 가격을 따로 구해준다.1~N번 방에서 현재 자금으로 구매가 안되면, 답은 0이다. (0은 맨 앞에 올 수 없기 때문에) 들어가기에 앞서서 원래의 값을 저장해둘 배열과 방의 가격이 낮은 순서대로 배치될 수 있는 우선순위큐(pair)를 준비한다.문제 푸는 방법을 순서대로 나열한다면, 문제의 입력값을 받는다. 우선순위큐와 배열에 각각 받은 값을 넣어준다.우선순위큐의 top()을 저장하고 방 번호를 확인방 번호가 0일 경우에, 우선순위 큐를 pop()하고, 다음 순위의 정보를 받아서 이를 정답 배열에 저장한다. 그리고 0..