본문 바로가기

PS/릿코드

[릿코드 6] Zigzag Conversion (파이썬/python)

728x90

https://leetcode.com/problems/zigzag-conversion/description/

 

Zigzag Conversion - LeetCode

Can you solve this real interview question? Zigzag Conversion - 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

leetcode.com

 

 

단순 구현문제였습니다.

문제에서 지그제그로 문자열을 배치하라 해서

반복문을 돌며 그대로 배치한 후

마지막에 문자열들을 인덱스별로 전부 합쳐주면 됩니다.

 

class Solution:
    def convert(self, s: str, numRows: int) -> str:
        char_list = ["" for _ in range(numRows)]
        char_list_idx = 0
        is_down = True

        if numRows == 1:
            return s

        for char in s:
            char_list[char_list_idx] += char

            # 내려가는 방향일때
            if is_down:
                # 마지막 열에 도착했으면 그때부턴 올라가야한다.
                if char_list_idx == numRows - 1:
                    is_down = False
                    char_list_idx -= 1
                else:
                    char_list_idx += 1
            # 올라가는 방향일때
            else:
                # 맨 처음 열일경우 내려가야한다.
                if char_list_idx == 0:
                    is_down = True
                    char_list_idx += 1
                else:
                    char_list_idx -= 1

        return "".join(char_list)
728x90