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

2025. 2. 10. 09:53·CodingTest/[프로그래머스] 자바
목차
  1. 문제 설명
  2. 문제 접근 방식
  3. 코드 구현 및 설명
  4. (1) 영단어와 숫자 매핑
  5. (2) 문자열 치환
  6. (3) 정수로 변환 후 반환

문제 설명

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
저작자표시 비영리 변경금지 (새창열림)
  1. 문제 설명
  2. 문제 접근 방식
  3. 코드 구현 및 설명
  4. (1) 영단어와 숫자 매핑
  5. (2) 문자열 치환
  6. (3) 정수로 변환 후 반환
'CodingTest/[프로그래머스] 자바' 카테고리의 다른 글
  • [Java] K번째수
  • [Java] 문자열 내 마음대로 정렬하기
  • [Java] 시저 암호
  • [Java] 삼총사
leonie.
leonie.
  • leonie.
    leveloper
    leonie.
  • 글쓰기 관리
    • 분류 전체보기
      • Language
        • Java
      • Git
      • CS
      • CodingTest
        • [프로그래머스] 자바
      • Information
      • Framework
        • Spring
      • DBMS
        • Redis
        • SQL
      • AWS
      • OS
        • Mac
      • 자격증
        • 정보처리기사
      • 회고
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

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

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

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.