Level 0. 세로 읽기
C스타일 배열과 같이 copy() 함수를 통해 벡터에도 내부적으로 관리되는 배열에 메모리를 복사할 수 있다.
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
string solution(string my_string, int m, int c)
{
string answer = "";
size_t n = my_string.length() / m;
vector<string> v(n, string(m, '\0'));
for (int i = 0; i < n; ++i)
copy(my_string.data() + i * m, my_string.data() + (i + 1) * m, &v[i][0]);
for (int i = 0; i < n; ++i)
answer += v[i][c - 1];
return answer;
}
for문을 돌 때 m씩 더하면 1행씩 순회하는 것 같은 효과를 줄 수도 있다.
#include <iostream>
using namespace std;
string solution(string my_string, int m, int c)
{
string answer = "";
for (int i = c - 1; i < my_string.length(); i += m)
answer += my_string[i];
return answer;
}
'자료구조 & 알고리즘 > 프로그래머스' 카테고리의 다른 글
Level 2. 연속된 부분 수열의 합 (0) | 2023.05.23 |
---|---|
Level 0. 문자열 잘라서 정렬하기 (0) | 2023.05.22 |
Level 2. 구명보트 (1) | 2023.05.20 |
Level 2. N개의 최소공배수 (0) | 2023.05.19 |
Level 0. 글자 지우기 (0) | 2023.05.18 |