본문 바로가기
문제풀이/프로그래머스

숫자 문자열과 영단어 / 프로그래머스 연습문제 / programmers / level1 / Java

by RUCKUS 2021. 7. 27.

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

 

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

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

programmers.co.kr


이번에 지원했던 카카오 채용연계형 인턴십에 나왔던 문제다. 후...지금도 알알못이긴 하지만 당시에는 더욱 잘 몰랐기에 너무 어려웠던 역시나 탈랐했었다.

 

다만, 프로그래머스에 문제가 올라와서 테스트때 작성했던 코드와는 다른 방법으로 한번 풀어봤다.

 

이전에는 이런식으로 풀이했다.

1. 주어진 문자열의 길이만큼 반복문을 실행한다.

2. 임시 String 값을 하나 선언하여 문자형을 하나씩 더해줄 것이다.

3. 그런데 주어진 문자형이 숫자이거나 더하는 도중 문자열이 숫자에 해당되면 해당 숫자를 결과 String에 더한다.

4. 숫자와 문자를 판별해주는 것은 별도의 메소드를 만들어 Switch문으로 작성한다.

 

이렇게 해도 답은 잘 나온다. 다만, 공부하다보니 더 쉬운 함수를 생각해냈다.

바로 java.string.replaceAll !!! 이녀석만 있으면 10줄도 안되어서 끝난다.

 

[알고리즘 flow]

1. 각각 숫자와 숫자영문을 배열로 선언한다. 0 ~ 9, zero ~ nine

2. 해당 배열의 길이만큼 반복하면서 replaceAll 함수로 바꿔준다.

3. 결과를 숫자로 변환하여 리턴

 

[작성코드]

    public int solution(String s) {
        int answer = 0;
        
        String [] text = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"};
        String [] num = {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"};
        
        for (int i = 0; i < text.length; i++) {
            s = s.replaceAll(text[i], num[i]);
        }
        
        System.out.println(s);
        answer = Integer.parseInt(s);
        return answer;
    }

넘나 간단한 것...

그래도 이제 1레벨 정도는 조금 여유있게 푸는 것 같다. 최근 회사에 적응하느라 약 2주간 공부를 하지 못했는데 그래서 인지 조금은 감이 떨어진 것 같다. 다시 페이스를 천천히 끌어올려보자!

 

[깃허브링크]

https://github.com/RUCKUSJERRY/practiceOfAlgorithm/blob/main/Prs_Pratice/src/com/level01/StringToInteger.java

 

GitHub - RUCKUSJERRY/practiceOfAlgorithm

Contribute to RUCKUSJERRY/practiceOfAlgorithm development by creating an account on GitHub.

github.com