본문 바로가기
Algorithm (PS)/프로그래머스

[프로그래머스 Level 1] 숫자 문자열과 영단어(Java)

by 태크민 2023. 8. 26.

문제

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

코드

import java.util.*;
class Solution {
    public int solution(String s) {        
        int answer = 0;
        if(s.contains("zero")) s = s.replace("zero","0");
        if(s.contains("one")) s = s.replace("one","1");
        if(s.contains("two")) s = s.replace("two","2");
        if(s.contains("three")) s = s.replace("three","3");
        if(s.contains("four")) s = s.replace("four","4");
        if(s.contains("five")) s = s.replace("five","5");
        if(s.contains("six")) s = s.replace("six","6");
        if(s.contains("seven")) s = s.replace("seven","7");
        if(s.contains("eight")) s = s.replace("eight","8");
        if(s.contains("nine")) s = s.replace("nine","9");
        //System.out.println(s);
        answer = Integer.parseInt(s);
        return answer;
    }
}

 

너무 무식하게 푼 거 같다..

다른 사람 풀이를 확인해보니 먼저 배열에 저장 후 for문을 통해 replace처리하는게 더 깔끔한 것으로 보임

 

다른 사람 풀이 코드

class Solution {
    public int solution(String s) {
        
    	//영단어를 담는 String 타입의 배열 생성
    	//영단어와 배열의 인덱스값이 동일하다.
        String[] arr = {"zero","one","two","three","four","five","six","seven","eight","nine"};
        
        //반복문을 사용해 배열 안의 모든 영단어를 검사한다.
        //문자열 s에 영단어가 있다면 replace를 사용해 변환한다.
        for(int i=0;i<arr.length;i++) {
        	if(s.contains(arr[i])) {
        		s = s.replace(arr[i], Integer.toString(i));
        	}
        }
        return Integer.parseInt(s);
    }
}