티스토리 뷰
이번 문제는 문자열의 특정 인덱스를 교체하는 문제이다.
나는 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();
}
}
나와 다르게 하나씩 새로운 버퍼에 할당하는 것이 아닌 문자열을 복사하고 그저 바뀌어야하는 위치에 목표 문자를 집어 넣었다.
훨씬 간단하고 명확했다.... 왜 이 생각을 못했는지.... 또 괜히 혼자 어렵게 생각했던 문제이다.
'코딩테스트 > Programmers' 카테고리의 다른 글
[Programmers] 입문) 배열 회전시키기 (Shift Array) (0) | 2023.06.28 |
---|---|
[Programmers] 입문) 외계행성의 나이 (아스키코드) (0) | 2023.06.28 |
[Programmers] 입문) 직각삼각형 출력하기 (Append) (0) | 2023.06.27 |
[Programmers] 입문) n의 배수 고르기 (Where) (0) | 2023.06.27 |
[Programmers] 입문) 대문자와 소문자 (아스키코드) (0) | 2023.06.27 |