목록알고리즘 (547)
N
algorithm 헤더에 있는 sort 함수를 이용하는 문제..! 단, sort함수는 기본적으로 오름차순으로 정렬하는 함수이기 때문에 내림차순으로 정렬해야하는 함수를 따로 정의해줘야 한다. 그래서 desc 함수를 만들어주었다..! 내림차순으로 정렬해야하는 문제가 여러개 있으니 외워두면 많이 쓸 수 있다...! 이와 별개로 sort를 다른 방식으로 정렬해야하는 문제가 있을 수 있으니, 적절하게 변경해서 사용하면 많은 도움이 된다..! #include #include #include using namespace std; bool desc(char a, char b) { return a > b; } string solution(string s) { string answer = ""; sort(s.begin()..
문자열 비교를 하여 p와 y의 개수를 세는 문제..! for문을 이용하여 문자열을 비교한다. 단, 대소문자를 구별하지 않으니 if문에 대소문자를 모두 포함해야 한다..! #include #include using namespace std; bool solution(string s) { bool answer = true; int pCount = 0, yCount = 0; for(int i = 0; i < s.size(); i++) { if(s[i] == 'p' || s[i] == 'P') pCount++; else if(s[i] == 'y' || s[i] == 'Y') yCount++; } if(pCount == yCount) return true; else return false; }
인덱스 n번째 글자를 기준으로 문자열을 오름차순으로 정렬하는 문제..! for문을 이용하여 모든 글자를 비교해주도록 한다..! 다만 인덱스 n번째가 같은 글자이면 사전순으로 정렬해주도록 한다. #include #include using namespace std; vector solution(vector strings, int n) { for(int i = 0; i strings[j]) strings[i].swap(strings[j]); } } ret..
for문만 알면 풀 수 있는 쉬운 문제..! 다만 a와 b의 대소관계가 정해져 있지 않으므로 이 부분만 처리하면 쉽게 풀 수 있다..! #include #include using namespace std; long long solution(int a, int b) { long long answer = 0; if(a > b) { for(int i = b; i
sort와 나머지 연산만 할 수 있으면 간단하게 풀 수 있는 문제..! 나누어 떨어지는 숫자가 1도 없으면(=answer 벡터가 비어있으면) -1을 answer에 넣어주고, 그렇지 않으면 sort를 하여 오름차순으로 정렬해주면 끄으으읏..! #include #include #include using namespace std; vector solution(vector arr, int divisor) { vector answer; for(int i = 0; i < arr.size(); i++) { if(arr[i] % divisor == 0) answer.push_back(arr[i]); } if(answer.empty()) answer.push_back(-1); else sort(answer.begin()..
연속적으로 같은 숫자가 오는지 확인만 해주면 간단하게 풀 수 있는 문제..! 처음에는 pre변수를 arr[0]에 있는 숫자로 초기화 해준다. 이 후 for문에서 arr[1]부터 끝까지 pre 변수와 비교해가면서 확인. 연속적이지 않으면 pre변수를 바꿔주고 answer 벡터에 넣어주면 끄으으읕..! #include #include #include using namespace std; vector solution(vector arr) { vector answer; int pre = arr[0]; answer.push_back(pre); for(int i = 1; i < arr.size(); i++) { if(pre != arr[i]) { pre = arr[i]; answer.push_back(pre); }..
문자열 중 가장 간단한 문제..! 우선 s의 size가 짝수인지 검사를 해준다. 짝수이면 substr을 이용해 가운데 두글자를 반환해주고, 홀수도 마찬가지로 substr을 이용해 가운데 한글자만 반환해준다. #include #include #include using namespace std; string solution(string s) { string answer = ""; if(s.size() % 2 == 0) answer = s.substr(s.size() / 2 - 1, 2); else answer = s.substr(s.size() / 2, 1); return answer; }
배열 array의 i번째 숫자부터 j번째 숫자까지 자르고 정렬했을 때, k번째에 있는 수를 구하려 합니다. 예를 들어 array가 [1, 5, 2, 6, 3, 7, 4], i = 2, j = 5, k = 3이라면 1. array의 2번째부터 5번째까지 자르면 [5, 2, 6, 3]입니다. 2. 1에서 나온 배열을 정렬하면 [2, 3, 5, 6]입니다. 3. 2에서 나온 배열의 3번째 숫자는 5입니다. 배열 array, [i, j, k]를 원소로 가진 2차원 배열 commands가 매개변수로 주어질 때, commands의 모든 원소에 대해 앞서 설명한 연산을 적용했을 때 나온 결과를 배열에 담아 return 하도록 solution 함수를 작성해주세요. 정렬 문제 중 간단한 문제..! start에 i - 1..