코딩 테스트

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

우루쾅 2024. 2. 7. 00:09
728x90
반응형
SMALL

너무 쉽게 푼 문제라 정리안하고 넘어가려고 했는데

다른 사람 풀이를 보고 감동을 먹어서 블로그에 끄적끄적 하는 중...

 

솔직히 저는 너무 단순해서 

import java.util.*;

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

 

이렇게 풀었는데 살짝 현타가 오더라구요

출제자는 이런 답을 원하지 않았을 것 같은데;;

 

어쨌든 틀린 답은 아니여서 다른 사람 풀이를 구경했는데 

 

와우

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));
        
        System.out.println(s);
        return Integer.parseInt(s);
    }
}

 

솔직히 알고 보면 딱 보이는 답인데, 너무 단순하게 풀려고만 해서 안보였던 방법인 것 같아요 (코린이의 변명)

 

이 문제를 풀면서 저의 단점이 나와버렸슴니다

정답에 집중하면 안되고 방법에 집중을 해야되는데 머리를 안굴렸네요

 

각각 문자열을 자리 순번에 맞게끔 배열에 넣은 뒤

for 문을 통해 배열의 순서에 따라 s 문자열을 replaceAll 해버려서 문자로 변환시켜버리고

마지막 return에서 숫자로 변환!

 

저두 이렇게 깔끔하게 코딩을 하고싶어요...

 

 

코테고수가 될때까지 포기하지말자

 

 

 

 

 

출처

프로그래머스 - https://school.programmers.co.kr/learn/courses/30/lessons/81301

 

728x90
반응형
LIST