728x90
시간 제한 : 2초
메모리 제한 : 128MB
입력
첫째 줄에 수열의 크기 N과 K가 주어진다. N은 20보다 작거나 같은 자연수이고, K는 0보다 크거나 같고, N-1보다 작거나 같은 자연수이다. 둘째 줄에는 수열이 ‘,’로 구분되어 주어진다.
출력
첫째 줄에 K번 변형한 수열을 ‘,’로 구분하여 출력한다.
소스코드
#include <iostream> #include <string> #include <vector> using namespace std; void tokenizer(string& str, vector<string>& token, string delimiter) { size_t lastPos = str.find_first_not_of(delimiter, 0); size_t pos = str.find_first_of(delimiter, lastPos); while (string::npos != pos || string::npos != lastPos) { token.push_back(str.substr(lastPos, pos - lastPos)); lastPos = str.find_first_not_of(delimiter, pos); pos = str.find_first_of(delimiter, lastPos); } } int main(void) { vector<string> token; string s; int n, k, arr[20]; cin >> n >> k; cin >> s; tokenizer(s, token, ","); for (int i = 0; i < n; i++) arr[i] = stoi(token[i]); for(int i=1;i<=k;i++) for(int j = 0; j < n-i; j++) arr[j] = arr[j + 1] - arr[j]; for (int i = 0; i < n - k - 1; i++) cout << arr[i] << ','; cout << arr[n - k - 1]; }
Tip
나온 순서대로 다 계산해주기만 하면 되지만, C++을 이용하는 경우 문자열로 입력 받아야 한다는 부분을 고려해야 한다. C++ string을 이용하는 경우엔 tokenizer함수를 별도로 구현해야 한다.
728x90
'Computer Science > Algorithm Problem' 카테고리의 다른 글
백준] 8974 - 희주의 수학시험 (0) | 2018.02.07 |
---|---|
백준] 5554 - 심부름 가는 길(JOI 2011 예선) (0) | 2018.02.05 |
백준] 1032 - 명령 프롬프트 (0) | 2018.02.04 |
백준] 4613 - Quicksum(ACM-ICPC Regional) (0) | 2018.02.03 |
백준] 7785 - 회사에 있는 사람(KBTU) (0) | 2018.02.03 |