본문 바로가기

알고리즘

(22)
[프로그래머스] (C++) 매칭 점수 문제 링크 힌트 머리 (HEADER)에서 추출 해야 할 값 그리고 몸 (BODY)에서 추출 해야 할 값을 나누어 보자. 소스 코드 (1차 시도) #include #include #include #include #include #include #include using namespace std; int solution(string word, vector pages) { int answer = 0; int pageNum = pages.size(); vector pageNames; vector matchingScores; vector linkScores; vector stdScores; vector linkNums; vector linkScoresToOther; vector linkedPagesList; //..
[프로그래머스] (C++) 숫자 게임 문제 링크 힌트 정렬을 이용하자. 소스 코드 (1차 시도) // [프로그래머스] 숫자 게임 #include #include #include #include using namespace std; int solution(vector A, vector B) { int answer = 0; std::sort(A.begin(), A.end()); std::sort(B.begin(), B.end()); vector::iterator B_iter = B.begin(); for (vector::iterator iter = A.begin(); iter != A.end(); iter++) { while (B_iter != B.end()) { if (*B_iter >= *iter) { answer++; B_iter++; b..
[프로그래머스] (C++) 구명 보트 문제 링크 코딩테스트 연습 - 구명보트 | 프로그래머스 무인도에 갇힌 사람들을 구명보트를 이용하여 구출하려고 합니다. 구명보트는 작아서 한 번에 최대 2명씩 밖에 탈 수 없고, 무게 제한도 있습니다. 예를 들어, 사람들의 몸무게가 [70kg, 50kg, 80kg, 50kg]이고 구명보트의 무게 제한이 100kg이라면 2번째 사람과 4번째 사람은 같이 탈 수 있지만 1번째 사람과 3번째 사람의 무게의 합은 150kg이므로 구명보트의 무게 제한을 초과하여 같이 탈 수 없습니다. 구명보트를 최대한 적게 사용하여 모 programmers.co.kr 힌트 최대 2명 (한 명을 임의로 택했을 때 다른 한 명은 누구를 태우면 가장 좋을까?) 소스 코드 (첫번째 시도) // [프로그래머스] 구명 보트 #include ..
[프로그래머스] (C++) N진수 게임 문제 https://programmers.co.kr/learn/courses/30/lessons/17687 코딩테스트 연습 - [3차] n진수 게임 | 프로그래머스 N진수 게임 튜브가 활동하는 코딩 동아리에서는 전통적으로 해오는 게임이 있다. 이 게임은 여러 사람이 둥글게 앉아서 숫자를 하나씩 차례대로 말하는 게임인데, 규칙은 다음과 같다. 숫자를 0부터 시작해서 차례대로 말한다. 첫 번째 사람은 0, 두 번째 사람은 1, … 열 번째 사람은 9를 말한다. 10 이상의 숫자부터는 한 자리씩 끊어서 말한다. 즉 열한 번째 사람은 10의 첫 자리인 1, 열두 번째 사람은 둘째 자리인 0을 말한다. 이렇게 게임을 진행할 programmers.co.kr 힌트 10진수 -> N진수로 변환하는 법 예. 10진수 1..
[프로그래머스] (C++) 가장 큰 수 문제 링크 코딩테스트 연습 - 가장 큰 수 | 프로그래머스 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 수는 6210입니다. 0 또는 양의 정수가 담긴 배열 numbers가 매개변수로 주어질 때, 순서를 재배치하여 만들 수 있는 가장 큰 수를 문자열로 바꾸어 return 하도록 solution 함수를 작성해주세요. programmers.co.kr 힌트 다른 자릿수 끼리 크기 비교는 어떻게 하면 좋을까? (예: 한자리 숫자에 10을 곱해서 두자리 숫자랑 비교 해볼까?) 소스코드 (첫번째 시도) // [프로그..
[프로그래머스] (C++) 피보나치 수 문제 링크 힌트 n이 100000 일 때 피보나치 수를 구해보니 overflow가 발생하였다 구하는 값은 나머지이다. overflow를 방지하려면 나머지 연산을 잘 이용해야 한다. 소스 코드 #include #include int solution (int n) { int last2, last1, num; last2 = 0; last1 = 1; for (int i = 2; i
[프로그래머스] (C++) 행렬의 곱셈 문제 링크 소스 코드 // [프로그래머스] 행렬의 곱셈 #include #include #include using namespace std; vector solution(vector arr1, vector arr2) { vector answer; int row_size = arr1.size(); int col_size = arr2[0].size(); vector element; for (int i = 0; i < row_size; i++) { for (int j = 0; j < col_size; j++) { int sum = 0; for (int k = 0; k < arr2.size(); k++) { sum += arr1[i][k] * arr2[k][j]; } element.push_back(sum); ..
[프로그래머스] (C++) 큰 수 만들기 문제 문제로 가시려면 이 링크를 클릭해주세요. 힌트 앞 뒤 자리 비교 해보라 소스 코드 // [프로그래머스] 큰 수 만들기 #include #include #include using namespace std; string solution(string number, int k) { int eraseNum = 0; for (int i = 0; i < k; i++) { for (int j = 0; j < number.length() - 1; j++) { if (number[j] < number[j+1]) { number.erase(j,1); eraseNum++; break; } } } for (int i = 0; i < k - eraseNum; i++) { number.pop_back(); } return n..