요즘 이직 준비 때문에 코딩 테스트를 보고, 면접 후기를 많이 보고 있습니다.

면접 후기중에 문자열 뒤집기 테스트가 있었다는 글을 보고

신입 개발자분들 중에 문자열에 약하신 분들이 있으실까 강의 남깁니다 :)

 


우선 코드부터 볼까요?

 

string originString = "ABCDE"; // 기준 문자열

int length = originString.Length; // 기준 문자열의 길이

StringBuilder sb = new StringBuilder(); 
//StringBuilder는 String의 재조합보다 참조 메모리를 덜 차지함

for(int i = length-1; i>=0 ; i--) //끝자리부터 도는 이유는 문자열을 역전시키기 위함
{
	sb.Append(originString.Substring(i,1)); 
    //Substring으로 문자열을 한개씩 StringBuilder에 추가해줌
}

string result = sb.Tostring(); //다시 string 타입으로 변환

Console.WriteLine(result);

result의 값은 "EDCBA" 가 됩니다 :)

 

사실 여기서 어려워 할 부분은 Substring() 메서드의 사용이라고 생각해요.

처음 Substring() 메서드를 접했을때 오버로드가 되어있는것을 보았고

startindex와 index를 조합하여 원하는 문자열을 골라 올 수 있는걸 알았고

전 그게 string.Substring(1,3); 일경우 1번째부터 3번째 인덱스의 문자열을 잘라오는줄로만 알고있었죠

자꾸 인덱스 오류가 나고, 쌩뚱맞은 문자열을 리턴 하길래 무슨 문제인가 디버깅 해보았습니다.

 

위의 예제를 활용해서 다시 살펴볼까요?

 


 

string originString = "ABCDE";
string index = originString.Length;

//1. startIndex가 0일경우 
string result = originString.Substring(0); //result == "ABCDE"

//2. startIndex가 1일경우
string result = originString.Substring(1); // result == "BCDE";

//3. startIndex가 0, length 추가했을 경우
string result = originString.Substring(0,length); // result == "ABCDE"; (0부터 5까지 잘라왔기때문)

//4. startIndex가 1, length 추가했을 경우
string result = originString.Substring(1,length); // index오류!!!
//1부터 (B부터) 5번째 길이만큼 자르려면 originString의 length가 6이상이어야 함
//현재 originString의 전체 length는 5이므로 index 오류가 발생

//5. startIndex가 1, length가 1일경우
string result = originString.Substring(1,1); // result == "B";
//1번째 문자열 (B부터) 1번째 길이만큼 자르면 본인을 가져오게됨

//6. startIndex가 1, length가 2일경우
string result = originString.Substring(1,2); // result == "BC";
//1번째 문자열 (B부터) 2번째 길이만큼 자르면 B와 그 다음 문자열인 C를 가져오게됨

 

이해가 쉽게 여러 케이스로 나눠 정리해봤는데 이해가 가시나요?

 

질문이나 조언은 언제든지 댓글로 남겨주시면 감사하겠습니다 :)

728x90

'개발 > C#' 카테고리의 다른 글

[C#] 3. 개인 라이브러리 누겟 패키지 배포하기  (0) 2022.06.20
[C#] 1. C#의 시작, Hello World !  (6) 2021.06.25

+ Recent posts