728x90
영어가 싫어요
영어가 싫은 머쓱이는 영어로 표기되어있는 숫자를 수로 바꾸려고 합니다. 문자열 numbers가 매개변수로 주어질 때, numbers를 정수로 바꿔 return 하도록 solution 함수를 완성해 주세요.
제한사항
- numbers는 소문자로만 구성되어 있습니다.
- numbers는 "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine" 들이 공백 없이 조합되어 있습니다.
- 1 ≤ numbers의 길이 ≤ 50
- "zero"는 numbers의 맨 앞에 올 수 없습니다.
| "onetwothreefourfivesixseveneightnine" | 123456789 |
| "onefourzerosixseven" | 14067 |
입출력 예 #1
- "onetwothreefourfivesixseveneightnine"를 숫자로 바꾼 123456789를 return합니다.
입출력 예 #1
- "onefourzerosixseven"를 숫자로 바꾼 14067를 return합니다.
public class HateEnglish {
// public static String[] NUM_STRING = {"zero","one","two","three","four","five", "six","seven","eight","nine"};
// public static String[] NUM_INT = {"0","1","2","3","4","5","6","7","8","9"};
public static long solution(String numbers) {
long answer = 0;
// for(int i=0; i<10; i++) {
// numbers = numbers.replace(NUM_STRING[i], NUM_INT[i]);
// }
// answer = Long.valueOf(numbers);
numbers = numbers.replace("zero", "0")
.replace("one", "1")
.replace("two", "2")
.replace("three", "3")
.replace("four", "4")
.replace("five", "5")
.replace("six", "6")
.replace("seven", "7")
.replace("eight", "8")
.replace("nine", "9");
answer = Long.parseLong(numbers);
return answer;
}
}
처음에 String클래스의 replace()를 이용해서 문제를 풀어야겠다는 생각했는데 그 이상 생각이 나지 않아서 결국 힌트를...
두가지 경우로 풀었는데
1. 주석처리한 부분은 정적배열을 생성해서 for문을 이용해서 NUM_STRING[i]에 해당하는 문자열을 NUM_INT의 문자열로 치환하는 경우고
2. 주석처리하지 않은 경우는 replace()메서드 체이닝을 통해서 문제를 풀었다.
따로 메모해 놓고 까먹지 않게 봐야겠다.
반응형
'CodingTest > Programmers' 카테고리의 다른 글
| [프로그래머스] Lv0 종이자르기 (0) | 2023.01.20 |
|---|---|
| [프로그래머스] Lv0 컨트롤 제트 (1) | 2023.01.19 |
| [프로그래머스] Lv0 잘라서 배열로 저장하기 (0) | 2023.01.12 |
| [프로그래머스] Lv0 소인수분해 (0) | 2023.01.11 |
| [프로그래머스] Lv0 공 던지기* (0) | 2023.01.10 |
댓글