영어가 싫어요 [CT]

성배·2025년 1월 18일
0

코딩테스트

목록 보기
31/53

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

생각한 풀이
1. 공백이 없는 조합이라 시작 문자와 다음 문자를 비교해 해당 수에 매핑
2. 매핑한 수의 문자 길이만큼 넘어간다


class Solution {
    public long solution(String numbers) {
        String[] num = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"};
        
        StringBuilder sb = new StringBuilder();
        int i = 0;
        while(i<numbers.length()){
            for(int j=0;j<num.length;j++){
                if(numbers.startsWith(num[j],i)){
                    sb.append(j);
                    i+=num[j].length();
                    break;
                }
            }
        }
        return Long.parseLong(sb.toString());
    }
}

🐴 풀이
1. 배열 내부에 숫자의 영어 표기를 모두 담는다
2. StringBuilder로 해당하는 수를 append() 해준다
3. while문 내부에서 num을 돌면서 numbers의 영문자가 어떤 수인지 확인한다
4. numbers.startsWith()를 사용해 해당 문자가 어떤 접두사로 사용하는지 판별가능
5. 해당하는 수에 매핑하고 sb.append()하고 num[j].length()만큼 i를 증가
6. Long 타입으로 sb를 출력


A.startsWith("a")
특정 문자열 A가 "a"로 시작하는지 체크하는 함수
a로 시작한다면 true리턴, 아니면 false 리턴

A.startsWith(a,c)
특정 문자열 A가 a 문자열에 c 번째 인덱스로 시작하는지 체크하는 함수
A가 a의 c번째로 시작한다면 true리턴, 아니면 false 리턴

0개의 댓글