티스토리 뷰

 

이번 문제는 문자열의 특정 인덱스를 교체하는 문제이다.

 

나는 StringBuffer를 이용한 방법으로 접근했다.

 

using System;
using System.Text;

public class Solution {
    public string solution(string my_string, int num1, int num2) {
        StringBuilder builder = new StringBuilder();
        
        for (int k = 0; k < my_string.Length; k++)
            builder.Append(my_string[(k == num1) ? num2 : (k == num2) ? num1 : k]);
        
        return builder.ToString();
    }
}

 

결과가 생각보다 이쁘지 않았다.

for문과 Append를 반복하기에 어느정도 속도 지연이 있을 것이라 생각이 들어서이다.

 

다른 분들이 해결한 문제를 읽던 중 나와 비슷하지만 더 효율적이게 보이는 방법을 시도했다.

 

using System;
using System.Text;

public class Solution {
    public string solution(string my_string, int num1, int num2) {
        StringBuilder sb = new StringBuilder(my_string);
        char tempChar = sb[num2];
        sb[num2] = sb[num1];
        sb[num1] = tempChar;
        return sb.ToString();
    }
}

나와 다르게 하나씩 새로운 버퍼에 할당하는 것이 아닌 문자열을 복사하고 그저 바뀌어야하는 위치에 목표 문자를 집어 넣었다.

훨씬 간단하고 명확했다.... 왜 이 생각을 못했는지.... 또 괜히 혼자 어렵게 생각했던 문제이다.

최근에 올라온 글
최근에 달린 댓글
«   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
글 보관함