분류 전체보기(98)
-
프로그래머스 같은 숫자는 싫어 C++
그냥 쉬운 스택을 이용한 구현 문제이다. EASY #include #include #include #include using namespace std; queue s; vector solution(vector arr) { vector answer; for (int i = 0;i < arr.size();i++) { if (s.empty()) { s.push(arr[i]); } else { if (s.back() == arr[i]) { continue; } else { s.push(arr[i]); } } } while (!s.empty()) { answer.push_back(s.front()); s.pop(); } return answer; }
2023.10.19 -
프로그래머스 소수찾기 C++
문제는 먼저 numbers 가지고 만들 수 있는 모든 숫자들을 만들고, 만든 다음에 소수인지 확인하면 된다. numbers가지고 만들 수 있는 모든 숫자들을 어떻게 만들 수 있을까? c++ 에 정의되어 있는 next_permutation 함수를 사용했다 #include #include #include #include #include #include using namespace std; unordered_map m; bool isPrime(int x) { if (x == 0 || x == 1) { return false; } if (x == 2) { return true; } for (int i = 2; i first)) { answer++; } } cout
2023.10.19 -
프로그래머스 최소직사각형 C++
#include #include #include using namespace std; int solution(vector sizes) { int answer = 0; int height=0, width=0; for (int i=0;i sizes[i][1]){ height = max(height, sizes[i][0]); width = max(width, sizes[i][1]); } else{ height = max(height, sizes[i][1]); width = max(width, sizes[i][0]); } } answer = height * width; return answer; } 문제는 완전탐색 문제이다. 결국, 최소 직사각형을 구하면 한쪽에 max값을 두고 다른쪽에 나머지를 두는 것이 가장..
2023.10.19 -
프로그래머스 H-Index C++
이 문제는 이해하기가 어려운 문제였다. 코드는 간단하다. 문제에서 나온 예시를 정렬하면 0,1, 3, 5, 6이 된다. 이 때 인덱스 번호는 자신 이상으로 인용된 횟수를 확인할 수 있다. 가령 6의 경우 인덱스 번호는 1이고 (역으로 정렬했다) 따라서 자신 이상으로 인용된 횟수는 1회이다. 디버깅 케이스는 10, 20, 30과 같은 경우이다. 이 때 10회이상 인용이 되었지만 쓴 논문이 3편이기 때문에 h index의 최대값은 3편에 지나지 않는다. 이에 유의해서 풀면 된다. #include #include #include using namespace std; int solution(vector citations) { int answer = 0; sort(citations.begin(), citation..
2023.10.19 -
프로그래머스 K번째 수 C++
구현 문제이다. 배열을 부분 배열로 자르고, 정렬한다음에 k번째 수를 리턴하면 된다. 간단하다 시간 제약도 없어서 따로 알고리즘을 쓸 필요가 없다. #include #include #include using namespace std; vector solution(vector array, vector commands) { vector answer; for (int i=0;i
2023.10.19 -
프로그래머스 여행경로 C++
dfs로 탐색해서 풀면 되는 문제이다. 내가 작성한 코드는 아래와 같다. #include #include #include #include using namespace std; vector Tickets; vector Answer; int visited[10001]; int should_end; void dfs(string s, int count){ if (count == Tickets.size()){ should_end = 1; } else{ for (int i=0;i
2023.10.19