문제 간단 설명
오른쪽의 one4seveneight 과 같은 문자열이 주어졌을 때 이를 순수한 숫자로 변경하는 문제입니다.
풀이
문제의 요구사항을 그대로 구현하면 되는 구현 문제였습니다.
import java.util.*;
class Solution {
public int solution(String s) {
int answer = 0;
//숫자로 변환을 시켜주기 위한 재료로 map에 각각 담아놓습니다.
HashMap<String, Integer> map = new HashMap<>();
map.put("zero", 0);
map.put("one", 1);
map.put("two", 2);
map.put("three", 3);
map.put("four", 4);
map.put("five", 5);
map.put("six", 6);
map.put("seven", 7);
map.put("eight", 8);
map.put("nine", 9);
//결과를 담을 result와
//숫자가 될 문자열을 담을 str을 담습니다.
String result = "";
String str = "";
//주어진 문자열을 char로 하나씩 꺼내어 판단해줍니다.
for(int i=0; i<s.length(); i++){
char now = s.charAt(i);
if(!Character.isDigit(now)){ //만약 이번 char가 숫자가 아니라면 문자열이 시작된다는 뜻입니다.
str += now; //str에 이번 문자를 더해주고
if(map.containsKey(str)){ //만약 지금까지 완성된 문자가 map의 key에 포함된다면
result += map.get(str); //해당 수를 result에 더해주고
str = ""; //str은 초기화 해줍니다.
}
} else { //숫자였다면 그냥 result에 이어주면 됩니다.
result += now;
}
}
//결과 반환!
return Integer.parseInt(result);
}
}
'Coding Test > Programmers' 카테고리의 다른 글
[프로그래머스] 문자열 압축 파이썬 (0) | 2022.01.01 |
---|---|
[프로그래머스] 신규 아이디 추천 파이썬 (0) | 2021.12.28 |
[프로그래머스] 완주하지 못한 선수 (java) (0) | 2020.12.22 |