
이런 유형의 문제를 처음 보면 머릿 속에 미리 one, two, three, four... 숫자에 해당하는 영단어를 미리 숫자와 매칭을 시켜놓고 들어가야 되나? for문을 이용해서 반복문을 돌릴 때 반복문 안에서 어떻게 단위(숫자 하나) 별로 자를 수 있지? 어떻게 영어로 된 부분을 숫자로 교체하지? 등등 다양한 고민이 생길 수 있다.
나 역시 그랬다.
이 문제는 별거 없다. 그냥 java에서 교체하는 함수 replace만 알고있으면 된다.
String 배열에 영단어들을 저장하고 반복문을 10번 돌리면 되는 문제다.
반복문이 한 번 돌 때마다 일치하는 것이 있다면 숫자로 대체되게끔 하는 것을 말한다.
내가 범했던 실수가 하나있다.
바로 for문 안에 if문을 사용했던 것이다.
"만약 words에 있다면 교체한다" 라는 로직을 사용하고 싶었던 것인데 그럴 필요가 전혀없었다.
java의 replace()라는 함수는 일치하는 것이 없을 경우 그냥 패스하기 때문이다.
또 하나 유의할 점이 있다.
replace함수의 특성상 두 번째로 와야하는 것은 문자열이어야 한다.
따라서 i가 아닌 i+"" 를 사용하여 문자열 형태로 써야 한다.
최종 코드다
class Solution {
public int solution(String s) {
String[] words = {"zero", "one", "two", "three", "four", "five", "six"
, "seven", "eight", "nine"};
for (int i=0; i<words.length; i++) {
s = s.replace(words[i], i+"");
}
int answer = Integer.parseInt(s);
return answer;
}
}'PS' 카테고리의 다른 글
| [프로그래머스] 주식가격 (0) | 2026.07.10 |
|---|---|
| [프로그래머스] 푸드 파이트 대회 (0) | 2026.07.05 |
| [프로그래머스] 시저 암호 (0) | 2026.06.30 |
| [프로그래머스] 이상한 문자 만들기 (0) | 2026.06.25 |
| [프로그래머스] 최대공약수와 최소공배수 (0) | 2026.06.23 |