목록프로그래머스 알고리즘/1단계 (50)
N
문자열 비교를 하여 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..
점심시간에 도둑이 들어, 일부 학생이 체육복을 도난당했습니다. 다행히 여벌 체육복이 있는 학생이 이들에게 체육복을 빌려주려 합니다. 학생들의 번호는 체격 순으로 매겨져 있어, 바로 앞번호의 학생이나 바로 뒷번호의 학생에게만 체육복을 빌려줄 수 있습니다. 예를 들어, 4번 학생은 3번 학생이나 5번 학생에게만 체육복을 빌려줄 수 있습니다. 체육복이 없으면 수업을 들을 수 없기 때문에 체육복을 적절히 빌려 최대한 많은 학생이 체육수업을 들어야 합니다. 전체 학생의 수 n, 체육복을 도난당한 학생들의 번호가 담긴 배열 lost, 여벌의 체육복을 가져온 학생들의 번호가 담긴 배열 reserve가 매개변수로 주어질 때, 체육수업을 들을 수 있는 학생의 최댓값을 return 하도록 solution 함수를 작성해주세..