📌 문제
숫자 문자열과 영단어
https://school.programmers.co.kr/learn/courses/30/lessons/81301
📌 코드
package programmers;
import java.util.HashMap;
import java.util.Map;
// 숫자 문자열과 영단어
public class P230515_1 {
public static int solution(String s) {
int answer;
Map<String, Integer> words = new HashMap<>() {
{
put("zero", 0);
put("one", 1);
put("two", 2);
put("three", 3);
put("four", 4);
put("five", 5);
put("six", 6);
put("seven", 7);
put("eight", 8);
put("nine", 9);
}
};
StringBuilder text = new StringBuilder();
StringBuilder result = new StringBuilder();
for (char c : s.toCharArray()) { // 1. toCharArray() 사용해서 char 배열 생성해서 문자 하나씩 꺼내기
if (Character.isDigit(c)) { // 2. 해당하는 문자가 숫자면 true 반환
result.append(c); // 3. 숫자일 경우 바로 result 에 바로 저장
} else {
text.append(c); // 4. 숫자가 아닌 경우 우선 text 스트링빌더에 저장
if (words.containsKey(text.toString())) { // 5. 저장된 스트링빌더를 문자열로 반환하여 map 에 key 값으로 존재하는지 확인
result.append(words.get(text.toString())); // 6. key 값에 존재 할 경우 get() 하여 해당 key 의 value 값 가져와서
text.setLength(0); // result 에 저장하고, 한단어가 끝나면 text 빌더 길이 0 으로 초기화
}
}
}
answer = Integer.parseInt(result.toString()); // 빌더 숫자로 변환하여 리턴
return answer;
}
public static void main(String[] args) {
System.out.println(solution("one4seveneight")); // 1478
System.out.println(solution("23four5six7")); // 234567
System.out.println(solution("2three45sixseven")); // 234567
System.out.println(solution("123")); // 123
}
}
'Programmers' 카테고리의 다른 글
[Java] 프로그래머스 : 키패드 누르기 (0) | 2022.07.12 |
---|---|
[Java] 프로그래머스 : 모의고사 (0) | 2022.07.06 |
[Java] 프로그래머스 : 두개 뽑아서 더하기 (0) | 2022.07.01 |
[Java] 프로그래머스 : 주식가격 (0) | 2022.06.09 |
[Java] 프로그래머스 : K번째 수 (0) | 2022.06.03 |