본문 바로가기

알고리즘/알고리즘

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

https://programmers.co.kr/learn/courses/30/lessons/81301

 

코딩테스트 연습 - 숫자 문자열과 영단어

네오와 프로도가 숫자놀이를 하고 있습니다. 네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게임입니다. 다음은 숫자의 일부 자

programmers.co.kr

 

 

import java.util.Arrays;

public class kakao81301 {
    public static void main(String[] args) {
        String s = "one4seveneight";
        int an = Solutionkakao81301.solution(s);

    }
}
class Solutionkakao81301 {
    public static int solution(String s) {
        int answer = 0;
        String[] strArray = new String[s.length()];
        // 숫자 0~9 -> 아스키코드 48~57
        // 영어 a~z -> 아스키코드 97~122
        for(int i=0; i<s.length(); i++){
            strArray = s.split("");
        }
        System.out.println(Arrays.toString(strArray));
        return answer;
    }
}
문자열.charAt(인덱스)  
   
class Solution {
    String answer;
    public int compare(char ch, int i, String s){
        switch(ch){
            case 'z' :
                answer += "0";
                return 3;
            case 'o' :
                answer += "1";
                return 2;
            case 'e' :
                answer += "8";
                return 4;
            case 'n' :
                answer += "9";
                return 3;
            case 't' :
                if(s.charAt(i+1)=='w'){
                    answer += "2";
                    return 2;
                }else{
                    answer += "3";
                    return 4;
                }
            case 'f' :
                if(s.charAt(i+1)=='o'){
                    answer += "4";
                    return 3;
                }else{
                    answer += "5";
                    return 3;
                }
            case 's' :
                if(s.charAt(i+1)=='i'){
                    answer += "6";
                    return 2;
                }else{
                    answer += "7";
                    return 4;
                }
        }
        return 0;
    }
    public int solution(String s) {
        answer = "";

        String temp = "";

        for(int i=0; i<s.length(); i++){
            char ch = s.charAt(i);
            if(ch>='a' && ch<='z'){
                int jump = compare(ch,i,s);
                i += jump;
            }else{
                answer += ch;
            }

        }

        return Integer.parseInt(answer);
    }
}

contains를 활용

class Solution {
    public int solution(String s) {
        String[] words = {"zero","one","two","three","four","five","six","seven","eight","nine"};

            for(int i = 0; i < words.length; i++){ //근데 체크 안해도 됨
                if(s.contains(words[i])){
                    s = s.replace(words[i], String.valueOf(i));
                }
            }

            return Integer.parseInt(s);
    }
}

 

replace를 활용

public class kakao81301 {
    public static void main(String[] args) {
        String s = "one4seveneight";
        int an = Solutionkakao81301.solution(s);

    }
}
class Solutionkakao81301 {
    public static int solution(String s) {
        int answer = 0;
        String[] numGraph = {"zero","one","two", "three","four","five","six","seven","eight","nine"};
        for(int i=0; i<10; i++){
            System.out.println(numGraph[i]+"    "+i+"");
            s=s.replace(numGraph[i],i+"");
        }
        System.out.println(s);

        answer = Integer.parseInt(s);
        return answer;
    }
}

결과

사용한 것:

replace 문자열 = 문자열.replace(대상, 치환문자);

String str = "사과는 맛있습니다. 추석에 사과를 먹습니다.";
String text = str.replace("사과", "배");
System.out.println(text);
결과)
배는 맛있습니다. 추석에 배를 먹습니다.
replaceAll 문자열 = 문자열.replaceAll(정규표현식대상, 치환문자);
Integer.parseInt Integer.parseInt(문자열);