CS/기타 공부 기록들
프로그래머스 문제풀이(210921)
대두코기
2021. 9. 21. 03:40
반응형
문제 링크
https://programmers.co.kr/learn/courses/30/lessons/81301
코딩테스트 연습 - 숫자 문자열과 영단어
네오와 프로도가 숫자놀이를 하고 있습니다. 네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게임입니다. 다음은 숫자의 일부 자
programmers.co.kr
나의 풀이 설계
내가 생각한 솔루션
1. 받은 문자열의 맨 앞이 숫자라면, 해당 숫자를 temp에 저장한다. (switch 문 사용)
1.1. 받은 문자열의 맨 앞이 문자라면, 해당 문자에 맞는 숫자를 찾아 temp에 저장한다.
2. 숫자 또는 문자가 가리키는만큼 기존 s에서 지워준다.
3. 문자열이 끝날 때까지 answer = answer*10 + temp를 연산한다. (while 사용)
나의 풀이
class Solution {
public int solution(String s) {
int answer = 0;
/*
내가 생각한 솔루션
1. 받은 문자열의 맨 앞이 숫자라면, 해당 숫자를 temp에 저장한다. (switch 문 사용)
1.1. 받은 문자열의 맨 앞이 문자라면, 해당 문자에 맞는 숫자를 찾아 temp에 저장한다.
2. 숫자 또는 문자가 가리키는만큼 기존 s에서 지워준다.
3. 문자열이 끝날 때까지 answer = answer*10 + temp를 연산한다. (while 사용)
*/
// 1. 받은 문자열의 맨 앞이 숫자라면, 해당 숫자를 temp에 저장한다. (switch 문 사용)
while(s.length() > 0){
switch(s.charAt(0)){
case '0':
answer = answer * 10 + 0;
s = s.substring(1);
break;
case '1':
answer = answer * 10 + 1;
s = s.substring(1);
break;
case '2':
answer = answer * 10 + 2;
s = s.substring(1);
break;
case '3':
answer = answer * 10 + 3;
s = s.substring(1);
break;
case '4':
answer = answer * 10 + 4;
s = s.substring(1);
break;
case '5':
answer = answer * 10 + 5;
s = s.substring(1);
break;
case '6':
answer = answer * 10 + 6;
s = s.substring(1);
break;
case '7':
answer = answer * 10 + 7;
s = s.substring(1);
break;
case '8':
answer = answer * 10 + 8;
s = s.substring(1);
break;
case '9':
answer = answer * 10 + 9;
s = s.substring(1);
break;
case 'z':
answer = answer * 10 + 0;
s = s.substring(4);
break;
case 'o':
answer = answer * 10 + 1;
s = s.substring(3);
break;
case 't':
//two, three
if(s.charAt(1) == 'w'){
answer = answer * 10 + 2;
s = s.substring(3);
}else{
answer = answer * 10 + 3;
s = s.substring(5);
}
break;
case 'f':
//four, five
if(s.charAt(1) == 'o'){
answer = answer * 10 + 4;
s = s.substring(4);
}else{
answer = answer * 10 + 5;
s = s.substring(4);
}
break;
case 's':
//six, seven
if(s.charAt(1) == 'i'){
answer = answer * 10 + 6;
s = s.substring(3);
}else{
answer = answer * 10 + 7;
s = s.substring(5);
}
break;
case 'e':
answer = answer * 10 + 8;
s = s.substring(5);
break;
case 'n':
answer = answer * 10 + 9;
s = s.substring(4);
break;
}
}
/*
1.1. 받은 문자열의 맨 앞이 문자라면, 해당 문자에 맞는 숫자를 찾아 temp에 저장한다.
2. 숫자 또는 문자가 가리키는만큼 기존 s에서 지워준다.
3. 문자열이 끝날 때까지 answer = answer*10 + temp를 연산한다. (while 사용)
*/
return answer;
}
}
반응형