개발 일지
6. Zigzag Conversion (지그재그 변환) 본문
문자열은 "PAYPALISHIRING"다음과 같이 지정된 행 수에 지그재그 패턴으로 작성됩니다.
P A H N
A P L S I I G
Y I R
그런 다음 한 줄씩 읽습니다."PAHNAPLSIIGYIR"
문자열을 사용하여 여러 행에 대해 이 변환을 수행하는 코드를 작성하십시오.
string convert(string s, int numRows);
예시 1:
입력: s = "PAYPALISHIRING", numRows = 3
출력: "PAHNAPLSIIGYIR"
예시 2:
입력: s = "PAYPALISHIRING", numRows = 4
출력: "PINALSIGYAHRPI"
설명:
P I N
A L S I G
Y A H R
P I
예시 3:
입력: s = "A", numRows = 1
출력: "A"
조건:
- 1 <= s.length <= 1000
- s는 영문자(소문자 및 대문자), ', '.'로 구성됩니다.
- 1 <= numRows <= 1000
정답:
public class Solution {
public string Convert(string s, int numRows) {
if (numRows == 1)
{
return s;
}
List<string> str = new List<string>();
int index = numRows - 2;
bool down = true;
for (int i = 0; i < s.Length; i++)
{
if (i < numRows)
{
str.Add(s[i].ToString());
}
else
{
str[index] += s[i].ToString();
if (index == 0)
{
down = false;
}
else if (index == numRows - 1)
{
down = true;
}
if (down)
{
index -= 1;
}
else
{
index += 1;
}
}
}
string result = "";
for (int i = 0; i < str.Count; i++)
{
result += str[i];
}
return result;
}
}
해설:
배열 크기를 설정해주기 위해 첫번째는 add로 추가해주었고 그 이후부터 index를 이용하여 지그재그로 문자열을 추가할 수 있게하고 마지막에 모두 더해주었습니다.
'코딩 테스트 > LeetCode' 카테고리의 다른 글
2119. A Number After a Double Reversal (이중 반전 후 숫자) (0) | 2023.05.11 |
---|---|
17. Letter Combinations of a Phone Number (전화번호의 문자 조합) (1) | 2023.05.10 |
9. Palindrome Number (회문 번호) (0) | 2023.04.24 |
2. Add Two Numbers (두 숫자 더하기) (0) | 2023.04.24 |
1. Two Sum (두 합) (0) | 2023.04.10 |