< 내 풀이 >
import java.util.*;
class Solution {
public int solution(String s) {
HashMap<String,Integer> map=new HashMap<>();
String arr[]={"zero","one","two","three","four","five",
"six","seven","eight","nine"};
for(int i=0;i<10;i++){
map.put(arr[i],i); //map 에 저장
}
for(String key:map.keySet()){
if(s.contains(key))
s=s.replace(key,Integer.toString(map.get(key)));
}
int answer = Integer.parseInt(s);
return answer;
}
}
✏️ 풀이 과정
1. 해시맵에 배열 arr 의 값을 key로, 0~9까지의 값을 value로 하여 저장한다.
2. 해시맵을 순회하며 문자열 s가 key를 포함하고 있으면 해당 값을 map의 key를 통해 얻은 값으로 변경한다.
=> 주의할 점: s는 문자열이므로 문자열 key를 바로 int형인 value로 바꾸지 못한다. String 형으로 변환하여 값을 전달해야한다.
3. 문자열 s를 int형으로 변환하여 answer에 저장한 후 반환한다.
< 다른 사람의 풀이 >
class Solution {
public int solution(String s) {
String[] strArr = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"};
for(int i = 0; i < strArr.length; i++) {
s = s.replaceAll(strArr[i], Integer.toString(i));
}
return Integer.parseInt(s);
}
}
➡️ 실행 시간은 내 코드가 더 짧게 나오긴 하지만, 위의 풀이가 더 간단해 보이긴 한다.
✍🏻 느낀점
프로그래머스 문제를 풀면서, 해시맵에 익숙해진 것 같다. 하지만 익숙해지면서, key-value 형태가 나오면 무조건 해시맵으로 풀려는 경향이 있다. 위의 풀이를 보면서 이렇게 간단하게 풀 수 있구나 싶어서 놀랐다. 이번 문제를 통해 replace 함수를 사용할 때 문자열의 값을 냅다 다른 타입으로 변환할 수 없다는 걸 새롭게 배웠다.
'코딩테스트 > Programmers' 카테고리의 다른 글
[JS] PCCP 기출문제 2번 / 퍼즐 게임 챌린지 (1) | 2024.12.15 |
---|---|
[JS] PCCP 모의고사 #2 1번 - 실습용 로봇 (1) | 2024.12.08 |
[JAVA] 이웃한 칸 (1) | 2024.06.10 |
[JAVA] 숫자 짝꿍 (0) | 2024.06.08 |
[JAVA] 완주하지 못한 선수 (1) | 2024.06.08 |