https://school.programmers.co.kr/learn/courses/30/lessons/81301

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

문제푸는데 30분정도 걸렸습니다.

 

다른사람 코드보고 효율적 방법

1. String s = "1248"이 있을떄 

나는 수작업으로 1248을 구했지만

return Integer.parseInt(s); 를 하면 자동으로 변환됩니다.

 

2.replaceAll("one,two,three 같은것들", "1,2,3,4.. 대응되는 숫자들")을

class Solution {
    public int solution(String s) {
        int answer = 0;
        StringBuilder sb = new StringBuilder("");
        int len = s.length();
        String[] digits = {"0","1","2","3","4","5","6","7","8","9"};
        String[] alphabets = {"zero","one","two","three","four","five","six","seven","eight","nine"};

        for(int i=0; i<10; i++){
            s = s.replaceAll(alphabets[i],digits[i]);
        }

        return Integer.parseInt(s);
    }
}

 

 

 

이문제에서 기억해야할점들

 

첫번쨰. String builder 사용법

- 원래 String을 다 char형으로 변경해서 하는 방식들을 생각해봤는데 그런것보다도 String을 조작할 수 있는 String builder로 진행하는 것이 훨씬 효율적입니다.

StringBuilder 사용법 블로그입니다.

https://codevang.tistory.com/121

 

java.lang.StringBuilder (문자열) 주요 메소드 [1/2]

StringBuilder와 StringBuffer 클래스도 String 클래스와 같이 문자열을 다루는 클래스입니다. 다만, String 클래스가 문자열을 생성자로 넣어 인스턴스를 한 번 생성하고 나면 인스턴스가 가진 문자열 값

codevang.tistory.com

 

두번쨰. 아스키코드를 통한 char 문자숫자를 int형 숫자로 변환.

char a = '8' 일떄 아스키코드상  56입니다. 이떄 '0'은 48이므로  56 - 48 하면 8이 나옵니다.

그러므로

int temp = a - '0' 을 해주면 모든 숫자들이 int형 숫자로 변경됩니다.

 


import java.util.*;
import java.io.*;

class Solution {
    static char[] to_char; 
    static String answer_str = new String();
    public int solution(String s) {
        StringBuilder builder = new StringBuilder(s);

        for(int i=0;i<builder.length();i++){
            if( builder.charAt(i) >= '0' && builder.charAt(i) <= '9'){
                continue;
            }else if( builder.charAt(i) >= 'a' && builder.charAt(i) <= 'z'){
                
                //zero는 한가지이므로 한개만 처리.
                if(builder.charAt(i) == 'z'){
                    builder.delete(i, i+4);
                    builder.insert(i, "0");
                }
                
                // one, 
                else if(builder.charAt(i) == 'o'){
                    builder.delete(i, i+3);
                    builder.insert(i, "1");
                }
                
                // two, three
                else if(builder.charAt(i) == 't'){
                    
                    if(builder.charAt(i+1) == 'w'){
                        builder.delete(i, i+3);
                        builder.insert(i, "2");                        
                    }
                    else if(builder.charAt(i+1) == 'h'){
                        builder.delete(i, i+5);
                        builder.insert(i, "3");                        
                    }
                }
                
                //four, five ,
                else if(builder.charAt(i) == 'f'){
                    
                    if(builder.charAt(i+1) == 'o'){
                        builder.delete(i, i+4);
                        builder.insert(i, "4");                        
                    }
                    else if(builder.charAt(i+1) == 'i'){
                        builder.delete(i, i+4);
                        builder.insert(i, "5");                        
                    }
                }
                
                //six, seven
                else if(builder.charAt(i) == 's'){
                    if(builder.charAt(i+1) == 'i'){
                        builder.delete(i, i+3);
                        builder.insert(i, "6");   
                    }
                    else if(builder.charAt(i+1) == 'e'){
                        builder.delete(i, i+5);
                        builder.insert(i, "7");   
                    }
                }
                
                //eight
                else if(builder.charAt(i) == 'e'){
                    if(builder.charAt(i+1) == 'i'){
                        builder.delete(i, i+5);
                        builder.insert(i,'8');
                    }
                }
                //nine
                else if(builder.charAt(i) == 'n'){
                    if(builder.charAt(i+1) == 'i'){
                        builder.delete(i, i+4);
                        builder.insert(i,'9');
                    }
                }
                    
                
            }
        }
        
        
        System.out.println(builder.toString());
        

        int answer = 0;
        
        for(int i=builder.length()-1;i>=0;i--){
            int tenmultiple = 1;
            int temp = 0;
            char test = builder.charAt(i);
            temp = test - '0';
            for(int j=i;j<builder.length()-1;j++){
                tenmultiple *= 10;
            }
            temp *= tenmultiple;
            System.out.println(temp);
            answer += temp;
        }
        
        // int answer = 0;
        return answer;
    }
}

+ Recent posts