반응형

문제

 

 

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

 

 

풀이

문제 설명 그대로 구현했다.

String 형태의 문자 관리가 필요하기에 StringBuilder를 배열 형태로 이용하여 메모리 사용량을 줄이고, append하여 쉽게 구현 가능했다.

다만 문자 수가 열 수보다 작거나 열 수보다 문자 수가 작은 등의 예외 처리에 신경써야 했다.

 

코드

class Solution {
    public String convert(String s, int numRows) {
        if(s.length() < numRows) {
        	numRows = s.length();
        }
        
        StringBuilder[] temp = new StringBuilder[numRows];
        boolean order = true;
        int idx = 0;
		
        for(int i = 0; i < s.length(); i++) {
        	
        	if(temp[idx] == null) {
        		temp[idx] = new StringBuilder();
        	}
        	
        	temp[idx].append(s.charAt(i));
        	
        	if(idx >= numRows - 1) {
        		order = false;
        	} else if(idx <= 0) {
        		order = true;
        	}
        	
        	idx += order? 1 : -1;
        	if(idx < 0) { 
        		idx = 0;
        	}
        	
        }
        
        for(int i = 1; i < temp.length; i++) {
        	temp[0].append(temp[i].toString());
        }
        
		
		return temp[0].toString();
    }
}

 

결과

Runtime: 4 ms
Memory Usage: 45.00 MB

 

반응형

'LeetCode' 카테고리의 다른 글

8. String to Integer (atoi)  (0) 2024.11.12
7. Reverse Integer  (0) 2024.11.10
5. Longest Palindromic Substring  (0) 2022.02.14
4. Median of Two Sorted Arrays  (0) 2022.02.06
3. Longest Substring Without Repeating Characters 수정  (0) 2022.01.21

+ Recent posts