코린이의 소소한 공부노트

[프로그래머스/Lv.0] 영어가 싫어요 본문

코딩테스트 풀이/JAVA

[프로그래머스/Lv.0] 영어가 싫어요

무지맘 2022. 10. 31. 10:59

1. Input

1) 문자열 numbers

 

2. Output

1) numbers를 정수로 바꿔서 반환

 

3. Constraint

1) numbers는 소문자로만 구성되어 있다.

2) numbers"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine" 들이 공백 없이 조합되어 있다.

3) 1 numbers의 길이 50

4) "zero"numbers의 맨 앞에 올 수 없다.

 

4. Example

Input: number="onefourzerosixseven" -> Output: 14067

 

5. Code

1) 첫 코드(2022/10/31)

import java.util.ArrayList;
// main()
ArrayList<Integer> list = new ArrayList<Integer>();
for(int i=0 ; i<numbers.length() ; i++){
    char c = numbers.charAt(i);
    if(c=='z') { list.add(0); i+=3; }
    else if(c=='o') { list.add(1); i+=2; }
    else if(c=='e') { list.add(8); i+=4; }
    else if(c=='n') { list.add(9); i+=3; }
    else if(c=='t'){
        if(numbers.substring(i,i+2).equals("tw")) { list.add(2); i+=2; }
        else { list.add(3); i+=4; }
        }
    else if(c=='f'){
        if(numbers.substring(i,i+2).equals("fo")) list.add(4);
        else list.add(5);
        i+=3;
        }
    else{
        if(numbers.substring(i,i+2).equals("si")) { list.add(6); i+=2; }
        else { list.add(7); i+=4; }
        }
    }
long answer = 0;
for(int i=0 ; i<list.size() ; i++)
    answer += list.get(i) * Math.pow(10,list.size()-1-i);
return answer;