[2021-07-12] 숫자 문자열과 영단어
2021. 7. 12. 21:45ㆍ코딩테스트
푼 시간 : 30분
언어 : 자바
https://programmers.co.kr/learn/courses/30/lessons/81301
코딩테스트 연습 - 숫자 문자열과 영단어
네오와 프로도가 숫자놀이를 하고 있습니다. 네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게임입니다. 다음은 숫자의 일부 자
programmers.co.kr
조건 하나를 잘못 줘서 계속 고민했다.
문자열 핸들링에 좀 능숙해졌다고 느낀것이
mapping개념으로? 풀었는지는 몰라도 mapping변수를 만들어,
매핑시키듯이 문제를 풀었다.
class Solution {
public int solution(String s) {
String answer = "";
// 일부러 String으로 바꿔주었다.
String[] mapping={"zero", "one", "two", "three", "four", "five",
"six", "seven", "eight", "nine"};
// 매핑 시키기 위해 배열을 만듬
char[] temp=s.toCharArray();
// 문자 하나하나 비교하기위한 상자
String handler="";
// 매핑과 비교하기위한 스트링
for(int i=0; i<temp.length; i++){
handler+=temp[i];
// 비교하기위해 핸들러에 char로 더해준다.
for(int j=0; j<mapping.length; j++){
if(handler.equals(mapping[j])){
answer+=Integer.toString(j);
// 매핑과 같을경우 j를 바로 더해줬다.
handler="";
// 초기화
}
}
if(temp[i]>=48&&temp[i]<=57){
// 아스키코드 0부터 9까지
handler="";
// 초기화 시키고
answer+=temp[i];
// 더해준다
}
}
return Integer.parseInt(answer);
// int로 바꿔서 반환해주기
}
}
일부러 answer을 바꾼것이 인상적이라면 인상적일 수 있는데,
나름의 생각은 어차피 자릿수를 올리는 것 보다는 그냥
더해서 int로 바꾸면 자릿수 올릴 필요도 없다는 계산이 서서 썼다.
'코딩테스트' 카테고리의 다른 글
[2021-07-25] 기능개발 (lv2) (0) | 2021.07.25 |
---|---|
[2021-07-13] 예산 (0) | 2021.07.13 |
[2021-06-15] 내적 (0) | 2021.06.15 |
[2021-06-13] 로또의 최고 순위와 최저 순위 (0) | 2021.06.13 |
[2021-06-11] 시저 암호 (0) | 2021.06.11 |