순열 ( next_permutation )
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 #include<iostream>#include<string>#include<algorithm>using namespace std; int main() { string str = "123"; sort(str.begin(), str.end()); do { for (int i = 1; i <= str.size(); ++i) { int n = stoi(str.substr(0, i)); cout << n << endl; } }while (next_permutation(str.begin(), str.end())); return 0; } 출력 :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 1 12 123 1 13 132 2 21 213 2 23 231 3 31 312 3 32 321
https://programmers.co.kr
문제: 2차원 행렬 arr1과 arr2를 입력받아, arr1에 arr2를 곱한 결과를 반환하는 함수, solution을 완성해주세요.
풀이: arr1의 가로행과 arr2의 세로열의 값들을 각각 곱한것을 더한 값을 a에 저장한다.
저장된 배열 a를 answer에 푸쉬 한다.
코드: 사용언어 : c++
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 #include <string>#include <vector> using namespace std; vector<vector<int>> solution(vector<vector<int>> arr1, vector<vector<int>> arr2) { vector<vector<int>> answer; for (int i = 0; i < arr1.
stringstream - 공백을 기준으로 분리 1 stringstream s_stream(string a); s_stream에 a에 있는 문장을 공백을 기준으로 분리해서 넣는다.
1 #include <sstream> 사용하기 위해서는 sstream을 include해서 사용하자.
1 2 3 4 5 6 string a = "a b c d"; stringstream s_stream(a); string c; while(s_stream >> c){ cout << c << endl; } 출력 :
1 2 3 4 a b c d strtok - 주어진 문자를 기준으로 분리 1 strtok(char* a, char* b); a를 b를 기준으로 분리한다.
https://programmers.co.kr
문제: 라면 공장에서는 하루에 밀가루를 1톤씩 사용합니다. 원래 밀가루를 공급받던 공장의 고장으로 앞으로 k일 이후에야 밀가루를 공급받을 수 있기 때문에 해외 공장에서 밀가루를 수입해야 합니다.
해외 공장에서는 향후 밀가루를 공급할 수 있는 날짜와 수량을 알려주었고, 라면 공장에서는 운송비를 줄이기 위해 최소한의 횟수로 밀가루를 공급받고 싶습니다.
현재 공장에 남아있는 밀가루 수량 stock, 밀가루 공급 일정(dates)과 해당 시점에 공급 가능한 밀가루 수량(supplies), 원래 공장으로부터 공급받을 수 있는 시점 k가 주어질 때, 밀가루가 떨어지지 않고 공장을 운영하기 위해서 최소한 몇 번 해외 공장으로부터 밀가루를 공급받아야 하는지를 return 하도록 solution 함수를 완성하세요.
https://programmers.co.kr
문제: 정수를 저장한 배열, arr 에서 가장 작은 수를 제거한 배열을 리턴하는 함수, solution을 완성해주세요. 단, 리턴하려는 배열이 빈 배열인 경우엔 배열에 -1을 채워 리턴하세요. 예를들어 arr이 [4,3,2,1]인 경우는 [4,3,2]를 리턴 하고, [10]면 [-1]을 리턴 합니다.
풀이: arr에서 제일 작은 수를 찾아 삭제한다.
만약 arr이 비었다면 -1을 넣는다.
코드: 사용언어 : c++
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 #include <string>#include <vector>using namespace std; vector<int> solution(vector<int> arr) { int min = arr[0], c = 0; for(int i = 1; i < arr.
https://programmers.co.kr
문제: 이 문제에는 표준 입력으로 두 개의 정수 n과 m이 주어집니다. 별(*) 문자를 이용해 가로의 길이가 n, 세로의 길이가 m인 직사각형 형태를 출력해보세요.
풀이: n번 별을 찍는다. 개행한다.
그것을 m번 반복한다.
코드: 사용언어 : c++
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 #include <iostream> using namespace std; int main(void) { int a, b; cin >> a >> b; for (int i = 0; i < b; i++){ for (int t = 0; t < a; t++){ cout << '*'; } cout << endl; } return 0; }