[코테/JAVA] 2021 카카오 채용연계형 인턴십 : 숫자 문자열과 영단어

    728x90
    반응형

    2021.10.11

    61번째 포스팅

     

    입사 217일차.

    코테 문제풀이 1주차 2번 문제

     

     

    0. 문제

      ① 2021 카카오 채용연계형 인턴십 : 숫자 문자열과 영단어

      ② 설명

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

    다음은 숫자의 일부 자릿수를 영단어로 바꾸는 예시입니다.

    1478 → "one4seveneight"
    234567 → "23four5six7"
    10203 → "1zerotwozero3"

    이렇게 숫자의 일부 자릿수가 영단어로 바뀌어졌거나, 혹은 바뀌지 않고 그대로인 문자열 s가 매개변수로 주어집니다. s가 의미하는 원래 숫자를 return 하도록 solution 함수를 완성해주세요.

      ③ 링크

     

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

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

    programmers.co.kr

     

     

    1. 접근방법

      생각해낸 방법은 1가지

      ① ASCII코드를 이용해서 숫자가 들어올 경우 그대로 Return. 

           문자일 경우, 영단어가 완성될때까지 저장한 뒤, 매칭되는 문자열의 숫자를 Return

     

     

    2. 풀이

      ① 접근방법 : ①

      ② 풀이

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    class Solution {
        /**
        * 시작시간 : 19:12
        * 완료시간 : 19:33
        */
        public int solution(String s) {
            int answer = solveAnswer(s);
            return answer;
        }
        
        public int solveAnswer(String s) {
            String number = "";
            String engNum = "";
            
            for (int i = 0; i < s.length(); i++) {
                
                // 1. ASCII 코드 58 = 10진법 숫자 10
                if (s.charAt(i) < 58) {
                    number += s.charAt(i);
                }
                else {
                    // 2. 문자는 engNum에 문자열로 저장한 뒤, switch-case를 통해 매칭되는 문자열의 숫자를 Return
                    engNum += s.charAt(i);
                    switch(engNum) {
                        case "zero": number += "0"; engNum = ""break;
                        case "one": number += "1"; engNum = ""break;
                        case "two": number += "2"; engNum = ""break;
                        case "three": number += "3"; engNum = ""break;
                        case "four": number += "4"; engNum = ""break;
                        case "five": number += "5"; engNum = ""break;
                        case "six": number += "6"; engNum = ""break;
                        case "seven": number += "7"; engNum = ""break;
                        case "eight": number += "8"; engNum = ""break;
                        case "nine": number += "9"; engNum = ""break;
                        default:
                    }
                }
            }
            
            // 3. 완성된 문자열은 int로 parsing하여 Return
            int answer = Integer.parseInt(number);
            return answer;
        }
    }
    cs

     

     

    3. 결과

    728x90
    반응형

    댓글