[Study] 프로그래머스 lv. 1 숫자 문자열과 영단어 ( 69% )

ayboori·2023년 7월 19일
0

Java Study

목록 보기
17/34

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

문제 설명

영문과 숫자가 혼합된 input 값 > int 형태의 숫자 output 값 변환

sresult
"one4seveneight"1478
"23four5six7"234567
"2three45sixseven"234567
"123"123

풀이 방법

1) 영문을 미리 String 배열에 세팅한다

2) 배열 길이만큼 루프를 돌면서 검사를 수행한다.

2-1) input String이 위 배열의 문자를 포함하고 있는지 검사

2-2) 문자열을 위 배열에서 숫자로 대체

내가 작성한 코드

class Solution {
    public int solution(String s) {
        String [] engNum = {"zero","one","two","three","four","five","six","seven","eight","nine"};
        
        for(int i = 0 ; i<engNum.length; i++){            
            if(s.contains(engNum[i])){ // 영문 포함 확인
            s = s.replace(engNum[i], Integer.toString(i) ); // 앞을 뒤로 변경
            // 이때 인덱스 값으로 대체하면 된다.
            }
        }
        return Integer.parseInt(s);
    }
}

통과 시간

0.06ms ~ 0.07ms (StringBuilder 사용 안 한 것 치고 괜찮았다!)

테스트 1 〉통과 (0.07ms, 82.1MB)
테스트 2 〉통과 (0.08ms, 87.2MB)
테스트 3 〉통과 (0.08ms, 67MB)
테스트 4 〉통과 (0.06ms, 77.1MB)
테스트 5 〉통과 (0.06ms, 76.8MB)
테스트 6 〉통과 (0.07ms, 71.8MB)
테스트 7 〉통과 (0.10ms, 72.2MB)
테스트 8 〉통과 (0.11ms, 75.6MB)
테스트 9 〉통과 (0.14ms, 76.7MB)
테스트 10 〉통과 (0.05ms, 71MB)

사용한 함수

string.contains("문자열")

string 내에 문자열을 포함할 경우 true 리턴, 문자열 내의 공백도 체크

string = string.replace("바꾸고 싶은 문자열", "변경될 문자열")

변경된 값을 string 변수에 담아야 한다.

Integer.parseInt(string)

숫자만으로 구성된 string을 int로 변환한다.

다른 사람의 풀이

class Solution {
    public int solution(String s) {
        String[] strArr = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"};
        // contains를 검사할 필요가 없었다!
				for(int i = 0; i < strArr.length; i++) {
            s = s.replaceAll(strArr[i], Integer.toString(i));
        }
        return Integer.parseInt(s);
    }
}

이외에는 hashmap을 사용하거나, 숫자 또한 배열로 선언하는 방식이 있었다.

profile
프로 개발자가 되기 위해 뚜벅뚜벅.. 뚜벅초

1개의 댓글

comment-user-thumbnail
2023년 7월 19일

아주 중요한 정보를 얻었습니다, 감사합니다.

답글 달기