숫자 문자열과 영단어 (자바 Java) : [프로그래머스 코딩테스트 연습 - Level 1]

daehong770·5일 전
2
post-thumbnail

1. Problem (문제) 📖

(1). 문제 설명 📖

【 숫자 문자열과 영단어 (카카오 문제) 】
  https://programmers.co.kr/learn/courses/30/lessons/81301


(2). 제한사항 📖


(3). 입출력 예 📖

  • 정확성 테스트 : 10초가 있으므로, 데이터 계산 속도까지 유의하며 문제를 풀어야한다.


2. Solution Approach (풀이 접근) 🔑

  • 0~9까지 모든 수를 문자 -> 숫자로 바꿔줄 코드를 구현해야한다.

  • replaceAll을 활용하면 쉽게 해결할 수 있다.


3. Code (코드) 💻

(1). 내가 처음 작성한 코드 💻

  class Problem_003_MySolution01 {
	
	public int solution(String s) {
		
		String data = s;
		data = data.replaceAll("zero" , "0");
		data = data.replaceAll("one" , "1");
		data = data.replaceAll("two" , "2");
		data = data.replaceAll("three" , "3");
		data = data.replaceAll("four" , "4");
		data = data.replaceAll("five" , "5");
		data = data.replaceAll("six" , "6");
		data = data.replaceAll("seven" , "7");
		data = data.replaceAll("eight" , "8");
		data = data.replaceAll("nine" , "9");
		
        int answer = Integer.parseInt(data);
        return answer;
    }

}

👶🏻 이 때 역시 쉽게 문제를 해결 할 수 있었다. 하지만 더 깔끔한 코드식을 만들어보고 싶기에 공부 한 이후 한 번 더 풀어보았다.



(2). 공부 후 다시 작성한 코드 💻

public class Problem_003_MySolution02 {
	
	public int solution(String s) {
		
        int answer = 0;
        
        String[] temp = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"};
        
        for (int i=0; i<temp.length; i++) {
        	s = s.replaceAll(temp[i], String.valueOf(i));
        }
        
        answer = Integer.valueOf(s);
        
        return answer;
        
    }
	
}

👶🏻 훨씬 코드가 깔끔해졌다.


(3). 다른 사람이 작성한 코드 💻

💬 다른 사람의 풀이를 보니, 내 풀이와 비슷하였다.



4. Solution (풀이) 🎲

  • 1. 바꿔주어야 하는 0~9의 문자열을 하나의 배열에 넣어준다.

  • 2. replaceAll과 for문을 활용하여 zero → 0 ~ nine → 9로 치환한다.
       (이 때, 숫자 i는 Integer.toString(i)를 통해 문자열로 바꾼 후 치환해주어야 한다.)
  • 3. 바꾼 문자열을 다시 Integer.parseInt()를 통해 Int형식으로 바꿔준 후 return;한다.


5. 마무리 😀

- 첫 번째 풀이 시간 : [2021-10-27] 09:30 ~ 09:38 (8분)

- 첫 번째 점수 : 100.0 / 100.0


- 두 번째 풀이 시간 : [2021-11-22] 10:00 ~ 10:05 (5분)

- 두 번째 점수 : 100.0 / 100.0

저번에 풀었던 문제중에 replaceAll을 활용하는 문제가 있었다. 그 때 replaceAll을 배우지 않았다면, 아마 이번 문제를 꽤 어렵게 풀고있었을 것 같다. 역시 배움이라는 것은 훌륭하다.

profile
하루 하루, 한 줄 한 줄, 성장하는 개발자 (Better_than_Yesterday Coding)

0개의 댓글