[프로그래머스] 숫자 문자열과 영단어

이찬혁·2024년 1월 9일

알고리즘

목록 보기
11/72

프로그래머스 Lv1 - 숫자 문자열과 영단어

처음에는 엥 어떻게 하지.. 저 문자가 어떤 숫자인줄 알고 자릿수별로 짜를 수도 없을 것 같은데.. 하며 점점 삼천포로 가더니 머릿속에는 온갖 복잡한 로직들로 가득찼다..

다시 천천히 생각해보니 Java에는 replace라는 좋은 메소드가 있다는게 떠올라 아래 로직이 완성되게 되었다.

문제 풀이 후 다른 사람의 풀이를 보았는데 대다수가 나와 같거나 비슷한 로직으로 풀이하셨더라!

EngStrToNumStr.java

package com.example.Programmers.Lv1;

/**
 * 프로그래머스 Lv1 - 숫자 문자열과 영단어
 */
public class EngStrToNumStr {
    public int solution(String s) {
        int answer = 0;
        String[] num = { "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine" };

        for (int i = 0; i < 10; i++) {
            s = s.replace(num[i], Integer.toString(i));
        }
        answer = Integer.parseInt(s);
        return answer;
    }
}

EngStrToNumStrTest.java

package com.example.Programmers.Lv1;

import static org.junit.Assert.assertEquals;

import org.junit.Test;

public class EngStrToNumStrTest {
    @Test
    public void engStrToNumStrTest() {

        EngStrToNumStr calc = new EngStrToNumStr();
        int result1 = calc.solution("one4seveneight");
        int result2 = calc.solution("23four5six7");
        int result3 = calc.solution("2three45sixseven");
        int result4 = calc.solution("123");

        assertEquals(1478, result1);
        assertEquals(234567, result2);
        assertEquals(234567, result3);
        assertEquals(123, result4);
    }
}
profile
나의 개발로그

0개의 댓글