본문 바로가기
🍪 Ect/#CodingTest

[프로그래머스] 숫자 문자열과 영단어

by 개발한 너굴씨 2024. 9. 2.
728x90

 

 

오늘의 문제는 프로그래머스

 

숫자 문자열과 영단어

 

 

문제

 

 

 

문제 설명 

숫자의 일부 자릿수를 영단어로 바꾼 문자열 s가 주어집니다. 이떄 s가 의미하는 원래 숫자를 반환하는 문제입니다. 

 

[입력 예시]

"one4seveneight"

[출력 예시]

1478

 

 

 

 

문제 접근 방식

문자열의 특정 문자를 치환할 때 사용하는 메서드인 replace()를 이용하여 문제를 풀었습니다. 문제에서 주어진 각 숫자에 대응되는 영단어 표를 바탕으로 문자를 치환하였습니다. 변환된 문자열은 String 타입이므로 int 타입으로 형변환 하여 결과를 반환하였습니다. 

 

 

 

문제 풀이

class Solution {
    public int solution(String s) {
        
        s = s.replace("zero", "0"); 
        s = s.replace("one", "1");
        s = s.replace("two", "2");
        s = s.replace("three", "3");
        s = s.replace("four", "4");
        s = s.replace("five", "5");
        s = s.replace("six", "6");
        s = s.replace("seven", "7");
        s = s.replace("eight", "8");
        s = s.replace("nine", "9");
        
        int answer = Integer.parseInt(s);
        
        return answer;
    }
}

 

 

다른 풀이 알아보기 

replaceAll() 메서드를 활용하여 간결하게 작성된 코드입니다. replaceAll()은 바꾸고 싶은 문자로 문자열 전부를 치환해주는 기능을 합니다. 따라서 배열에 각 숫자에 대응되는 영단어를 저장하고 배열을 순회하며 영단어를 숫자로 변환해 문자열에 저장합니다. 

마찬가지로 변환된 문자열은 String 타입이므로 int형으로 형변환을 해주어 반환합니다. 

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);
    }
}

 

 

 

 

 

 

 

 

 

 

 

 

 

728x90

댓글