Q. 숫자 문자열과 영단어
A1.
class Solution {
public int solution(String s) {
//각 숫자에 대응하는 영단어를 배열에 저장
String[] words = {"zero", "one", "two", "three", "four",
"five", "six", "seven", "eight", "nine"};
//StringBuilder(가변 객체)를 활용해 문자열 저장
//answer : 최종 문자열, numCard : 숫자가 아닌 영단어일때 단어 모으는 문자열
StringBuilder answer = new StringBuilder();
StringBuilder numCard = new StringBuilder();
//문자열 s의 글자를 확인 후 문자를 변수 c에 저장
for(int i = 0; i < s.length(); i++){
char c = s.charAt(i);
//c가 숫자인지 확인
//숫자인 경우 answer에 바로 저장
if(Character.isDigit(c)){
answer.append(c);
} else{
//영어인 경우 numCard에 저장
numCard.append(c);
//numCard에 누적된 문자열을 words 배열 안에 있는 영단어와 비교 후 같은 경우
//answer에 추가 후, numCard에 저장된 문자를 비워줌(setLength(0))
for(int j = 0; j < words.length; j++){
if(numCard.toString().equals(words[j])){
answer.append(j);
numCard.setLength(0);
break;
}
}
}
}
//문자열을 정수로 변환한 후 반환
return Integer.parseInt(answer.toString());
}
}
A2.
class Solution {
public int solution(String s) {
String[] words = {"zero", "one", "two", "three", "four",
"five", "six", "seven", "eight", "nine"};
//문자열 s 내의 해당 영단어를 그에 해당하는 숫자 문자열로 교체
//words[i]에 해당하는 영단어를 i로 변환
//replaceAll() 메서드를 사용해 s내에 있는 모든 해당 영단어를 찾아서 교체
for(int i = 0; i < words.length; i++) {
s = s.replaceAll(words[i], Integer.toString(i));
}
//모든 영단어를 숫자로 바꾼 후 최종 문자열 s를 정수로 변환하여 반환
return Integer.parseInt(s);
}
}
'알고리즘, 코딩테스트 > 알고리즘 풀이' 카테고리의 다른 글
[프로그래머스/ 코딩테스트 연습문제] 옹알이 (2) (0) | 2025.03.03 |
---|---|
[프로그래머스/ Summer/Winter Coding(~2018)] 영어 끝말잇기 (1) | 2025.03.03 |
[프로그래머스/ 코딩테스트 완전탐색] 모의고사 (0) | 2025.02.26 |
[프로그래머스/ 코딩테스트 2018 KAKAO BLIND RECRUITMENT] [1차] 비밀지도 (0) | 2025.02.24 |
[프로그래머스/ 코딩테스트 연습문제] 크기가 작은 부분 문자열 (0) | 2024.12.03 |