코딩테스트/LeetCode

[LeetCode] 6 - Zigzag Conversion

ShovelingLife 2024. 4. 3. 13:18
class Solution {
public:
	string convert(string s, int numRows) {
		string res;

		vector<string> v(numRows);
		auto iter = s.begin();
		int idx = 0;
		bool flag = true;

		// 1일 때 항상 일치함
		if (numRows == 1)
			return s;

		// s의 시작점부터 실행
		// 로직) 끝에 다다랐을 때 방향을 지정
		while (iter != s.end())
		{
			v[idx].push_back(*iter);
			idx = (flag) ? idx + 1 : idx - 1;

			if (idx == numRows - 1 ||
				idx == 0)
				flag = !flag;

			iter++;
		}
		for (const auto& item : v)
			res += item;

		return res;
	}
};