ygreenb
yellowgreenblue
ygreenb
전체 방문자
오늘
어제
  • TIL (130)
    • Algorithm & Data Structure (70)
      • 이론 (4)
      • 프로그래머스 (54)
      • 백준 (12)
    • JAVA (4)
    • Android Studio (9)
    • Database (1)
    • WEB (25)
      • HTML+CSS (7)
      • Javascript (5)
      • React (11)
      • Django (1)
      • Node.js (1)
    • Computer Vision (13)
    • Git (8)

블로그 메뉴

  • HOME
  • TAG
  • GITHUB

공지사항

인기 글

태그

  • React
  • java
  • Comparator
  • 프로그래머스 Lv.2
  • sort
  • DP
  • 해시
  • greedy
  • 안드로이드
  • 깃허브
  • git bash
  • kotiln
  • 프로그래머스
  • dfs
  • getOrDefault
  • stack
  • 코틀린
  • 백준
  • Android
  • BFS
  • HashMap
  • 깃
  • reactjs
  • compareTo()
  • Arrays.sort()
  • 스택/큐
  • PriorityQueue
  • entrySet
  • Queue
  • git

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
ygreenb

yellowgreenblue

Algorithm & Data Structure/프로그래머스

[Java] 프로그래머스 : 숫자 문자열과 영단어

2022. 2. 21. 00:51

https://programmers.co.kr/learn/courses/30/lessons/81301?language=java 

 

코딩테스트 연습 - 숫자 문자열과 영단어

네오와 프로도가 숫자놀이를 하고 있습니다. 네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게임입니다. 다음은 숫자의 일부 자

programmers.co.kr

 

풀이

charAt() 함수는 문자열에서 특정 인덱스에 위치하는 유니코드 단일문자를 반환한다.

s의 길이만큼 for문을 돌려서 s.charAt(i)가 숫자면 그대로 반환하고, 영어면 저장해뒀다가 숫자 영단어와 동일한게 있다면 숫자로 바꿔준다.

class Solution {
    public int solution(String s) {
        String[] number = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"};
        String str="", answer="";
        
        // 숫자면 반환, 영어면 해당위치 숫자로 바꾸기 
        for(int i=0;i<s.length();i++){
            if(!Character.isDigit(s.charAt(i))){
                str+=s.charAt(i);
                if(str!=""){
                    for(int j=0;j<number.length;j++){
                        if(str.equals(number[j])){
                            answer+=j;
                            str="";
                        }
                    }
                }
            }else
                answer += s.charAt(i);
        }
        
        return Integer.parseInt(answer);
    }
}

 

다른사람풀이

replaceAll()로 각 숫자에 대응되는 영단어가 있다면 숫자로 바꿔준다.

        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);

 

저작자표시 (새창열림)

'Algorithm & Data Structure > 프로그래머스' 카테고리의 다른 글

[Java] 프로그래머스 Lv.2 > 기능개발  (0) 2022.02.28
[Java] 프로그래머스 Lv.2 > 다리를 지나는 트럭  (0) 2022.02.28
[Java] 프로그래머스 : 로또의 최고 순위와 최저 순위  (0) 2022.02.21
[Java] 프로그래머스 : 실패율  (0) 2022.02.20
[Java] 프로그래머스 : 정수 내림차순으로 배치하기  (0) 2022.02.19
    'Algorithm & Data Structure/프로그래머스' 카테고리의 다른 글
    • [Java] 프로그래머스 Lv.2 > 기능개발
    • [Java] 프로그래머스 Lv.2 > 다리를 지나는 트럭
    • [Java] 프로그래머스 : 로또의 최고 순위와 최저 순위
    • [Java] 프로그래머스 : 실패율
    ygreenb
    ygreenb
    개발공부기록장

    티스토리툴바