본문 바로가기
CodingTest/Programmers

[프로그래머스] Lv0 영어가 싫어요***

by yoondoo 2023. 1. 12.
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()메서드 체이닝을 통해서 문제를 풀었다.

따로 메모해 놓고 까먹지 않게 봐야겠다.

반응형

댓글