목록전체 글 (159)
할껀하고놀자
해당 문제 링크입니다. https://www.acmicpc.net/problem/1463 1463번: 1로 만들기 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. www.acmicpc.net 1. 처음생각 - DFS로 풀면 되겠다! #include #include using namespace std; int answer; void Solution(int n, int c) { if (n == 1) { if (answer > c)answer = c; } else { if (n % 3 == 0) Solution(n / 3, c + 1); if (n % 2 == 0) Solution(n / 2, c + 1); Solution(n - 1, c + 1); } } int main() { ..
문자열 검색 알고리즘. for문 한번만 돌기 때문에 좋다. #include #include using namespace std; vector makeTable(string pattern) { int j = 0; int patternSize = pattern.size(); vector table(patternSize, 0); for (int i = 1; i 0 && pattern[i] != pattern[j]) { j = table[j - 1]; } if (pattern[i] == pattern[j]) { table[i] = ++j; } } return table; } void KMP(string parent, string pattern) { ve..
구분자가 , | 처럼 주어진다면 어떻게 처리할 것인가? #include 을 이용해보자 getline(cin,s,','); 이건 , 이전까지 받겠단 말이고 getline(cin,s); 이건 \n 까지 받겠단 말이다. 다 하고 나서는 stoi(s) 해서 int화 시켜주고 더하자. #include #include using namespace std; int main() { int N; cin >> N; string a, b; for (int i = 0; i < N; i++) { getline(cin, a,','); getline(cin, b); cout