본문 바로가기

Coding Test

(CodingTest) : 25일차 영어가 싫어요

 

 

☑️ 내가 쓴 답(오답)

체크 부분

    1) 변환하는 부분 학습 필요(다른 사람의 풀이 ->  replace()메서드 사용)

 

// 00:40
// String s 배열에 one~nine까지의 값들을 넣고
// answer = answer + numbers[i]을 추가해나가면서, answer이 s의 값과 일치한다면, 해당 i값을 return

class Solution {
    public long solution(String numbers) {
        long answer = 0;
        
        String n = "";
        String[] s = {"one", "two", "three", "four", "five", "six", "seven", "eight", "nine"};
        
        for(int i = 0; i < s.length; i++){                 // i는 s의 길이만큼 반복  
           for(int j = 0; j < numbers.length(); j++){        // j는 number의 길이만큼 반복  
            if(n.equals(s[i])){ // i=0일 때, ""과 "one"은 불일치 
                answer += (i+1);
            } else {            // n = "o"
                n += numbers.charAt(j);
            }
           }
        }
        return answer;
    }
}

 

 

☑️ 다른 사람의 풀이

 체크  부분

   1) replace(a,b)를 통하여 a값이 b로 대체되도록 하기

   2) a,b값은 charSequence형태(String,StringBuffer,StringBuilder)여야만 한다

       * int, long 같은 숫자형 타입은 CharSequence가 아니므로 직접적으로 사용할 수 없음

   3) 값을 Long타입으로 변환하려면, Long.parseLong(value)를 사용

class Solution {
    public long solution(String numbers) {
        long answer = 0;
        
        numbers = numbers.replace("zero","0");
        numbers = numbers.replace("one","1");
        numbers = numbers.replace("two","2");
        numbers = numbers.replace("three","3");
        numbers = numbers.replace("four","4");
        numbers = numbers.replace("five","5");
        numbers = numbers.replace("six","6");
        numbers = numbers.replace("seven","7");
        numbers = numbers.replace("eight","8");
        numbers = numbers.replace("nine","9");
        
         answer = Long.parseLong(numbers);
        
        return answer;
        
        
    }
}