문제
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);
}
}
'Algorithm (PS) > 프로그래머스' 카테고리의 다른 글
[프로그래머스 Level 1] 문자열 내 마음대로 정렬하기(Java) (0) | 2023.08.26 |
---|---|
[프로그래머스 Level 1] [1차] 비밀지도(Java) (0) | 2023.08.26 |
[프로그래머스 Level 1] 시저 암호(Java) (0) | 2023.08.26 |
[프로그래머스 Level 1] 최소직사각형 (Java) (0) | 2023.08.24 |
[프로그래머스 Level 1] 크기가 작은 부분 문자열 (Java) (0) | 2023.08.24 |