목록[IT] (125)
할껀하고놀자
문제 링크입니다. https://www.acmicpc.net/problem/11726 11726번: 2×n 타일링 2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×5 크기의 직사각형을 채운 한 가지 방법의 예이다. www.acmicpc.net 1. 처음생각 - DP다. 점화식 찾아야한다. - 1이랑 2는 맞고, 3부터는 이전꺼 두개 더한 값이다. #include #include using namespace std; int Solution(int n) { vector dp(n+1,0); dp[1] = 1; dp[2] = 2; for (int i = 3; i > N; cout N; cout N; cout
해당 문제 링크입니다. 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
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/c0am3j/btqyceYZGEU/1FYmUhww0gkbd4YmdNkrO0/img.png)
신기한 문제가 있어서 리뷰해본다. 입력받는 개수가 안주어지면 어떻게 풀어야할까? 에대한 고민이다. #include using namespace std; int main() { int a, b; while (cin >> a >> b) { cout
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/btVmiW/btqycekmfXa/dKAE5rNnbrX1kIQ5mL7jVK/img.png)
KMP 알고리즘에 대한 공부를 끝마치고 문제를 풀기 위해 찾아봤더니 바로 적용할 수 있는 문제가 있었다. https://www.acmicpc.net/problem/1786 1786번: 찾기 첫째 줄에, T 중간에 P가 몇 번 나타나는지를 나타내는 음이 아닌 정수를 출력한다. 둘째 줄에는 P가 나타나는 위치를 차례대로 출력한다. 예컨대, T의 i~i+m-1번 문자와 P의 1~m번 문자가 차례로 일치한다면, i를 출력하는 식이다. www.acmicpc.net KMP 알고리즘만 알고 있다면 별로 어렵지 않게 풀 수 있었다. 처음 풀때 시간초과가 났는데 endl --> "\n" 을 해주어야 시간초과가 나지 않는다.. #include #include #include #include using namespace s..
#include #include using namespace std; bool check(string s) { stack st; for (int j = 0; j > tc; for (int i = 0; i ..
#include #include #include #include using namespace std; const int Max = 100 + 1; // 문제에서 상하우좌로 주어진다. int dy[4] = { -1,1,0,0 }; int dx[] = { 0,0,1,-1 }; int R, C, M; int arr[Max][Max]; // 크기 속도 방향 vector shark[Max][Max]; int main() { ios_base::sync_with_stdio(false); cin.tie(0); cin >> R >> C >> M; for (int i = 0; i > r >> c >> s >> d >> z; shark[r][c].push_ba..
getline 함수를 알 수 있었던 좋은 코드였습니다. 한줄 읽어서 배열처럼 처리할 수 있습니다. #include #include using namespace std; int main() { while (1) { string s; getline(cin, s); if (s == "END") { break; } for (int i = s.length()-1; i >=0; i--) { cout