본문 바로가기

STUDY

(36)
프로그래머스 - 탑 ▶ 문제 설명 [ 문제 ] 수평 직선에 탑 N대를 세웠습니다. 모든 탑의 꼭대기에는 신호를 송/수신하는 장치를 설치했습니다. 발사한 신호는 신호를 보낸 탑보다 높은 탑에서만 수신합니다. 또한, 한 번 수신된 신호는 다른 탑으로 송신되지 않습니다. 예를 들어 높이가 6, 9, 5, 7, 4인 다섯 탑이 왼쪽으로 동시에 레이저 신호를 발사합니다. 그러면, 탑은 다음과 같이 신호를 주고받습니다. 높이가 4인 다섯 번째 탑에서 발사한 신호는 높이가 7인 네 번째 탑이 수신하고, 높이가 7인 네 번째 탑의 신호는 높이가 9인 두 번째 탑이, 높이가 5인 세 번째 탑의 신호도 높이가 9인 두 번째 탑이 수신합니다. 높이가 9인 두 번째 탑과 높이가 6인 첫 번째 탑이 보낸 레이저 신호는 어떤 탑에서도 수신할 수 없..
프로그래머스 - 124 나라의 숫자 ▶ 문제 설명 [ 문제 ] 124 나라가 있습니다. 124 나라에서는 10진법이 아닌 다음과 같은 자신들만의 규칙으로 수를 표현합니다. 124 나라에는 자연수만 존재합니다. 124 나라에는 모든 수를 표현할 때 1, 2, 4만 사용합니다. [ 예시 ] 예를 들어서 124 나라에서 사용하는 숫자는 다음과 같이 변환됩니다. 10진법 124 나라 10진법 124 나라 1 1 6 14 2 2 7 21 3 4 8 22 4 11 9 24 5 12 10 41 자연수 n이 매개변수로 주어질 때, n을 124 나라에서 사용하는 숫자로 바꾼 값을 return 하도록 solution 함수를 완성해 주세요. [ 제한사항 ] n은 500,000,000이하의 자연수 입니다. ▶ 풀이 처음에는 3진수와 비슷하게생각하면 되겠지 하고..
프로그래머스 - K번째 수 ▶ 문제 설명 [ 문제 ] 배열 array의 i번째 숫자부터 j번째 숫자까지 자르고 정렬했을 때, k번째에 있는 수를 구하려 합니다. 예를 들어 array가 [1, 5, 2, 6, 3, 7, 4], i = 2, j = 5, k = 3이라면 array의 2번째부터 5번째까지 자르면 [5, 2, 6, 3]입니다. 1에서 나온 배열을 정렬하면 [2, 3, 5, 6]입니다. 2에서 나온 배열의 3번째 숫자는 5입니다. 배열 array, [i, j, k]를 원소로 가진 2차원 배열 commands가 매개변수로 주어질 때, commands의 모든 원소에 대해 앞서 설명한 연산을 적용했을 때 나온 결과를 배열에 담아 return 하도록 solution 함수를 작성해주세요. 제한사항 array의 길이는 1 이상 100..
프로그래머스 - 모의고사 ▶ 문제 설명 [ 문제 ] 수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는 방식: 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, ... 2번 수포자가 찍는 방식: 2, 1, 2, 3, 2, 4, 2, 5, 2, 1, 2, 3, 2, 4, 2, 5, ... 3번 수포자가 찍는 방식: 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, ... 1번 문제부터 마지막 문제까지의 정답이 순서대로 들은 배열 answers가 주어졌을 때, 가장 많은 문제를 맞힌 사람이 누구인지 배열에 담아 return 하도록 solut..
프로그래머스-완주하지 못한 선수 ▶ 문제 설명 [ 문제 ] 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수들의 이름이 담긴 배열 completion이 주어질 때, 완주하지 못한 선수의 이름을 return 하도록 solution 함수를 작성해주세요. [ 제한 조건 ] 마라톤 경기에 참여한 선수의 수는 1명 이상 100,000명 이하입니다. completion의 길이는 participant의 길이보다 1 작습니다. 참가자의 이름은 1개 이상 20개 이하의 알파벳 소문자로 이루어져 있습니다. 참가자 중에는 동명이인이 있을 수 있습니다. [ 입출력 예 ] participant completion r..
스마트포인터 shared_ptr 구현하기 (1) 오늘부터 여러번에 걸쳐 스마트 포인터 중에서도 shared_ptr에 대해서 자세하게 다뤄볼 예정입니다. shared_ptr을 직접 구현할 작업이 있어 해보다 재미있는 내용이 많아 포스팅 해 보려고 합니다. [ shared_ptr ? ] shared_ptr에 관한 설명을 cpp reference에서 가져온 내용입니다. 이런식으로 설명이 되어 있습니다. std::shared_ptr은 포인터를 통하여 object의 공유된 소유권을 유지합니다. 여러 shared_ptr object는 같은 object를 가지고 있습니다. 그리고 그 오브젝트는 다음이 일어날 때 파괴가 됩니다. - 오브젝트의 소유권을 가진 마지막 shared_ptr 이 삭제될 때. - 오브젝트의 소유권을 가진 마지막 shared_ptr이 다른 포인..
프로그래머스 - 크레인 인형뽑기 게임 이제 코딩 테스트에 나올법한 긴 문제를 풀기 시작했습니다. 하루에 알고리즘 한개를 풀되, 알고리즘 한개를 저의 단점을 파악하며 문제를 여러번 풀어 보는것을 목표로 삼았습니다. 오늘은 카카오 개발자 채용 문제를 풀어 보았습니다 :) ▶ 문제 설명 [ 문제 ] 게임개발자인 죠르디는 크레인 인형뽑기 기계를 모바일 게임으로 만들려고 합니다. 죠르디는 게임의 재미를 높이기 위해 화면 구성과 규칙을 다음과 같이 게임 로직에 반영하려고 합니다. [ 제한 조건 ] board 배열은 2차원 배열로 크기는 5 x 5 이상 30 x 30 이하입니다. board의 각 칸에는 0 이상 100 이하인 정수가 담겨있습니다. 0은 빈 칸을 나타냅니다. 1 ~ 100의 각 숫자는 각기 다른 인형의 모양을 의미하며 같은 숫자는 같은 모..
프로그래머스 - 자연수 inverse 배열 만들기 프로그래머스로 알고리즘 공부를 다시 시작해 보려고 합니다. 오늘은 스킬테스트를 했는데요 ! 너~무 오랫동안 알고리즘을 안풀다보니 쉬운 문제도 너무 어렵게 느껴져서 일단 레벨1에 대한 스킬테스트를 먼저 진행했습니다. 오늘 처음으로 푼 문제는 초심으로 돌아가서.... 너~무 기본적이면서도 중요한 자연수 받은 후 inverse 배열만들기입니다. 문제입니다. for문을 돌며 vector에 넣어주면 되는 아주 쉬운 문제입니다. 제가 푼 해답입니다. vector solution(long long n) // "12345" { vector answer; long long copy = n; int seed = 10; while (0 != (copy / seed)) { int left = copy % seed; answe..