[프로그래머스] 영어가 싫어요

당당·2023년 4월 21일
0

프로그래머스

목록 보기
12/245

https://school.programmers.co.kr/learn/courses/30/lessons/120894

📔문제

영어가 싫은 머쓱이는 영어로 표기되어있는 숫자를 수로 바꾸려고 합니다. 문자열 numbers가 매개변수로 주어질 때, numbers를 정수로 바꿔 return 하도록 solution 함수를 완성해 주세요.


🚫제한사항

numbers는 소문자로만 구성되어 있습니다.
numbers는 "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine" 들이 공백 없이 조합되어 있습니다.
1 ≤ numbers의 길이 ≤ 50
"zero"는 numbers의 맨 앞에 올 수 없습니다.


📝입출력 예

numbersresult
"onetwothreefourfivesixseveneightnine"123456789
"onefourzerosixseven"14067

📝입출력 예 설명

입출력 예 #1

"onetwothreefourfivesixseveneightnine"를 숫자로 바꾼 123456789를 return합니다.

입출력 예 #2

"onefourzerosixseven"를 숫자로 바꾼 14067를 return합니다.


🧮알고리즘 분류

  • 문자열
  • 해시
  • 배열
  • 수학

📃소스 코드


class Solution {
    public long solution(String numbers) {
        long answer = 0;
        boolean isRoop=true;
        
        
        while(isRoop){
            numbers=convertNum(numbers);
            for(int i=0;i<numbers.length();i++){
                if('a'<=numbers.charAt(i) && numbers.charAt(i)<='z'){
                    break;
                } //아직 영어가 남아있으면
                else{
                    isRoop=false;
                    break;
                }
            }
            
        }
        answer=Long.parseLong(numbers);
        
        return answer;
    }
    
    public static String convertNum(String s){
        if(s.contains("zero")){
            s=s.replace("zero","0");
        }
        if(s.contains("one")){
            s=s.replace("one","1");
        }
        if(s.contains("two")){
            s=s.replace("two","2");
        }
        if(s.contains("three")){
            s=s.replace("three","3");
        }
        if(s.contains("four")){
            s=s.replace("four","4");
        }
        if(s.contains("five")){
            s=s.replace("five","5");
        }
        if(s.contains("six")){
            s=s.replace("six","6");
        }
        if(s.contains("seven")){
            s=s.replace("seven","7");
        }
        if(s.contains("eight")){
            s=s.replace("eight","8");
        }
        if(s.contains("nine")){
            s=s.replace("nine","9");
        }
        
        return s;
    }
}

📰출력 결과


📂고찰

다른 방법이 있었을까.. 해서 봤는데

https://yongku.tistory.com/entry/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%EC%98%81%EC%96%B4%EA%B0%80-%EC%8B%AB%EC%96%B4%EC%9A%94-%EC%9E%90%EB%B0%94JAVA

반복문을 안써도 됐다..
replace()함수에 대한 얕은 지식이.. 이렇게 만들었다.

https://coding-factory.tistory.com/128

replace()는 해당 문자열에 있는 그 수를 한번에 변경해주니까..

profile
MySQL DBA 신입 지원

0개의 댓글