프로그래머스 숫자 문자열과 영단어 JAVA 풀이 (문자열, replace)

2026. 6. 2. 22:42·코테(Solved.ac + Programmers)
728x90

🔗 문제 링크

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


📌 문제 개요

숫자의 일부 또는 전체가 영단어로 표현된 문자열이 주어진다.

문자열에 포함된 영단어를 숫자로 변환하여 원래 숫자를 반환

one4seveneight
// 1478

 


📌 접근 방법

숫자와 영단어는 다음과 같이 1:1로 대응

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

영단어를 배열에 저장한 후 반복문을 돌면서 숫자로 치환

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));
}

예를 들어

s = "one4seveneight";
one4seveneight
↓
14seveneight
↓
147eight
↓
1478

📌 핵심 코드

s = s.replace(words[i], String.valueOf(i));

words[i] : 현재 치환할 영단어 입니다.

i = 1
words[i]
"one"

String.valueOf(i) : 정수를 문자열로 변환합니다.

String.valueOf(1)
"1"

↓

i = 1

↓

s = s.replace("one", "1");

↓

"one4seveneight"

↓

"14seveneight"
"14seveneight"

📌 왜 다시 s에 저장해야 할까?

문자열(String)은 불변(Immutable) 객체 만 호출하면 원본 문자열은 변경되지 않습니다.

s.replace("one", "1");

그래서 반드시  처럼 반환된 새로운 문자열을 다시 저장해야 합니다.

s = s.replace("one", "1");

반복문 전체 동작 실제로는 다음 코드가 순서대로 실행

for (int i = 0; i < words.length; i++) {
    s = s.replace(words[i], String.valueOf(i));
}
s = s.replace("zero", "0");
s = s.replace("one", "1");
s = s.replace("two", "2");
s = s.replace("three", "3");
s = s.replace("four", "4");
s = s.replace("five", "5");
s = s.replace("six", "6");
s = s.replace("seven", "7");
s = s.replace("eight", "8");
s = s.replace("nine", "9");
 

📌 전체 코드

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);
    }
}
 

📄 정리

  • 숫자와 영단어의 대응 관계를 배열로 저장
  • replace()를 활용하여 영단어를 숫자로 변환
  • String.valueOf()로 숫자를 문자열로 변경
  • 문자열은 불변 객체이므로 치환 결과를 다시 저장해야 함
  • 모든 영단어를 숫자로 바꾼 후 Integer.parseInt()로 정수 변환
728x90

'코테(Solved.ac + Programmers)' 카테고리의 다른 글

프로그래머스 콜라 JAVA 풀이 (구현, 시뮬레이션)  (0) 2026.06.04
카드 뭉치 JAVA 풀이 (구현, 문자열)  (0) 2026.06.03
[프로그래머스] K번째수 JAVA 풀이 (알고리즘, 시간복잡도)  (0) 2026.05.28
프로그래머스 푸드 파이트 대회 JAVA 풀이  (0) 2026.05.27
프로그래머스 두 개 뽑아서 더하기 (JAVA)  (0) 2026.05.26
'코테(Solved.ac + Programmers)' 카테고리의 다른 글
  • 프로그래머스 콜라 JAVA 풀이 (구현, 시뮬레이션)
  • 카드 뭉치 JAVA 풀이 (구현, 문자열)
  • [프로그래머스] K번째수 JAVA 풀이 (알고리즘, 시간복잡도)
  • 프로그래머스 푸드 파이트 대회 JAVA 풀이
PUSH → MERGE → DEPLOY
PUSH → MERGE → DEPLOY
데이터 흐름과 운영 자동화를 설계하는 백엔드 개발자
  • PUSH → MERGE → DEPLOY
    Coding Dongin
    PUSH → MERGE → DEPLOY
  • 전체
    오늘
    어제
    • MEUN
      • 코테(Solved.ac + Programmers)
      • BootCamp(JAVA)
      • JAVA
      • SpringBoot
      • JavaScript
      • JSP
      • DB(SQL)
      • React
      • HTML_CSS
      • jQuery
      • SCSS
      • GSAP
      • 설치 + 꿀팁
      • 정보처리기사 오답노트
      • 정보처리기사 기출문제
  • 블로그 메뉴

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

    • GIT
  • 공지사항

  • 인기 글

  • 태그

    level1
    dp
    문자열
    정처기오답노트
    코딩테스트
    완전탐색
    java
    자바
    level0
    구현
    기출문제
    solved.ac
    정처기실기
    정보처리기사 실기 기출문제
    springboot
    정보처리기사
    피보나치
    Level2
    백엔드개발자
    시뮬레이션
    브루트포스
    수학
    알고리즘
    백준
    배열
    자료구조
    정렬
    정처기
    실기
    프로그래머스
  • 최근 댓글

  • 최근 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.4
PUSH → MERGE → DEPLOY
프로그래머스 숫자 문자열과 영단어 JAVA 풀이 (문자열, replace)
상단으로

티스토리툴바