본문 바로가기

algorithm

(34)
백준 10699번 오늘 날짜 https://www.acmicpc.net/problem/10699 아이디어:1. 자기 언어에서 날짜를 출력할 수 있는지 묻는 문제ctime 라이브러리 include > time_t 구조체 > th 구조체와 localtime 함수로 시간 형식 // 10699#include #include using namespace std;int main() { ios::sync_with_stdio(false); cin.tie(NULL); time_t timer = time(NULL); struct tm* t = localtime(&timer); cout tm_year + 1900 tm_mon + 1 tm_mday; return 0;}
백준 1735번 분수 합 https://www.acmicpc.net/problem/1735 아이디어:1. 두 가지 방식: 최소 공배수를 구해서 먼저 분모를 만들고 계산할 지, 통분하고 합한 뒤에 기약분수로 변경할 지에서 후자 선택2. 우선 더하고3. 분자와 분모의 최대공약수를 따라 나눗셈4. 최대 공약수에는 유클리드 호제법 사용5. 유클리드 호제법을 위해 a > b 의 조건으로 수의 크기에 따라 정렬 // 1735#include using namespace std;int main() { ios::sync_with_stdio(false); cin.tie(NULL); int a, b, c, d, e, f, r; cin >> a >> b; cin >> c >> d; e = (a * d) + (b * c); f = b * d; if ..
백준 13241번 최소공배수 https://www.acmicpc.net/problem/13241 아이디어:1. 1934번 최소공배수 문제 코드 재활용2. 큰 수의 배수 중에서 작은 수로 나누어 떨어지는 가장 작은 배수 출력 코드가 1934번과 완전 동일// 13241#include using namespace std;int main() { ios::sync_with_stdio(false); cin.tie(NULL); long long int a, b, m, result; cin >> a >> b; if (a > b) { for (int j = 1; (a * j)  모범답안: 1934번과 동일하게 유클리드 호제법으로 최대공약수를 구한 뒤a * b / 최대공약수 = 최소공배수 공식 이용
백준 1934번 최소공배수 https://www.acmicpc.net/problem/1934 아이디어:1. 더 큰 수를 기준으로 삼고 배수를 구한다.2. 큰 수의 배수 중에서 작은 수로 나눴을 때 나머지가 0이 나오는 첫 번째 수를 최소공배수로 구한다.3. for 문의 반복자 시작점을 0이 아닌 1로 설정해서 결과가 항상 0이 나오는 상황을 방지한다. // 1934#include using namespace std;int main() { ios::sync_with_stdio(false); cin.tie(NULL); int t, a, b, m, max; cin >> t; for (int i = 0; i > a >> b; if (a > b) { for (int j = 1; (a * j)  모범답안:1. a * b = 최대공약수 ..
백준 11478번 서로 다른 부분 문자열의 개수 https://www.acmicpc.net/problem/11478 아이디어:1. set에 insert해서 중복 제거2. string의 substr(n, k) 함수: n부터 k개의 부분 문자열 반환3. for문 반복 조건을 적절하게 사용 // 11478#include #include #include using namespace std;int main() { string S; string tmp; set A; cin >> S; for (int i = 0; i