오늘은 Spring 입문 첫 주차의 Entity 작성 경험과 함께, 문자열 정렬 알고리즘 문제를 풀면서 얻은 인사이트를 공유하려고 합니다. Spring Entity 작성은 아직 초보 단계라 다음에 더 자세히 다뤄보고, 오늘은 문자열 정렬 문제 풀이에 집중해 볼게요.
문제는 주어진 문자열 리스트를 특정 인덱스의 문자를 기준으로 오름차순 정렬하는 것이었습니다. 예를 들어, strings = ["sun", "bed", "car"] 이고 정렬 기준 인덱스 n = 1 이라면, 각 문자열의 인덱스 1의 문자 ('u', 'e', 'a')를 기준으로 정렬해야 하죠. 결과는 ["car", "bed", "sun"] 이 됩니다. 문제의 제한 조건은 strings의 길이(1~50), 문자열 길이(1~100), 그리고 모든 문자열의 길이가 n보다 크다는 점이었습니다. 특히, n번째 문자가 같은 경우에는 사전순으로 정렬해야 한다는 점이 중요한 조건이었습니다.
이 문제를 해결하기 위해 자바의 Arrays.sort() 메서드와 Comparator 인터페이스를 활용했습니다. Comparator 인터페이스를 구현하여 n번째 문자를 비교하는 로직을 작성하고, 같은 경우에는 사전순으로 비교하도록 추가적인 로직을 넣었습니다. 단순히 n번째 문자만 비교하는 것이 아니라, 두 문자열의 n번째 문자가 같을 경우 사전순으로 정렬하는 부분이 코드의 핵심이었죠. 처음에는 if-else 문을 사용하여 조건을 나눠 처리했는데, 코드가 다소 복잡해지는 것을 느껴 삼항 연산자를 사용하여 좀 더 간결하게 표현했습니다. 알고리즘 자체는 복잡하지 않았지만, 제한 조건을 모두 충족하는 정확하고 효율적인 코드를 작성하는 데 집중했습니다. 이 과정에서 Comparator 인터페이스를 활용하는 방법과 코드 가독성을 높이는 방법에 대해 다시 한번 생각해볼 수 있었습니다.
오늘 문자열 정렬 알고리즘 문제를 풀면서 기본적인 알고리즘과 자바의 유용한 기능들을 다시 한번 복습하는 시간을 가졌습니다. Spring Entity 작성과는 조금 다른 영역이지만, 문제 해결 과정에서 얻은 경험들이 앞으로의 개발 과정에 도움이 될 것이라고 생각합니다. 내일은 Spring 프로젝트의 다음 단계를 진행하면서 새로운 것을 배우고 이곳에 기록하도록 하겠습니다.