티스토리 뷰

 

이번 문제는 문자열을 자르는 것이다.

Split으로 사용할 구분 문자가 없고 잘라야할 위치만 전달하기에 Substring을 사용하기로 했다.

 

using System;

public class Solution {
    public string[] solution(string my_str, int n) {
        string[] answer = new string[my_str.Length / n + ((my_str.Length % n == 0) ? 0 : 1)];
        
        for (int k = 0; k < answer.Length; k++) {
            int start = k * n;
            int length = Math.Min(n, my_str.Length - start);
            answer[k] = my_str.Substring(start, length);
        }
        
        return answer;
    }
}

 

이 문제를 풀며 멍청한 짓을 해서 시간이 걸렸다.

우선적으로 Substring을 사용한지 너무 오래되서 그런지 2번째 매개변수 length를 position으로 생각하여 값을 넣고 있었다.

 

다르게 설명하면 Substring의 첫번째 매개변수를 시작 위치, 두번째 매개변수를 끝 위치로 생각하여 넣은 것인데

length를 문자 그대로 해석하지 않고 "시작점에서 얼마만큼 자를까?"를 "시작점에서 어느 위치까지 갈까?"로 해석해버린 것이다.

 

 

str = "123456"
내 착각 :
str.Substring(2, 5); // "3456"
실제 동작 :
str.Substring(2, 4); // "3456"

 

최근에 올라온 글
최근에 달린 댓글
«   2025/06   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함