오늘은 Spring 입문 1주차 수업을 마치고, 문제 풀이를 하면서 꽤 흥미로운 경험을 했습니다. REST API 설계에 대한 개념을 배우고 나서 실제로 적용해볼 기회를 가졌는데, 아직은 낯설지만 앞으로 더 익숙해져야 할 부분이라는 생각이 들었습니다. REST API 설계 자체는 다음에 따로 자세히 정리해보기로 하고, 오늘의 주요 내용은 사실 따로 있습니다. 바로 프로그래밍 문제 풀이 중 겪은 삽질(?) 이야기입니다. 문제는 "이상한 문자 만들기"라는 문제였는데, 생각보다 꽤 까다로웠습니다.
문제는 간단히 말해, 공백으로 구분된 단어들을 가지는 문자열에서 각 단어의 짝수 번째 문자는 대문자로, 홀수 번째 문자는 소문자로 변환하는 것이었습니다. 처음에는 split() 메서드를 이용하여 공백으로 문자열을 분리하고, for문을 두 번 중첩하여 각 단어의 각 문자를 순회하면서 대소문자를 변환하는 간단한 로직을 생각했습니다. 하지만 현실은 녹록치 않았습니다. 문제의 함정은 바로 공백이었습니다. 문제 설명에는 명시적으로 언급되지 않았지만, 공백이 여러 개 연속으로 있거나, 문자열의 앞뒤에 공백이 여러 개 존재하는 경우를 고려해야 했습니다. 제가 작성한 단순한 코드는 이러한 케이스에 제대로 동작하지 않았습니다. 여러 개의 공백으로 인해 예상치 못한 인덱스 접근 오류가 발생했고, 결과적으로 예상과 다른 출력이 나왔습니다. 결국, split() 메서드의 동작 방식과 공백 처리에 대한 부분을 더 자세히 살펴보고, 공백 처리 로직을 추가하여 코드를 수정해야 했습니다. 단순히 문자열을 분리하는 것보다 훨씬 복잡한 상황에 직면했고, 꼼꼼한 코드 작성의 중요성을 다시 한번 깨달았습니다.
결론적으로, 오늘 Spring 수업과 함께 풀었던 알고리즘 문제를 통해 REST API 설계에 대한 기본적인 이해뿐만 아니라, 섬세한 공백 처리 등 예외 상황에 대한 고려가 얼마나 중요한지를 다시 한번 확인했습니다. 간단해 보이는 문제에서도 예상치 못한 함정이 존재할 수 있다는 점을 명심하고, 앞으로 더욱 꼼꼼하고 효율적인 코드 작성 습관을 들여야겠다는 생각을 했습니다. 그리고 다음부터 문제 설명을 더욱 꼼꼼히 읽어야겠다는 교훈도 얻었습니다!