본문 바로가기

프로그래머스

(75)
[C++/PGS] Lv.3 : 최고의 집합 (벡터, 수학) https://school.programmers.co.kr/learn/courses/30/lessons/12938# 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr  프로그래머스 레벨 3.특별한 알고리즘은 필요하지 않고, 수학적 접근으로 해결하면 된다.s/n (평균)에 가장 가까운 값들의 리스트가 최대 곱을 가진다. 힌트) 예를 들면s = 10, n = 3일 때s/n = 3, s%n = 1이므로최대 곱을 가지는 리스트는 { 3, 3, 4 } 이다.  나의 풀이#include #include using namespace std;vector solution(int n, int s) { vector an..
[C++/PGS] Lv.3 : 숫자 게임 (그리디 Greedy) https://school.programmers.co.kr/learn/courses/30/lessons/12987# 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr  프로그래머스 레벨 3 문제그리디로 해결했다 중요 포인트 = 정렬 & 조건에 맞지 않는 요소 삭제   나의 풀이#include #include #include #include using namespace std;int solution(vector A, vector B) { int answer = 0; // 그리디? o 완탐? x sort(A.begin(), A.end(), greater()); sort(B.begin(),..
[C++/PGS] Lv.3 : 섬 연결하기 (그리디 Greedy) https://school.programmers.co.kr/learn/courses/30/lessons/42861 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 프로그래머스 그리디 - 섬 연결하기 문제 원래는 각 트리의 최상단 부모값을 재귀적으로 찾는 게 정석 풀이인데,나는 복잡해서 그냥 인덱스 배열에 최소 부모값만 저장해놓고 반복문으로 갱신했다. 1. 최소 신장 트리를 만들기 위해, Greedy로 최솟값 간선부터 찾는 게 포인트!2. 각 트리의 최소 부모값을 비교해서, 같으면 한 트리 내부에 있는 것으로 보고, 다르다면 두 트리를 이어줌.  나의 풀이#include #include #include #..
[C++/PGS] Lv.1 : 달리기 경주 (해시맵 Map) https://school.programmers.co.kr/learn/courses/30/lessons/178871 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr  처음에 2중 반복문을 사용했더니 시간초과가 뜨길래,해시맵을 사용해야 하는 것을 깨달았다Map을 2개 쓰는 방식 등 풀이가 다양했는데, 나는 unordered map 하나로 players의 인덱스를 바로 검색해서 해결함 나의 풀이#include #include #include using namespace std;vector solution(vector players, vector callings) ..
[MySQL/PGS] Lv.1 : 자동차 대여 기록에서 장기/단기 대여 구분하기 https://school.programmers.co.kr/learn/courses/30/lessons/151138 문제 설명 다음은 어느 자동차 대여 회사의 자동차 대여 기록 정보를 담은 CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블입니다. CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블은 아래와 같은 구조로 되어있으며, HISTORY_ID, CAR_ID, START_DATE, END_DATE 는 각각 자동차 대여 기록 ID, 자동차 ID, 대여 시작일, 대여 종료일을 나타냅니다. Column nameTypeNullable HISTORY_ID INTEGER FALSE CAR_ID INTEGER FALSE START_DATE DATE FALSE END_DATE D..
[C++/PGS] Lv.2 : 더 맵게 (힙 Heap) https://school.programmers.co.kr/learn/courses/30/lessons/42626# 문제 설명 매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같이 특별한 방법으로 섞어 새로운 음식을 만듭니다. 섞은 음식의 스코빌 지수 = 가장 맵지 않은 음식의 스코빌 지수 + (두 번째로 맵지 않은 음식의 스코빌 지수 * 2) Leo는 모든 음식의 스코빌 지수가 K 이상이 될 때까지 반복하여 섞습니다. Leo가 가진 음식의 스코빌 지수를 담은 배열 scoville과 원하는 스코빌 지수 K가 주어질 때, 모든 음식의 스코빌 지수를 K 이상으로 ..
[C++/PGS] Lv.3 : 이중우선순위큐 문제 설명 이중 우선순위 큐는 다음 연산을 할 수 있는 자료구조를 말합니다. 명령어수신 탑(높이) I 숫자 큐에 주어진 숫자를 삽입합니다. D 1 큐에서 최댓값을 삭제합니다. D -1 큐에서 최솟값을 삭제합니다. 이중 우선순위 큐가 할 연산 operations가 매개변수로 주어질 때, 모든 연산을 처리한 후 큐가 비어있으면 [0,0] 비어있지 않으면 [최댓값, 최솟값]을 return 하도록 solution 함수를 구현해주세요. 제한사항 operations는 길이가 1 이상 1,000,000 이하인 문자열 배열입니다. operations의 원소는 큐가 수행할 연산을 나타냅니다. 원소는 “명령어 데이터” 형식으로 주어집니다.- 최댓값/최솟값을 삭제하는 연산에서 최댓값/최솟값이 둘 이상인 경우, 하나만 삭제합..
[C++/PGS] Lv.2 : 이진 변환 반복하기 문제 설명 0과 1로 이루어진 어떤 문자열 x에 대한 이진 변환을 다음과 같이 정의합니다. x의 모든 0을 제거합니다. x의 길이를 c라고 하면, x를 "c를 2진법으로 표현한 문자열"로 바꿉니다. 예를 들어, x = "0111010"이라면, x에 이진 변환을 가하면 x = "0111010" -> "1111" -> "100" 이 됩니다. 0과 1로 이루어진 문자열 s가 매개변수로 주어집니다. s가 "1"이 될 때까지 계속해서 s에 이진 변환을 가했을 때, 이진 변환의 횟수와 변환 과정에서 제거된 모든 0의 개수를 각각 배열에 담아 return 하도록 solution 함수를 완성해주세요. 제한사항 s의 길이는 1 이상 150,000 이하입니다. s에는 '1'이 최소 하나 이상 포함되어 있습니다. 나의 풀이..

728x90