2. 영단어 배열을 순회하며 입력 문자열에 등장하는 모든 영단어를 치환한 문자열 생성
이제 solution() 메서드에서 각 영단어를 매칭되는 인덱스 값으로 변환하면 됩니다.
for (int i = 0; i < words.length; i++) {
s = s.replace(words[i], Integer.toString(i));
}
3. 변환된 문자열을 정수로 변환한 후 반환
마지막으로 변환된 문자열을 정수로 바꾸어서 반환하면 됩니다.
return Integer.parseInt(s);
이 방식도 변환할 때마다 전체 문자열을 새로 구성하니 최적의 방식보다는 비효율적입니다. 시간 복잡도를 따져 봅시다. 원본 문자열의 길이를 N, 변환해야 하는 영단어의 종류를 M이라고 합시다. replace() 메서드를 한 번 실행하는 데 O(N)이 소요됩니다. 이를 M번 반복하므로 전체 시간 복잡도는 O(NM)이 됩니다. 문제에서 N의 최댓값은 50, M의 최댓값은 10이므로 아주 넉넉한 시간 복잡도임을 알 수 있습니다.