Programing/C++ 4

[C++] 최대공약수(GCD), 최소공배수(LCM) 구하기

우선 두 수의 최소공배수(LCM)는 두 수의 곱을 최대공약수로 나눠주면 구할 수 있다따라서 최대공약수(GCD)를 구하는 것이 중요하다 a와 b의(단, a > b)최대 공약수는 a % b(mod), 즉 나머지가 0이 될 때까지 아래와 같이 반복하여 구할 수 있다1. a % b = r, 나머지의 값을 구한다2. b를 나머지(r)로 나눈 값의 나머지(r')를 구한다3. r을 r'로 나눈 값의 나머지(r'')를 구한다... 1. 재귀함수로 구현int gcd(int a, int b){ if (a % b == 0) return b; return gcd(b, a % b);} 2. 반복문으로 구현int gcd(int a, int b){ int r = a % b; while(r) ..

Programing/C++ 2025.01.27

[C++] priority_queue

힙으로 구현된 큐로, 기본적으로 내림차순으로 정렬된다(top이 가장 큰 값) #include #include using namespace std;int main(){ // 내림차순 정렬 priority_queue q; // or priority_queue, less> q2; // 오름차순 정렬 priority_queue, greater> q; q.top() // 가장 위에 위치한 값을 리턴 q.pop() // 가장 위에 위치한 값을 삭제 q.empty() // 큐가 비있는지를 리턴(bool) q.push(a) // 큐에 원소를 푸시} #include #include using namespace std;struct comp{ bool..

Programing/C++ 2025.01.23

[C++] 반올림, 올림, 내림, 소숫점 n번째 자리에서 반올림 (round, ceil, floor, fixed, precision)

내림, 올림, 반올림#include float a = 3.141592;cout 헤더 파일 cmath 안에 있는 세 가지 함수이다* round는 소숫점 아래 첫번째 자리에서 반올림한다 float a = 3.141592;cout round 함수는 C++11부터 지원하기 때문에, 위와 같은 방법으로도 반올림을 구현할 수 있다 소숫점 n번째 자리에서 반올림float a = 3.141592;cout.precision(3);cout precision 함수는 n번째 자리까지 출력한다(소숫점 무시)cout  소숫점이 고정되고 나면 precision 함수로 n번째 자리까지 출력하도록 지정하면 소숫점 아래 n번째 자리까지 출력한다 precision 함수를 사용하면 전부 자동으로 반올림이 된다

Programing/C++ 2025.01.22

[C++] 입력이 더 이상 안 들어올 때까지 입력 받기(cin.eof, getline)

EOF란 end of file의 약자이다입력이 끝나는 여부를 판단하기 위해서는 cin.eof()를 사용할 수 있는데,파일의 끝까지 읽은 뒤 다음 파일을 읽으려고 할 때 파일이 끝나 읽을 데이터가 없을 때 eof가 된다(true 반환)* 입력 파일을 따로 생성해서 읽지 않는 경우, ctrl + z 키를 이용해 eof 상태를 전송해 줄 수 있다string str;while(!cin.eof()){ getline(cin, str); // Or cin >> str;}위와 같은 방법으로 입력이 끝날 때까지 while문을 돌며 입력을 받도록 할 수 있다 혹은 아래와 같이 더 간결하게 변경할 수 있다string str;while (cin >> str){ cout // getline 헤더 파일#in..

Programing/C++ 2025.01.22