목록C++ (49)
cyphen156
흔히 유클리드 호제법(Euclidean algorithm)으로 알려진 두 양의 정수의 최대공약수와 최소공배수를 빠르게 찾아내는 문제해결방법이다. 수식이 조금 난잡해서 보기 불편한데 함수 수식으로 변환하면 f(x) = ax + b가 성립한다면 gcd(a, b) = gcd(r, b)이다 GDC(greatest common divisor/최대공약수) 최대공약수를 구하는 일반적인 방법은 다음과 같다. 두 수를 소인수 분해하여 서로 공통되는 약수들을 찾아 모두 곱한다. A = 100, B = 12일 때 두 수의 약수들은 각각 (1, 2, 4, 5, 10, 20, 25, 50, 100), (1, 2, 3, 4, 6, 12)로 1 * 2 * 4 = 8이다. 코드로 약수를 찾아가는 과정은 다음과 같다 아래의 코드는 한..
구조체, 리스트를 사용한 자료구조 만들어보기 첫번째 스택 다 만드는데 대충 2시간쯤 걸렷나? 싶다 간만에 하니까 기억이 가물가물하네 기본적으로 스택은 리스트의 한 유형에 해당한다. LIFO(Last In Frist Out/후입 선출)이라는 구조를 가지고 있는데, 가장 마지막에 입력된 자료가 맨 처음 수행되는 하노이의 탑쌓기라고 생각하면 된다. 스택이 중요한건 컴퓨터가 메모리 상에서도 스택이라는 구조를 사용하기도 하지만, 운영체제 입장에서도 다른것은 신경쓸 필요 없이 최상위 데이터만 신경쓰면 되기에 처리 속도면에서 효율적인 자료구조라고 볼 수 있다. 스택이 비었을 경우의 동작 스택에 자료를 입력한 이후의 동작 /** * 스택자료구조 구현하기 * //리스트 * using struct * */ #define ..
8393번: 합 (acmicpc.net) 8393번: 합 n이 주어졌을 때, 1부터 n까지 합을 구하는 프로그램을 작성하시오. www.acmicpc.net 1부터 입력받은 수 까지의 합을 출력한다. 제약사항 0 > A >> B; cout
10950번: A+B - 3 (acmicpc.net) 10950번: A+B - 3 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. www.acmicpc.net 입력받은 두 정수의 합을 출력한다. 제약사항 Test == t; 0 < A, B < 10 C 풀이 A+B - 3_10950.c #define _CRT_SECURE_NO_WARNINGS #include int main(void) { int t, A, B; scanf("%d", &t); for (int i = 0; i < t; ++i) { scanf("%d%d", &A, &B); printf("%d\n", A + B); } return 0; } C++ 풀이 A+B - 3_10950.cpp #include using name..
2739번: 구구단 (acmicpc.net) 2739번: 구구단 N을 입력받은 뒤, 구구단 N단을 출력하는 프로그램을 작성하시오. 출력 형식에 맞춰서 출력하면 된다. www.acmicpc.net 입력받은 정수에 해당하는 곱셈식 (N * 1~9)을 출력하는 문제이다. 제약사항 1 N; for (int i = 1; i < 10; ++i) { cout
2480번: 주사위 세개 (acmicpc.net) 2480번: 주사위 세개 1에서부터 6까지의 눈을 가진 3개의 주사위를 던져서 다음과 같은 규칙에 따라 상금을 받는 게임이 있다. 같은 눈이 3개가 나오면 10,000원+(같은 눈)×1,000원의 상금을 받게 된다. 같은 눈이 2개 www.acmicpc.net 입력받은 두 정수를 시간을 기준(24시, 60분)기준으로 변환하여 45분을 감산하여 출력하면 되는 문제이다. 문제 출력 알고리즘 A == B == C : 10,000 + A * 1000 A == B || B == C || C == A : 1000 + (A or B or C) * 100 A != B != C : Max()*100 제약사항 주사위의 눈은 1~6까지 이다. C 풀이 알람 시계_2884 ...
2525번: 오븐 시계 (acmicpc.net) 2525번: 오븐 시계 첫째 줄에 종료되는 시각의 시와 분을 공백을 사이에 두고 출력한다. (단, 시는 0부터 23까지의 정수, 분은 0부터 59까지의 정수이다. 디지털 시계는 23시 59분에서 1분이 지나면 0시 0분이 된다.) www.acmicpc.net 세 정수(H, M, T)를 입력받아 시간 변환을 구현하는 문제이다. 이전 문제인 알람 시계를 일부 수정하면 간단하게 해결 된다. 이번엔 -연산이 아닌 +연산을 사용한다/ 제약사항 0 ≤ H ≤ 23 0 ≤ M ≤ 59 0 60 input -= 60; H += 1; } M += input; if (M > 59) { H += 1; M -= 60; } if (H >= 24) H -= 24; printf("%..
2884번: 알람 시계 (acmicpc.net) 2884번: 알람 시계 상근이는 매일 아침 알람을 듣고 일어난다. 알람을 듣고 바로 일어나면 다행이겠지만, 항상 조금만 더 자려는 마음 때문에 매일 학교를 지각하고 있다. 상근이는 모든 방법을 동원해보았지만, www.acmicpc.net 입력받은 두 정수를 시간을 기준(24시, 60분)기준으로 변환하여 45분을 감산하여 출력하면 되는 문제이다. 제약사항 0 ≤ H ≤ 23 0 ≤ M ≤ 59 C 풀이 알람 시계_2884 .c #define_CRT_SECURE_NO_WARNINGS #include int main(void) { int H, M; scanf("%d %d", &H, &M); if (M < 45) { H -= 1; M += 15; if (H < 0..