https://programmers.co.kr/learn/courses/30/lessons/81301?language=java
코딩테스트 연습 - 숫자 문자열과 영단어
네오와 프로도가 숫자놀이를 하고 있습니다. 네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게임입니다. 다음은 숫자의 일부 자
programmers.co.kr
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 |
댓글