프로그래머스 코딩테스트/JAVA
[프로그래머스] 숫자 문자열과 영단어 JAVA
Coding-Su
2024. 7. 30. 21:53
728x90
문제
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
정답
import java.util.*;
class Solution {
public int solution(String s) {
int answer = 0;
String result = "";
Map<String, Integer> wordNums = new HashMap<String, Integer>();
wordNums.put("zero", 0);
wordNums.put("one", 1);
wordNums.put("two", 2);
wordNums.put("three", 3);
wordNums.put("four", 4);
wordNums.put("five", 5);
wordNums.put("six", 6);
wordNums.put("seven", 7);
wordNums.put("eight", 8);
wordNums.put("nine", 9);
char[] nums = {'0', '1', '2', '3', '4', '5', '6', '7', '8','9'};
String same = "";
for(int i = 0; i < s.length(); i++) {
boolean flag = false;
for(int j = 0; j < 10; j++) {
if(s.charAt(i)==(nums[j])) {
result += nums[j];
flag = true;
break;
}
}
if (flag == true) continue;
same += s.charAt(i);
if (wordNums.containsKey(same)) {
result += wordNums.get(same);
same = "";
}
}
answer = Integer.valueOf(result);
return answer;
}
}
map을 이용하여 숫자를 모두 넣어주었습니다.
for 문을 사용하여 숫자인지 아닌지를 먼저 확인을 하고, 숫자인 경우 result에 추가를 하고 만약 숫자가 아닌 경우 다음 if문으로 넘어갑니다. 이때 글자를 하나씩 받으면서 map에 있는 글자와 같으면 result에 추가를 해주는 방법으로 문제를 풀었습니다.
728x90