(Java) 프로그래머스 숫자 문자열과 영단어

2021. 11. 27. 04:51·코딩 테스트

문제를 보고 한 글자씩 다 잘라서 만드는 것 말고는 다른 방법이 떠오르지 않았다.

split를 이용해서 한글자씩 자르고 리스트로 변환한다.

그리고 switch / case로 원하는 문자열이 만들어지면 임시 배열인 sb에 넣고 sb를 int로 변환해 리턴한다.

다른 분 코드를 보니 replaceAll을 사용해서 간단하게 풀었는데 왜 저 생각을 못했지...?


최종 코드

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
class Solution {
    public int solution(String s) {
        int answer = 0;
        // answer로 변환하기 전 String 변수
        String sb = new String();
        // s를 배열로 변환후 리스트로 변환
        String[] temp = s.split("");
        List<String> list = new ArrayList<>(Arrays.asList(temp));

        // 문자열을 판단하기 위한 변수
        String a = new String();
        
        while(!list.isEmpty()) {
            for (int i = 0; i < list.size(); i++) {
                // a에 한글자씩 더해서 문자열 만들기
                a += list.get(0);
                // 사용한 문자 지우기
                list.remove(0);
                switch (a) {
                    case "zero":
                    case "0":
                        sb += 0;
                    a = ""; break;
                    case "one":
                    case "1":
                        sb += 1;
                    a = ""; break;
                    case "two":
                    case "2":
                        sb += 2;
                    a = ""; break;
                    case "three":
                    case "3":
                        sb += 3;
                    a = ""; break;
                    case "four":
                    case "4":
                        sb += 4;
                    a = ""; break;
                    case "five":
                    case "5":
                        sb += 5;
                    a = ""; break;
                    case "six":
                    case "6":
                        sb += 6;
                    a = ""; break;
                    case "seven":
                    case "7":
                        sb += 7;
                    a = ""; break;
                    case "eight":
                    case "8":
                        sb += 8;
                    a = ""; break;
                    case "nine":
                    case "9":
                        sb += 9;
                    a = ""; break;
                }
            }
        }
        answer = Integer.parseInt(sb);
        return answer;
    }
}

 

다른 분 코드

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

'코딩 테스트' 카테고리의 다른 글

(Java) 프로그래머스 키패드 누르기  (0) 2021.12.03
(Java) 프로그래머스 크레인 인형뽑기 게임  (0) 2021.12.01
(Java) 프로그래머스 폰켓몬  (0) 2021.11.24
(Java) 프로그래머스 실패율  (0) 2021.11.23
(Java) 프로그래머스 약수의 개수와 덧셈  (0) 2021.11.20
'코딩 테스트' 카테고리의 다른 글
  • (Java) 프로그래머스 키패드 누르기
  • (Java) 프로그래머스 크레인 인형뽑기 게임
  • (Java) 프로그래머스 폰켓몬
  • (Java) 프로그래머스 실패율
로승리
로승리
  • 로승리
    Roy's Blog
    로승리
  • 전체
    오늘
    어제
    • 분류 전체보기
      • Issuefy
      • Language
      • Spring
      • Database
      • Network
      • Kubernetes
      • AWS
      • 코드스쿼드
      • 코딩 테스트
      • 생각정리
      • 국비지원
      • 회고
      • 컨퍼런스, 세미나
  • 블로그 메뉴

    • 홈
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
로승리
(Java) 프로그래머스 숫자 문자열과 영단어
상단으로

티스토리툴바