(Java)프로그래머스 - 숫자 문자열과 영단어

윤준혁·2024년 3월 13일

나의 풀이

import java.util.*;

class Solution {
    public int solution(String s) {
        int answer = 0;
        String str = ""; // 1
        
        for (int i = 0; i < s.length(); i++) {
            if (s.charAt(i) > 58) { // 2
                if (s.charAt(i) == 'z') {
                    i += 3;
                    str += "0";
                } else if (s.charAt(i) == 'o') {
                    i += 2;
                    str += "1";
                } else if (s.charAt(i) == 't') {
                    if (s.charAt(i + 1) == 'w') {
                        i += 2;
                        str += "2";
                    } else {
                        i += 4;
                        str += "3";
                    }
                } else if (s.charAt(i) == 'f') {
                    if (s.charAt(i + 1) == 'o') {
                        i += 3;
                        str += "4";
                    } else {
                        i += 3;
                        str += "5";
                    }
                } else if (s.charAt(i) == 's') {
                    if (s.charAt(i + 1) == 'i') {
                        i += 2;
                        str += "6";
                    } else {
                        i += 4;
                        str += "7";
                    }
                } else if (s.charAt(i) == 'e') {
                    i += 4;
                    str += "8";
                } else if (s.charAt(i) == 'n') {
                    i += 3;
                    str += "9";
                }
            } else { // 3
                str += s.charAt(i);
            }
        }
        
        return answer = Integer.parseInt(str);
    }
}

과정

  1. 매개변수 s는 String 형태로 주어지므로 s를 알맞게 변환한 후 저장할 str을 선언
  2. s를 순회하며 s의 i번째 문자가 58이상이라면(ASCII 참조) 첫 문자가 무엇인지 확인. t, f, s같은 경우엔 2가지씩 있으므로 i + 1번째 문자를 판단한 후 i를 해당하는 문자의 크기만큼 증가시키고, 알맞은 숫자 문자열을 str에 합친다
  3. 그 외엔 숫자이니 str에 그대로 넣어주고, answer에 str을 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);
    }
}

0개의 댓글