-
[LeetCode] ZigZag Conversion알고리즘 2019. 9. 19. 21:39
문제
The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of rows like this: (you may want to display this pattern in a fixed font for better legibility)
P A H N
A P L S I I G
Y I R
And then read line by line: "PAHNAPLSIIGYIR"
Write the code that will take a string and make this conversion given a number of rows:
string convert(string s, int numRows);
Example 1:
Input: s = "PAYPALISHIRING", numRows = 3 Output: "PAHNAPLSIIGYIR"
Example 2:
Input: s = "PAYPALISHIRING", numRows = 4 Output: "PINALSIGYAHRPI"
Approach
규칙을 찾아보면 첫째줄과 마지막줄은 (row-1) * 2 마다 index를 올리고
위에서부터 n만큼 떨어진 줄은 ((row-1) * 2) - (2 * i), 2 * i씩 인덱스를 올리는 것을 확인할 수 있다.
이 규칙으로 하면되는데 스트링 배열 범위를 잘못생각해서 이상하게 시간을 많이썼다...
Code
https://github.com/chi3236/algorithm/blob/master/LeetCode_ZigZagConversion.cpp
'알고리즘' 카테고리의 다른 글
[LeetCode] Longest Common Prefix (0) 2019.09.20 [LeetCode] String to Int (0) 2019.09.20 [LeetCode] Longest Palindromic Substring (0) 2019.09.19 [LeetCode] 3Sum (0) 2019.09.18 [LeetCode] Roman To Integer (0) 2019.09.08