99클럽 코테 스터디 4일차 TIL

Gaeng·2024년 10월 31일
post-thumbnail

숫자 문자열과 영단어
https://school.programmers.co.kr/learn/courses/30/lessons/81301

해결 방법

먼저 문자열을 숫자로 바꿔야하기에 예시로 제공하는 것을 배열로 만들어 그 것과 비교하고,

문자형 Character.isAlphabetic(c) 이면 문자를 더해서 배열과 비교하여 배열의 값을 숫자로 바꾸고, 숫자이면 그대로 숫자로 표현.
마지막에 Integer로 변환하여 출력.

코드 간결하게 짜려고 찾아보면서 replace처리로 해서 바로 해결 하는 것을 보고, 더 쉽게 할 수 있는데, 너무 어렵게 생각했구나.

class Solution {
    public int solution(String s) {
         int answer = 0;
        String[] str = {"zero", "one", "two", "three",
                "four", "five", "six", "seven", "eight", "nine"};
        String str_s = "";
        String result = "";
        for (int i = 0; i < s.length(); i++) {
            char c = s.charAt(i);
            if ((Character.isAlphabetic(c))) {
                str_s += c;
                for (int j = 0; j < str.length; j++) {
                    if (str_s.equals(str[j])) {
                        result += Integer.toString(j);
                        str_s="";
                    }
                }
            } else {
                result += c;
                str_s="";
            }
        }
        answer = Integer.parseInt(result);
        return answer;
    }
}

replace를 활용하여 더 간결한 코드

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

        for (int i = 0; i < str.length; i++) {
            s = s.replace(str[i], String.valueOf(i));
        }
        int answer = Integer.parseInt(s);
        System.out.println(answer);
        return answer;
    }
}
profile
문제를 해결하면서 나온 문제를 기록하는 노트

0개의 댓글