알고리즘 트레이닝/SW Expert Academy

문제 (요약) 주어진 수열이 문제에서 정의한 순열인지 판단하라. 길이 N인 순열은 1부터 N까지의 자연수를 중복 없이 순서에 상관없이 모두 사용하여 만든 수열을 의미한다. 접근 입력된 수열을 검사하여 모두 1회씩 출현했는지 확인한다. 풀이 #include #include using namespace std; string fnSolve(vector &v, int N) { for (int i = 1; i > T; for (int t = 1; t > N; vector v(N+1); for (int i = 0; i > idx; v[idx] += 1; } cout
문제 (요약) 주어진 입력에서 고른 두 수의 곱을 출력하라. 이 곱은 증가하는 연속숫자(예, 2, 23, 23456, 456 등)로 이루어져야 한다. 이 값이 여러 개인 경우 최댓값을 출력하고 조건에 맞도록 두 수를 고를 수 없을 경우 -1을 출력하라 접근 입력으로 10^3개 이하의 수열이 주어지므로 이들을 조합하여 곱을 구하면 10^6 개의 곱을 얻고 이들 값이 각각 조건을 만족하는지 확인하면 된다. 이는 충분히 작은 숫자이므로 전수조사(O(N^2))로 풀이할 수 있다. 풀이 #include #include #include FILE* stream; using namespace std; int T, N; int main(void) { cin >> T; for (int t = 1; t > N; vector..
문제(요약) 부분문자열의 갯수를 구하시오. (출처) 접근법 완전탐색구현 후, 시간초과 발생하여 Dynamic Programing (Memoization) 적용 풀이 #include #include using namespace std; string S; string sT = "SAMSUNG"; const int NUM = 1000000007; vector memo; int fnSolve(int IdxT, int IdxS) { if (sT.size() == IdxT) { return 1; } if (S.size() == IdxS) { return 0; } int Ret = memo[IdxT][IdxS]; if (Ret != -1) { return Ret; } if (sT[IdxT] == S[IdxS]) { ..
문제(요약) 8821. 적고 지우기 풀이 문자열에 홀수번 등장하는 숫자의 개수를 구합니다. 입력받는 숫자의 범위가 '0' ~ '9' 로 제한되므로 입력받을 때마다 개수를 증가시키고 이 값이 홀수인 경우를 답으로 산출합니다. 단, 문자열로 입력받게 되므로 이를 숫자형으로 변환할 필요가 있습니다. #include #include using namespace std; int main(int argc, char** argv) { int T; cin >> T; for (int i = 0; i > strNum; for (int j = 0; j < s..
문제(요약) 입력받은 10개의 숫자의 각 자리수를 더하여 그 중 최대값과 최소값을 화면에 출력하라. 풀이 각 자리의 숫자는 나머지 연산자를 통해 쉽게 구할 수 있습니다. #include #include using namespace std; FILE* stream; const int NUM_INPUT = 10; int main(void) { freopen_s(&stream, "sample_input.txt", "r", stdin); int T; cin >> T; for (int t = 1; t > n; int sum = 0; while (n > 0) { int dig = (n % 10); n /= 10; sum += dig; } if (sum > max) { max = sum; } if (sum < min..
#include #include using namespace std; FILE* stream; int N; #define MAX_N 1000 int input[MAX_N]; int fnSolve() { int Ret = 0; for (int i = 2; i > input[i]; } cout
문제 요약 주어진 입력 데이터에서 가장 많이 나온 값을 구하여라. (출현빈도가 동일한 경우 큰 값을 화면에 출력해라.) 풀이 #include #include using namespace std; FILE* stream; int T; int N; int Cnt[101]; int Input[1000]; int fnSolve(void) { int MaxNum = 0; int Ret = 0; for (int i = 0; i T; for (int t = 1; t > N; for (int i =..
쓴웃음
'알고리즘 트레이닝/SW Expert Academy' 카테고리의 글 목록