[Java] 숫자 문자열과 영단어

2025. 2. 10. 09:53·CodingTest/[프로그래머스] 자바

문제 설명

img1.png

네오와 프로도가 숫자놀이를 하고 있습니다.

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

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

  • 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

 

제한사항

  • 1 ≤ `s`의 길이 ≤ 50
  • `s`가 "zero" 또는 "0"으로 시작하는 경우는 주어지지 않습니다.
  • return 값이 1 이상 2,000,000,000 이하의 정수가 되는 올바른 입력만 `s`로 주어집니다.
 

입출력 예

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

 

 

 


 

 

 

문제 접근 방식

문자열 치환`replace()` 메소드를 사용한다.

숫자 영단어와 숫자를 매핑하는 배열을 생성하고, 반복문을 사용하여 문자열 내 모든 영단어를 해당 숫자로 대체한다.

이를 통해 문자열 형식을 숫자로 변환할 수 있다.

 

변환이 완료되면 문자열 전체가 숫자로 이루어져 있기 때문에,

`Integer.parseInt()` 메소드를 사용해 정수로 변환한다.

 

 

코드 구현 및 설명

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

 

 

 

(1) 영단어와 숫자 매핑

String[] words = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"};
  • 배열 words에 영단어를 저장한다.
  • 배열의 인덱스가 해당 숫자에 대응한다.
  • 예를 들어 `words[0]`은 "zero", `words[1]`은 "one"을 나타낸다.
  • 이를 사용하여 문자열 내의 모든 숫자 영단어를 반복적으로 찾아 숫자로 바꾼다.

 

 

(2) 문자열 치환

for (int i = 0; i < words.length; i++) {
    s = s.replace(words[i], String.valueOf(i));  // 영단어를 해당 숫자로 변환
}
  • for 반복문을 사용해 모든 영단어를 숫자로 치환된다.
  • `s.replace(words[i], String.valueOf(i))`는 문자열 s에서 `words[i]`와 일치하는 부분을 i로 교체한다.
  • 예를 들어, "one4seveneight" 문자열이 입력된 경우 "one"이 "1"로, "seven"이 "7"로, "eight"이 "8"로 변환된다.
    최종적으로 문자열은 "1478"이 된다.

 

 

(3) 정수로 변환 후 반환

return Integer.parseInt(s);
  • `Integer.parseInt(s)`메소드를 사용해 이를 정수로 변환한다.
  • 예: "1478" → 1478 (정수 형태)로 반환된다.

 

 

 

728x90
저작자표시 비영리 변경금지 (새창열림)
'CodingTest/[프로그래머스] 자바' 카테고리의 다른 글
  • [Java] K번째수
  • [Java] 문자열 내 마음대로 정렬하기
  • [Java] 시저 암호
  • [Java] 삼총사
leonie.
leonie.
  • leonie.
    leveloper
    leonie.
  • 글쓰기 관리
    • 분류 전체보기 N
      • Language
        • Java
      • Git
      • CS
      • CodingTest
        • [프로그래머스] 자바
      • Framework
        • Spring
      • Information
      • DBMS
        • Redis
        • SQL
      • AWS
      • OS
        • Mac
      • 자격증 N
        • 정보처리기사 N
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    정보처리기사
    자바
    정처기
    코딩테스트
    스프링
    알고리즘
    springboot
    정처기필기
    Java
    프로그래머스
  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.3
leonie.
[Java] 숫자 문자열과 영단어
상단으로

티스토리툴바