프로그래머스 - 숫자문자열과 영단어[java]
아래 예제와 같이 파싱해주기만 하면되는 간단한 문제입니다.
입력
"one4seveneight"
출력
1478
String으로 들어온걸 Integer로 리턴해야되는게 가장 중요한 포인트!!
내가 푼 방법
import java.util.*;
class Solution {
public int solution(String s) {
StringBuilder answer = new StringBuilder();
HashSet<String> nums = new HashSet<String>();
for(int i = 0; i < 10; i++)
nums.add(String.valueOf(i));
StringBuilder sb = new StringBuilder();
for(int j = 0; j < s.length(); j++) {
sb.append(s.charAt(j));
if(sb.toString().length() == 1) {
if(nums.contains(sb.toString())) {
answer.append(sb.toString());
sb.delete(0, 1);
}
} else if (sb.toString().length() == 3) {
if(sb.toString().equals("two")){
answer.append(2);
sb.delete(0, 3);
} else if(sb.toString().equals("six")) {
answer.append(6);
sb.delete(0, 3);
} else if(sb.toString().equals("one")) {
answer.append(1);
sb.delete(0, 3);
}
} else if (sb.toString().length() == 4) {
if(sb.toString().equals("four")) {
answer.append(4);
sb.delete(0, 4);
} else if(sb.toString().equals("nine")) {
answer.append(9);
sb.delete(0, 4);
} else if(sb.toString().equals("zero")) {
answer.append(0);
sb.delete(0, 4);
} else if(sb.toString().equals("five")) {
answer.append(5);
sb.delete(0, 4);
}
} else if (sb.toString().length() == 5) {
if(sb.toString().equals("three")){
answer.append(3);
sb.delete(0, 5);
} else if(sb.toString().equals("eight")) {
answer.append(8);
sb.delete(0, 5);
} else if(sb.toString().equals("seven")) {
answer.append(7);
sb.delete(0, 5);
}
}
}
return Integer.parseInt(answer.toString());
}
}
무식하게 복사붙여넣기로 if문을 나열해서 풀었습니다.
HashSet에 0~9까지 숫자를 String으로 바꿔서 집어넣어놓고, StringBuilder에 하나씩넣고 비교하면서 또다른 StringBuilder에 답을 쌓고 parseInt해서 리턴했습니다.
바람직한 풀이법
import java.util.*;
class Solution {
public int solution(String s) {
int answer = 0;
int len = s.length();
String[] digits = {"0","1","2","3","4","5","6","7","8","9"};
String[] alphabets = {"zero","one","two","three","four","five","six","seven","eight","nine"};
for(int i=0; i<10; i++){
s = s.replaceAll(alphabets[i],digits[i]);
}
return Integer.parseInt(s);
}
}
배열에 맞추고 replaceAll함수로 한방에 끝냈네요. 최곱니다 ㄷㄷㄷ
Author And Source
이 문제에 관하여(프로그래머스 - 숫자문자열과 영단어[java]), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@davidko/프로그래머스-숫자문자열과-영단어java저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)