https://school.programmers.co.kr/learn/courses/30/lessons/81301
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
public int solution(String s) {
int answer = 0;
String answerString = "";
String string = "";
for (int i = 0; i < s.length(); i++) {
switch (string) {
case "0", "1", "2", "3", "4", "5", "6", "7", "8", "9":
answerString += string;
string = "";
i--;
break;
case "zero":
answerString += "0";
string = "";
i--;
break;
case "one":
answerString += "1";
string = "";
i--;
break;
case "two":
answerString += "2";
string = "";
i--;
break;
case "three":
answerString += "3";
string = "";
i--;
break;
case "four":
answerString += "4";
string = "";
i--;
break;
case "five":
answerString += "5";
string = "";
i--;
break;
case "six":
answerString += "6";
string = "";
i--;
break;
case "seven":
answerString += "7";
string = "";
i--;
break;
case "eight":
answerString += "8";
string = "";
i--;
break;
case "nine":
answerString += "9";
string = "";
i--;
break;
default:
string += s.charAt(i);
System.out.println(string);
break;
}
}
switch (string) {
case "0", "1", "2", "3", "4", "5", "6", "7", "8", "9":
answerString += string;
break;
case "zero":
answerString += "0";
break;
case "one":
answerString += "1";
break;
case "two":
answerString += "2";
break;
case "three":
answerString += "3";
break;
case "four":
answerString += "4";
break;
case "five":
answerString += "5";
break;
case "six":
answerString += "6";
break;
case "seven":
answerString += "7";
break;
case "eight":
answerString += "8";
break;
case "nine":
answerString += "9";
break;
default:
break;
}
answer = Integer.parseInt(answerString);
return answer;
}
처음에 그냥 1차원적으로 생각해서 풀었는데 시간 복잡도 관점에서만 유리하고 뭔가 다른 방법이 많을 것 같아서 다른 방법으로 다시 풀었다.
public int solution(String s) {
String[] digits = {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"};
String[] alphabets = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"};
for (int i = 0; i < 10; i++) {
s = s.replaceAll(alphabets[i], digits[i]);
}
return Integer.parseInt(s);
}
📍포인트
1. 띄어쓰기 없는 문자열을 어떻게 처리해야할지 고민.
2. 다양한 매핑 방법 중에 무엇을 사용할지 고민. ex) switch, replace, map 등등..
'코딩테스트' 카테고리의 다른 글
[코딩테스트(Java)] 프로그래머스 67256 키패드 누르기 (0) | 2025.03.15 |
---|---|
[코딩테스트(Java)] 프로그래머스 64061 크레인 인형뽑기 게임 (0) | 2025.03.14 |
[코딩테스트(Java)] 프로그래머스 77484 로또의 최고 순위와 최저 순위 (0) | 2025.03.12 |
[코딩테스트(Java)] 프로그래머스 50048 베스트앨범 (0) | 2025.03.12 |
[코딩테스트(Java)] 프로그래머스 92334 신고 결과 받기 (1) | 2025.03.11 |