본문 바로가기
Coding Test/프로그래머스

[프로그래머스] Lv.1 숫자 문자열과 영단어 (java)

by CSEGR 2024. 2. 24.
728x90

프로그래머스 Lv.1에 있는 숫자 문자열과 영단어 문제를 풀어보겠다.

 

"one4seveneight" 1478
"23four5six7" 234567
"2three45sixseven" 234567

 

영단어에서 대응되는 숫자로 바꾸는 문제이다. replace를 활용하면 문제는 쉽게 풀린다. 

 

처음에는 replace 함수를 생각하지 못하고 

문자열의 길이로 처리하거나 하나하나 for문으로 문자가 완성될 때 까지 검사를 해야되나 생각했다... 

 

🟢 함수 replace() 

String str = "나는 코딩을 좋아한다. 하지만 나는 코딩을 못 한다.";
str = str.replace("코딩", "파이썬");
System.out.println(str);

//결과 
나는 파이썬을 좋아한다. 하지만 나는 파이썬을 못 한다.

사용법 : replace("변경하고자 문자열", "변경할 문자열")

 

따라서 내가 one, two, three ... 영단어를 숫자로 바꾸고자 한다. 

 

0부터 9까지의 영단어 중 어떤 단어가 나올지 모르기 때문에 0부터 9까지의 모든 영단어가 있는지 체크해주고자 한다. 

class Solution {
    public int solution(String s) {
        int answer=0;
        String[] num = {"zero", "one","two","three","four","five","six","seven","eight","nine"};
        for(int i = 0; i<10; i++)
        {
            s = s.replace(num[i], Integer.toString(i));
        }
        answer = Integer.parseInt(s);
        return answer;
    }
}

1. String 배열 num에 0부터 9까지의 영단어를 선언해줌. 

2. 0부터 9까지의 영단어에 대응된다면 숫자로 바꿔서 replace함수 적용 

3. 문자열 s를 정수형으로 바꿔주는 parseInt 함수 사용 

 

728x90