https://programmers.co.kr/learn/courses/30/lessons/81301?language=java
class Solution {
public int solution(String s) {
String answer = "";
String[] num = {"zero","one","two","three","four","five","six","seven","eight","nine"};
String[] num2 = {"0","1","2","3","4","5","6","7","8","9"};
for (int i =0; i <10; i++) {
if (s.indexOf(num[i]) != -1) {
answer += num2[i];
}
if (s.indexOf(num2[i]) != -1) {
answer += num2[i];
}
}
return Integer.parseInt(answer);
}
}
무엇이 문제일까?
효율적이지 않는 if문이 문제였던 것 같다.
최근 계속 코딩테스트를 하면서 썼던 방법인 정규표현식 사용이 생각이 났다.
class Solution {
public int solution(String s) {
String[] num = {"zero","one","two","three","four","five","six","seven","eight","nine"};
String[] num2 = {"0","1","2","3","4","5","6","7","8","9"};
for (int i =0; i <10; i++) {
s = s.replaceAll(num[i],num2[i]);
}
return Integer.parseInt(s);
}
}
[다른 사람 참고]
이런 식으로 num2의 String배열을 만들지 않고 하는 방법이 있었다.
그 외에도 다른 사람들의 코드를 보면서 다양한 방식들을 공부할 수 있었다.
'코딩테스트' 카테고리의 다른 글
[프로그래머스]Level 1 - 신규아이디 추천 (0) | 2022.02.20 |
---|---|
[프로그래머스]Level 1 - 로또의 최고 순위와 최저 순위 (0) | 2022.02.18 |
[프로그래머스]Level 1- x만큼의 간격이 있는 n개의 숫자_JAVA(스킬업 스킬체크) (0) | 2022.01.21 |
댓글