본문 바로가기

programmers-코딩테스트 연습/Level 1. 자바

2021-12-11 / 숫자 문자열과 영단어

문제 설명

네오가 고양이..? 단발머리 친구이고 프로도가 고민 중인 강아지

 

 

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

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

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

 

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

참고로 각 숫자에 대응되는 영단어는 다음 표와 같습니다.

 

 

숫자영단어

0 zero
1 one
2 two
3 three
4 four
5 five
6 six
7 seven
8 eight
9 nine

 

 


 

 

 

입출력 예

s result
"one4seveneight" 1478
"23four5six7" 234567
"2three45sixseven" 234567
"123" 123

 

 

 

입출력 예 설명

입출력 예 #1

  • 문제 예시와 같습니다.

입출력 예 #2

  • 문제 예시와 같습니다.

입출력 예 #3

  • "three"는 3, "six"는 6, "seven"은 7에 대응되기 때문에 정답은 입출력 예 #2와 같은 234567이 됩니다.
  • 입출력 예 #2와 #3과 같이 같은 정답을 가리키는 문자열이 여러 가지가 나올 수 있습니다.

입출력 예 #4

  • s에는 영단어로 바뀐 부분이 없습니다.

 

제한시간 안내

  • 정확성 테스트 : 10초

 


 

 

 

기초 코드

class Solution {
    public int solution(String s) {
        int answer = 0;
        return answer;
    }
}

 

정답 코드

class Solution {
    public int solution(String s) {
    String[] numList = new String[]{"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"};
        for (int i = 0; i < numList.length; i++) {
            s = s.replaceAll(numList[i], String.valueOf(i));
        }
        return Integer.parseInt(s);
    }
}

 

 

 

 


 

 

정답 설명

숫자는 총 10개로 주어져있기 때문에 배열에 넣어주어 사용하기 쉽게 해준다.

자바에 있는 문자열 치환 함수인 replaceAll()을 사용해주면 풀 수 있다.

 

replaceAll(String regex, String replacement) 

 

대상 문자열을 원하는 문자값으로 변경해주는 함수

첫번째 매개변수인 regex는 변경하고자하는 대상 문자열

두번째 매개변수인  replacement는 변환할 문자값

 

 

 

 

이 문제에서 regex는 배열 안에 들어있는 영단어이다. 즉 zero라는 문자열이 있다면 i값에 위치한 해당 문자열을 바꾸는 것이다. 이때 i값은 int 타입이기 때문에 String 타입으로 바꾸어 주는 String.valueof()를 사용하여 숫자와 영단어를 교환해주었다.

최종적으로 만들어진 s는 현재 매개변수로 넘어온 타입인 String값이다. 문제에서 제시한 리턴 타입은 int형이기 때문에 String -> int로 변환해주는 Integer.parseInt()를 사용하여 리턴한다.

 

 

 

 

 

 

 

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

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

programmers.co.kr

 

'programmers-코딩테스트 연습 > Level 1. 자바' 카테고리의 다른 글

2021-12-11 / 나머지가 1이 되는 수 찾기  (0) 2021.12.11
2021-07-19 / 비밀지도  (0) 2021.07.19
2021-07-18 / 체육복  (0) 2021.07.18
2021-07-18 / 예산  (0) 2021.07.18
2021-07-16 / 폰켓몬  (0) 2021.07.16