Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- Lv1
- 알고리즘
- 프로그래머스 풀이
- COS Pro
- 버퍼
- StringTokenizer
- 프로그래머스 문자열 정렬
- 프로그래머스 자바
- 백준
- 자바
- 스프링부트 도커로 배포
- 큐
- 프로그래머스
- SWEA
- Queue
- 이진수 변환
- lv2
- Stack
- 문자열
- 스택
- 삼각형의 완성조건
- 오름차순 정렬
- lv0
- index of
- 스프링부트 도커 배포
- Programmers
- 스프링부트 도커
- java
- 백준 N과 M 자바
- 클라이언트
Archives
- Today
- Total
mun dev
[Programmers] 숫자 문자열과 영단어 자바(Java) 본문
문제설명
네오와 프로도가 숫자놀이를 하고 있습니다. 네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게임입니다.
다음은 숫자의 일부 자릿수를 영단어로 바꾸는 예시입니다.
- 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로 주어집니다.
입출력 예
s | result |
"one4seveneight" | 1478 |
"23four5six7" | 234567 |
"2three45sixseven" | 234567 |
"123" | 123 |
통과한 코드 ✅
처음 풀이코드
class Solution {
public int solution(String s) {
String answer ="";
String str="";
int result=0;
for(int i=0; i<s.length(); i++){
int n=s.charAt(i)-'0';
if(n>=0 && n<=9){
answer+=String.valueOf(n);
}else{
str+=s.charAt(i);
switch(str){
case "zero":
answer+=0;
str="";
break;
case "one":
answer+=1;
str="";
break;
case "two":
answer+=2;
str="";
break;
case "three":
answer+=3;
str="";
break;
case "four":
answer+=4;
str="";
break;
case "five":
answer+=5;
str="";
break;
case "six":
answer+=6;
str="";
break;
case "seven":
answer+=7;
str="";
break;
case "eight":
answer+=8;
str="";
break;
case "nine":
answer+=9;
str="";
break;
}
}
}
result=Integer.parseInt(answer);
return result;
}
}
다른 분들의 코드를 보고 개선한 코드
import java.util.*;
class Solution {
public int solution(String s) {
int answer = 0;
StringBuilder sb = new StringBuilder("");
int len = s.length();
String[] digits = {"0","1","2","3","4","5","6","7","8","9"};
String[] alphabets = {"zero","one","two","three","four","five","six","seven","eight","nine"};
for(int i=0; i<10; i++){
s = s.replaceAll(alphabets[i],digits[i]);
}
return Integer.parseInt(s);
}
}
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[Programmers] 두 개 뽑아서 더하기 자바(Java) (0) | 2023.05.31 |
---|---|
[Programmers] 문자열 내 마음대로 정렬하기 자바(Java) (1) | 2023.05.30 |
[Programmers] 귤 고르기 자바(Java) (0) | 2023.05.17 |
[Programmers] 멀리뛰기 자바(Java) (0) | 2023.05.15 |
[Programmers] 튜플 자바(Java) (0) | 2023.05.12 |