코딩테스트 128
-
문제 풀이#include using namespace std;int main(){ // 초기값 int n = 0; cin >> n; // 분해합은 초기에 받은 n보다 큰 수가 된다. // 따라서 n까지 반복문을 돌려서 n보다 작은 모든 수의 분해합을 탐색한다. for (int i = 1; i 메모이 문제는 완전탐색 알고리즘인 브루트 포스에 속하는 문제다.완전탐색 알고리즘은 가능한 모든 경우의 수를 모두 탐색하며 요구조건에 충족되는 결과만을 찾아낸다.선형 구조에서의 순차 탐색, 비선형 구조에서의 DFS, BFS가 기본적으로 사용된다.또한 이 문제는 각 자릿수끼리의 값을 분해한 값을 구해 문제 풀이에 사용하는 문제이기도 하다.아래의 코드가 바로 자릿수를 구하는 코드 == k진수를 맨 끝자리부터 구해나가는..
-
-
-
문제 풀이#include using namespace std;int run(string strInput){ int strLength = strInput.length(); int index = strLength - 1; for (int i = 0; i > strInput; if (strInput == "0") { break; } int result = run(strInput); if (result == 0) { cout 메모대칭되는 index에 위치하는 문자열을 서로 비교하는 방식으로 풀었다.그런데 이렇게 하는 것보다 아래처럼 reverse() 함수를 사용하는 편이 코드가 더 간결해진다.#include #include #include using namespace std;int main(..
-
문제 풀이#include using namespace std;int FindPrime(int n){ // 음수, 1은 소수가 아니므로 제외한다. if (n > m >> n; for (int i = m; i 메모반복문의 시작지점과 끝지점이 주어진다는 점만 제외하면 아래 문제와 동일한 문제다.https://risehyun.tistory.com/406 n; for (int i = 0; i > input; int result = FindPrime(input); if (result == 1) { count++; } } cout" data-og-host="risehyun.tistory.com" data-og-source-url="https://risehyun.tistory.com/406" data-og-url="..
-
-
문제 풀이sort 함수를 사용해서 풀면 되는 문제로 보이지만 메모리와 시간제한이 있는 문제라서 다르게 접근해야 한다.문제를 잘 읽어보면 첫째 줄에 주어지는 수가 10,000보다 작거나 같은 자연수라는 조건이 주어진다.따라서 직접적으로 sort를 하는 것이 아니라, 크기가 10001인 배열을 만들어서 입력값과 동일한 숫자를 카운팅 하고 카운팅 된 개수 = 숫자가 등장한 개수이므로 해당 크기만큼 순차적으로 숫자를 출력하는 계수 정렬(counting sort)을 사용해야 한다.main() 함수 안에서 선언된 아래의 코드 3줄은 입출력으로 인한 실행 속도 저하를 방지하기 위해 c 표준 스트림 버퍼와의 동기화를 해제하고 자체적인 c++ 버퍼를 가지도록 해준다. 이를 통해 입출력 속도를 높일 수 있다. #inclu..
-