문제:
네오와 프로도가 숫자놀이를 하고 있습니다. 네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게임입니다.
다음은 숫자의 일부 자릿수를 영단어로 바꾸는 예시입니다.
- 1478 → "one4seveneight"
- 234567 → "23four5six7"
- 10203 → "1zerotwozero3"
이렇게 숫자의 일부 자릿수가 영단어로 바뀌어졌거나, 혹은 바뀌지 않고 그대로인 문자열 s가 매개변수로 주어집니다. s가 의미하는 원래 숫자를 return 하도록 solution 함수를 완성해주세요.
참고로 각 숫자에 대응되는 영단어는 다음 표와 같습니다.
숫자영단어
0 | zero |
1 | one |
2 | two |
3 | three |
4 | four |
5 | five |
6 | six |
7 | seven |
8 | eight |
9 | nine |
제한사항
- 1 ≤ s의 길이 ≤ 50
- s가 "zero" 또는 "0"으로 시작하는 경우는 주어지지 않습니다.
- return 값이 1 이상 2,000,000,000 이하의 정수가 되는 올바른 입력만 s로 주어집니다.
입출력 예
sresult
"one4seveneight" | 1478 |
"23four5six7" | 234567 |
"2three45sixseven" | 234567 |
"123" | 123 |
입출력 예 설명
입출력 예 #1
- 문제 예시와 같습니다.
입출력 예 #2
- 문제 예시와 같습니다.
입출력 예 #3
- "three"는 3, "six"는 6, "seven"은 7에 대응되기 때문에 정답은 입출력 예 #2와 같은 234567이 됩니다.
- 입출력 예 #2와 #3과 같이 같은 정답을 가리키는 문자열이 여러 가지가 나올 수 있습니다.
입출력 예 #4
- s에는 영단어로 바뀐 부분이 없습니다.
풀이:
class Solution {
public int solution(String s) {
String[] a = s.split("");
String result = "";
String imsi = "";
String[] num = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"};
for(int i = 0; i < a.length; i++) {
if(a[i].charAt(0) > '9') {
imsi += a[i];
}else {
result += a[i];
}
for (int j = 0; j < num.length; j++) {
if (imsi.equals(num[j])) {
result += j;
imsi = "";
}
}
}
int answer = Integer.parseInt(result);
return answer;
}
}
1. num 이라는 zero 부터 nine까지의 영문이 담겨져 있는 문자열 배열
2. 영문과 숫자가 혼합되어있는 문자열을 받아 한자리씩 쪼개어 저장하는 문자열 배열 a
3. 숫자와 문자를 가려서 문자일경우 임시로 저장해둘 문자열변수 imsi
4. 숫자값들을 저장해둘 result 문자열 변수
풀이방법:
바깥쪽 for문은 받아온 문자들의 배열의 길이만큼 돌린후, charAt() 메소드를 활용하여
a배열의 i번째 문자가 9보다 클경우에는 숫자가 아니므로, 만들어둔 imsi 문자열 변수에 추가해준다.
else로 만약 9보다 같거나 작을경우에는 숫자이므로 result 변수에 값을 저장해둔다.
위에 for문이 한바퀴 도는 중, num이라는 영문 숫자들이 저장된 배열의 길이만큼 반복하여
imsi 문자열이 num배열의 하나라도 같을경우 result에 배열의 번호를 result에 추가시켜준후
imsi문자열 변수를 초기화 시켜준다.
그후 answer라는 정수 변수에 result를 형변환 해주어 대입시켜준후 리턴값으로 answer를 돌려준다.
'알고리즘' 카테고리의 다른 글
[프로그래머스 알고리즘문제] 신규 아이디 추천 - JAVA (0) | 2021.08.06 |
---|---|
[프로그래머스 알고리즘문제] 모의고사 - JAVA (0) | 2021.08.05 |
[프로그래머스 알고리즘문제] 부족한 금액 계산하기 - JAVA (0) | 2021.08.05 |
[프로그래머스 알고리즘문제] 로또의 최고 순위와 최저 순위 - JAVA (0) | 2021.08.05 |
1. 자료구조와 알고리즘? (0) | 2021.07.27 |
댓글