반응형
문제 링크
https://programmers.co.kr/learn/courses/30/lessons/81301
나의 풀이 설계
내가 생각한 솔루션
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;
}
}
반응형
'CS > 기타 공부 기록들' 카테고리의 다른 글
[알고리즘]0.알고리즘을 공부하는 이유 (0) | 2021.10.14 |
---|---|
프로그래머스 문제풀이(210921) (0) | 2021.09.21 |
프로그래머스 문제풀이(210921) (0) | 2021.09.21 |
프로그래머스 문제풀이(210902) (0) | 2021.09.02 |
[알고리즘]선택 정렬(Selection sort) (0) | 2021.08.17 |