끄적끄적 코딩
article thumbnail
[C++] 백준 11656번 접미사 배열
알고리즘 2019. 9. 12. 01:00

문자열 문제입니다. 문자를 입력받고 앞글자를 하나씩 잘랐을 때의 모양들을 정렬하는 문제입니다. 문자를 전부 벡터에 넣고 sort함수로 정렬해서 출력했습니다. #include #include #include #include #include using namespace std; int main(int argc, char* argv[]) { string s; string temp; vector v; cin >> s; for (int i = 0; i < s.length(); ++i) { temp = s.substr(i, s.length() - i); v.push_back(temp); } sort(v.begin(), v.end()); for (int i = 0; i < v.size(); ++i) { cout

article thumbnail
[C++] 백준 10988번 팰린드롬인지 확인하기
알고리즘 2019. 9. 12. 00:55

문자열 문제입니다. 문자를 뒤집었을 때도 같은 문자일 경우 1을 아닐 경우 0을 출력합니다. 문자의 처음 = start 문자의 끝 = end 라고 했을 때 if(s[start +i] != s[end - i]) cout s; for (int i = 0; i < s.length() / 2; ++i) { if (s[i] != s[s.length() - i - 1]) { cout

article thumbnail
[C++] 백준 15353번 큰 수 A+B (2)
알고리즘 2019. 9. 12. 00:46

큰 수의 덧셈 문제입니다. 수를 입력받아 첫글자부터 차례대로 계산을 합니다. 올림이 생길경우 다음 수에 붙여줍니다. #include #include #include #include #include using namespace std; int carry = 0; int num; string x, y; string result = ""; string sum() { for (int i = 0; i < x.length(); ++i) { num = (x[i] - '0' + y[i] - '0' + carry) % 10; result += to_string(num); carry = (x[i] - '0' + y[i] - '0' + carry) / 10; } if (carry != 0) { result += to_str..

article thumbnail
[C++] 백준 10757번 큰 수 A+B
알고리즘 2019. 9. 12. 00:45

큰 수의 덧셈 문제입니다. 수를 입력받아 첫글자부터 차례대로 계산을 합니다. 올림이 생길경우 다음 수에 붙여줍니다. #include #include #include #include #include using namespace std; int carry = 0; int num; string x, y; string result = ""; string sum() { for (int i = 0; i < x.length(); ++i) { num = (x[i] - '0' + y[i] - '0' + carry) % 10; result += to_string(num); carry = (x[i] - '0' + y[i] - '0' + carry) / 10; } if (carry != 0) { result += to_str..

article thumbnail
[C++] 백준 15740번 A+B - 9
알고리즘 2019. 9. 12. 00:41

큰 수의 덧셈 문제입니다. 일반적인 덧셈으로 하면 오버플로우가 나므로 덧셈에 대해서 새로 만들어주었습니다. 각 수의 첫번째 자리부터 더하면서 올림이 있으면 그 올림을 다음 숫자에 더해주게 만들었습니다. 첫번째 자리부터 더하는 것을 편리하게 하기 위해 string을 reverse를 통해서 뒤집어서 v[i] ~ v[x.length()-1] 까지의 숫자에 접근했습니다. 수의 길이가 다를 경우를 위해 앞에 0을 붙여주었습니다. ex) 2000 11 => 2000 0011 -x -y의 경우 덧셈을 한 후 -를 붙여주었습니다. -x y, x -y의 경우 절대값이 큰 값에 작은 값을 뺀 후 절대값이 큰 값이 -일 경우 -를 붙여주었습니다. 계산 후 앞의 수에 0이 붙어있는 경우 처리해주었습니다. ex) 0001 =>..

article thumbnail
[C++] 백준 15666번 N과 M (12)
알고리즘 2019. 9. 11. 20:07

백트래킹 문제입니다. DFS를 통해서 모든 경우의 수를 검색해서 문제를 풀었습니다. #include #include #include #include #include using namespace std; int n, m; vector arr; vector v; void DFS(int x) { v.push_back(arr[x]); if (v.size() == m) { for (int i = 0; i < v.size(); ++i) { printf("%d ", v[i]); } printf("\n"); v.pop_back(); return; } for (int i = x; i < arr.size(); ++i) { DFS(i); } v.pop_back(); } int main(int argc, char* argv[..

article thumbnail
[C++] 백준 15665번 N과 M (11)
알고리즘 2019. 9. 11. 20:06

백트래킹 문제입니다. DFS를 통해서 모든 경우의 수를 검색해서 문제를 풀었습니다. #include #include #include #include #include using namespace std; int n, m; vector arr; vector v; void DFS(int x) { v.push_back(arr[x]); if (v.size() == m) { for (int i = 0; i < v.size(); ++i) { printf("%d ", v[i]); } printf("\n"); v.pop_back(); return; } for (int i = 0; i < arr.size(); ++i) { DFS(i); } v.pop_back(); } int main(int argc, char* argv[..

article thumbnail
[C++] 백준 15664번 N과 M (10)
알고리즘 2019. 9. 11. 20:05

백트래킹 문제입니다. DFS를 통해서 모든 경우의 수를 검색해서 문제를 풀었습니다. #include #include #include #include #include using namespace std; int n, m; int visit[10]; vector arr; vector v; void DFS(int x) { int use[10010]; memset(use, 0, sizeof(use)); v.push_back(arr[x]); if (v.size() == m) { for (int i = 0; i < v.size(); ++i) { printf("%d ", v[i]); } printf("\n"); v.pop_back(); return; } for (int i = x + 1; i < arr.size();..

검색 태그