프로그래머스 - 큰 수 만들기(c++, javascript)
·
IT/알고리즘
문제 설명 어떤 숫자에서 k개의 수를 제거했을 때 얻을 수 있는 가장 큰 숫자를 구하려 합니다. 예를 들어, 숫자 1924에서 수 두 개를 제거하면 [19, 12, 14, 92, 94, 24] 를 만들 수 있습니다. 이 중 가장 큰 숫자는 94 입니다. 문자열 형식으로 숫자 number와 제거할 수의 개수 k가 solution 함수의 매개변수로 주어집니다. number에서 k 개의 수를 제거했을 때 만들 수 있는 수 중 가장 큰 숫자를 문자열 형태로 return 하도록 solution 함수를 완성하세요. 제한 조건 number는 1자리 이상, 1,000,000자리 이하인 숫자입니다. k는 1 이상 number의 자릿수 미만인 자연수입니다. 입출력 예 출처 풀이 그리디 알고리즘 숫자를 앞에서부터 인접한 숫..
프로그래머스 - 더 맵게(c++)
·
IT/알고리즘
문제 설명 매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같이 특별한 방법으로 섞어 새로운 음식을 만듭니다. Leo는 모든 음식의 스코빌 지수가 K 이상이 될 때까지 반복하여 섞습니다. Leo가 가진 음식의 스코빌 지수를 담은 배열 scoville과 원하는 스코빌 지수 K가 주어질 때, 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 섞어야 하는 최소 횟수를 return 하도록 solution 함수를 작성해주세요. 제한 사항 scoville의 길이는 2 이상 1,000,000 이하입니다. K는 0 이상 1,000,000,000 이하입니다. scoville..
프로그래머스 - 조이스틱(c++, javascript)
·
IT/알고리즘
문제 설명 조이스틱으로 알파벳 이름을 완성하세요. 맨 처음엔 A로만 이루어져 있습니다. ex) 완성해야 하는 이름이 세 글자면 AAA, 네 글자면 AAAA 조이스틱을 각 방향으로 움직이면 아래와 같습니다. 예를 들어 아래의 방법으로 JAZ를 만들 수 있습니다. 만들고자 하는 이름 name이 매개변수로 주어질 때, 이름에 대해 조이스틱 조작 횟수의 최솟값을 return 하도록 solution 함수를 만드세요. 제한 사항 name은 알파벳 대문자로만 이루어져 있습니다. name의 길이는 1 이상 20 이하입니다. 입출력 예 출처 ※ 공지 - 2019년 2월 28일 테스트케이스가 추가되었습니다. 풀이 이 문제는 아래와 같은 테스트 케이스를 넣었을 때 BABAAAAAAAAAB 기댓값 >> 14 가 정답으로 나온..
프로그래머스 - 가장 큰 수(c++, javascript)
·
IT/알고리즘
문제 설명 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 수는 6210입니다. 0 또는 양의 정수가 담긴 배열 numbers가 매개변수로 주어질 때, 순서를 재배치하여 만들 수 있는 가장 큰 수를 문자열로 바꾸어 return 하도록 solution 함수를 작성해주세요. 제한 사항 numbers의 길이는 1 이상 100,000 이하입니다. numbers의 원소는 0 이상 1,000 이하입니다. 정답이 너무 클 수 있으니 문자열로 바꾸어 return 합니다. 입출력 예 풀이 문제가 상당히 짧아서 쉽게 생각했는데..
프로그래머스 - 카카오프렌즈 컬러링북(c++)
·
IT/알고리즘
문제 설명 카카오 프렌즈 컬러링북 출판사의 편집자인 어피치는 네오에게 컬러링북에 들어갈 원화를 그려달라고 부탁하여 여러 장의 그림을 받았다. 여러 장의 그림을 난이도 순으로 컬러링북에 넣고 싶었던 어피치는 영역이 많으면 색칠하기가 까다로워 어려워진다는 사실을 발견하고 그림의 난이도를 영역의 수로 정의하였다. (영역이란 상하좌우로 연결된 같은 색상의 공간을 의미한다.) 그림에 몇 개의 영역이 있는지와 가장 큰 영역의 넓이는 얼마인지 계산하는 프로그램을 작성해보자. 위의 그림은 총 12개 영역으로 이루어져 있으며, 가장 넓은 영역은 어피치의 얼굴면으로 넓이는 120이다. 입력 형식 입력은 그림의 크기를 나타내는 m과 n, 그리고 그림을 나타내는 m × n 크기의 2차원 배열 picture로 주어진다. 제한조..
프로그래머스 - 문자열 압축(c++, javascript)
·
IT/알고리즘
문제 설명 데이터 처리 전문가가 되고 싶은 어피치는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문자열에서 같은 값이 연속해서 나타나는 것을 그 문자의 개수와 반복되는 값으로 표현하여 더 짧은 문자열로 줄여서 표현하는 알고리즘을 공부하고 있습니다. 간단한 예로 aabbaccc의 경우 2a2ba3c(문자가 반복되지 않아 한번만 나타난 경우 1은 생략함)와 같이 표현할 수 있는데, 이러한 방식은 반복되는 문자가 적은 경우 압축률이 낮다는 단점이 있습니다. 예를 들면, abcabcdede와 같은 문자열은 전혀 압축되지 않습니다. 어피치는 이러한 단점을 해결하기 위해 문자열을 1개 이상의 단위로 잘라서 압축하여 더 ..
프로그래머스 - 다리를 지나는 트럭(c++, javascript)
·
IT/알고리즘
문제 설명 트럭 여러 대가 강을 가로지르는 일 차선 다리를 정해진 순으로 건너려 합니다. 모든 트럭이 다리를 건너려면 최소 몇 초가 걸리는지 알아내야 합니다. 트럭은 1초에 1만큼 움직이며, 다리 길이는 bridge_length이고 다리는 무게 weight까지 견딥니다. ※ 트럭이 다리에 완전히 오르지 않은 경우, 이 트럭의 무게는 고려하지 않습니다. 예를 들어, 길이가 2이고 10kg 무게를 견디는 다리가 있습니다. 무게가 [7, 4, 5, 6]kg인 트럭이 순서대로 최단 시간 안에 다리를 건너려면 다음과 같이 건너야 합니다. 따라서, 모든 트럭이 다리를 지나려면 최소 8초가 걸립니다. solution 함수의 매개변수로 다리 길이 bridge_length, 다리가 견딜 수 있는 무게 weight, 트럭..
프로그래머스 - 데모 테스트(SQL)
·
IT/알고리즘
문제 설명 EMPLOYEES 테이블은 자동차 판매 회사에서 일하고 있는 직원의 정보가 담긴 테이블입니다. EMPLOYEES 테이블 구조는 다음과 같으며, ID, NAME, SALARY, BRANCH_ID는 각각 직원의 아이디, 이름, 월급, 근무하는 대리점 아이디를 나타냅니다. 문제 EMPLOYEES 테이블을 이용해 지점 별 총급여액이 얼마인지 조회하는 SQL문을 작성해주세요. 단, 결과는 지점의 ID순으로 정렬되어야 합니다. 예시 예를 들어 EMPLOYEES 테이블이 다음과 같다면 15번 지점의 총급여액은 180 (Alayna) 16번 지점의 총급여액은 330 + 280 (Holly, Kyra) 17번 지점의 총급여액은 300 (Juliet) 이므로, SQL을 실행하면 다음과 같이 출력되어야 합니다. ..
프로그래머스 - 데모 테스트(c++, javascript)
·
IT/알고리즘
문제 설명 직사각형을 만드는 데 필요한 4개의 점 중 3개의 좌표가 주어질 때, 나머지 한 점의 좌표를 구하려고 합니다. 점 3개의 좌표가 들어있는 배열 v가 매개변수로 주어질 때, 직사각형을 만드는 데 필요한 나머지 한 점의 좌표를 return 하도록 solution 함수를 완성해주세요. 단, 직사각형의 각 변은 x축, y축에 평행하며, 반드시 직사각형을 만들 수 있는 경우만 입력으로 주어집니다. 제한사항 v는 세 점의 좌표가 들어있는 2차원 배열입니다. v의 각 원소는 점의 좌표를 나타내며, 좌표는 [x축 좌표, y축 좌표] 순으로 주어집니다. 좌표값은 1 이상 10억 이하의 자연수입니다. 직사각형을 만드는 데 필요한 나머지 한 점의 좌표를 [x축 좌표, y축 좌표] 순으로 담아 return 해주세요..
[알렉사-2] lambda 연결하기
·
IT/챗봇
1편에서는 기본 Default Region Endpoint를 이용하여 code 작성을 해보았습니다. 2편에서는 AWS Lambda를 새로 생성하여 알렉사 스킬에 연결해보는 과정을 진행해보겠습니다. 1.AWS Lambda 생성하기 AWS Lambda 에 접속하여 콘솔에 로그인 합니다. 위에 있는 서비스 탭에서 -> 컴퓨팅 -> Lambda를 클릭합니다. 왼쪽의 함수 탭을 클릭하여 함수 생성하기 버튼을 누릅니다. 함수 이름을 적고 함수를 생성합니다. 생성이 완료되었습니다. 2.Lambda의 트리거에 알렉사 추가하기 위에서 생성된 Lambda 화면에서 구성 탭-> 블럭으로 되어 있는 + 트리거 추가 버튼을 누릅니다. 트리거 구성에서 Alexa Skills Kit을 선택합니다. 알렉사 디벨로퍼 콘솔 -> 스킬선..
[알렉사-1] 스킬 생성하기
·
IT/챗봇
알렉사 스킬 생성부터 Invocation name 등록, Intent와 Endpoint의 Code를 수정하여 알렉사가 적절하게 응답을 하는지 테스트를 하는 과정을 담았습니다. 알렉사 스킬 가이드 1.스킬 생성하기 알렉사 콘솔에 접속하여 Create skill 버튼을 누릅니다. Skill name : 알렉사에 등록할 스킬 이름을 입력합니다. Default language : 알렉사에 사용할 언어를 선택합니다. Custom 모델과 Alexa-Hosted 서버(추천)를 선택하고 Create skill 버튼을 눌러 스킬을 생성합니다. 2.Invocation Name 등록하기 스킬등록이 완료 되었으면 아래와 같은 화면이 나옵니다. 왼쪽의 Invocation 탭에서 Skill Invocation Name을 2단어 ..
프로그래머스 - 기능개발(c++)
·
IT/알고리즘
문제 설명 프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 기능보다 먼저 개발될 수 있고, 이때 뒤에 있는 기능은 앞에 있는 기능이 배포될 때 함께 배포됩니다. 먼저 배포되어야 하는 순서대로 작업의 진도가 적힌 정수 배열 progresses와 각 작업의 개발 속도가 적힌 정수 배열 speeds가 주어질 때 각 배포마다 몇 개의 기능이 배포되는지를 return 하도록 solution 함수를 완성하세요. 제한 사항 작업의 개수(progresses, speeds배열의 길이)는 100개 이하입니다. 작업 진도는 100 미만의 자연수입니다. 작업 속도는 100 이하의 자..