유클리드 호제법을 통한 최소공배수, 최대공약수 알고리즘
·
C++
/*** 최대 공약수* 무조건 a가 b보다 큰 수*/int gcd(int a, int b){ int r; while (b != 0) { r = a % b; a = b; b = r; } return a;}/*** 최소 공배수* 무조건 a가 b보다 큰 수*/int lcm(int a, int b){ return (a * b) / gcd(a, b);}
KMP 알고리즘
·
C++
문자열 매칭 알고리즘은 크게 3가지가 있다.KMP : 문자열 S가 있을 때, 패턴 P를 찾는 알고리즘Trie : 문자열 N개가 있을 때, 문자열 S를 찾는 알고리즘Aho-corasick : 문자열 N개가 있을 때, 패턴 P를 찾는 알고리즘그 중 KMP에 대해 알아보자 KMP 알고리즘은 KMP 알고리즘을 만든 Knuth, Morris, Prett의 앞글자를 따서 이름을 붙였다.KMP 알고리즘에서 알아야 하는 것은1. 접두사와 접미사apple을 예시로aapappapplapple elepleppleapple이다. 2. pi 배열pi[i]는 주어진 문자열의 0~i까지의 부분문자열 중 접두사==접미사가 될 수 있는 부분 문자열 중 가장 긴 것의 길이다이때, 접두사가 0~i까지의 부분 문자열과 같으면 안된다. 문자..
백준 11720번 숫자의
·
C++
숫자의 합 성공 시간 제한메모리 제한제출정답맞힌 사람정답 비율1 초256 MB27154415066012377155.962%문제N개의 숫자가 공백 없이 쓰여있다. 이 숫자를 모두 합해서 출력하는 프로그램을 작성하시오.입력첫째 줄에 숫자의 개수 N (1 ≤ N ≤ 100)이 주어진다. 둘째 줄에 숫자 N개가 공백없이 주어진다.출력입력으로 주어진 숫자 N개의 합을 출력한다.예제 입력 1 복사11예제 출력 1 복사1예제 입력 2 복사554321예제 출력 2 복사15예제 입력 3 복사257000000000000000000000000예제 출력 3 복사7예제 입력 4 복사1110987654321예제 출력 4 복사46  풀이법 :scanf를 이용하여 정수를 1자리씩 받는다 -> "%1d"를 통하여 1자리씩 정수를 받을..
백준 1003번 피보나치 함수
·
C++
1003번: 피보나치 함수 (acmicpc.net) 피보나치 함수 성공 시간 제한메모리 제한제출정답맞힌 사람정답 비율0.25 초 (추가 시간 없음)128 MB228663716965675033.548%문제다음 소스는 N번째 피보나치 수를 구하는 C++ 함수이다.int fibonacci(int n) { if (n == 0) { printf("0"); return 0; } else if (n == 1) { printf("1"); return 1; } else { return fibonacci(n‐1) + fibonacci(n‐2); }}fibonacci(3)을 호출하면 다음과 같은 일이 일어난다.fibonacci(3)은 fib..
하나의 정수 나눠 입력받기
·
C++
001000 과 같은 정수가 들어오는 경우 0 0 1 0 0 0으로 데이터를 나눠서 받기 위해서 scanf를 사용한다#include using namespace std;int main(){ int bread[11][11]; int N, M; cin >> N >> M; for (int j = 0; j = 0; j--) { cout  scanf("%1d",...); 를 통해 들어오는 입력 데이터를 1개씩 받도록 지정한다.
C++ STL 연산자 오버로딩
·
C++
전위 연산자 -> 값을 계산후, *this 리턴 ex) const Point& operator--(); 후위 연산자 -> 해당 클래스를 정의 및 값 복사, 값을 계산, 정의된 값 리턴 ex) const Point& operator--(int); 연산자 오버로딩의 종류 1) 멤버 함수를 이용한 연산자 오버로딩 2) 전역 함수를 이용한 연산자 오버로딩 -> 왼쪽이 연산자 오버로딩 멤버 함수가 아닌 경우 사용 오버로딩이 가능한 이항 연산자 : +, -, *, /, ==, !=,