본문 바로가기

코딩테스트

세 개의 구분자 JAVA 코딩테스트 프로그래머스

세 개의 구분자 JAVA 

 

출처 : https://school.programmers.co.kr/learn/courses/30/lessons/181862

 

프로그래머스

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

programmers.co.kr

 

문제 설명 : 임의의 문자열이 주어졌을 때 문자 "a", "b", "c"를 구분자로 사용해 문자열을 나누고자 합니다. 예를 들어 주어진 문자열이 "baconlettucetomato"라면 나눠진 문자열 목록은 ["onlettu", "etom", "to"] 가 됩니다. 문자열 myStr이 주어졌을 때 위 예시와 같이 "a", "b", "c"를 사용해 나눠진 문자열을 순서대로 저장한 배열을 return 하는 solution 함수를 완성해 주세요. 단, 두 구분자 사이에 다른 문자가 없을 경우에는 아무것도 저장하지 않으며, return할 배열이 빈 배열이라면 ["EMPTY"]를 return 합니다.

 

 

내가 작성한 코드 :  생각의 흐름대로... 일단 문제를 풀고나서 다른 사람들이 어떻게 했는지 보고 배우게 되었다!

import java.util.*;

class Solution {
    public List<String>  solution(String myStr) {
        String str = "";
        List<String> arraysTest = new ArrayList<>();
        List<String> arraysList = new ArrayList<>();
        
        char[] ch = myStr.toCharArray();
        for(int i=0; i<ch.length; i++){
            
          if ( ch[i] == 'a' || ch[i] == 'b' || ch[i] == 'c' )  {
               ch[i] = ' ';
          } 
        
          if( ch[i] != ' '){
              str += ch[i];
             
          } else {
              arraysTest.add(str);
              str = "";
          } 
        } //END for
       
         if(str.length() != 0){
             arraysTest.add(str);
         }

        for ( String item : arraysTest) {
            if ( !item.isEmpty() ) {
                arraysList.add(item);
            }
        }
        if (arraysList.size() == 0){
           arraysList.add("EMPTY"); 
        }
         
        return arraysList;
    }
}

 

 


다른 사람풀이중에 가장 내가 이해하기 쉽고 좋았던 코드!

 

replaceAll 메소드를 사용 하면서 정규 표현식을 사용한 코드이다. 오.. 이런생각을 나는 미처 하지 못했는데! 배울만 하다!

 

[] : 대괄호는 문자의 집합이나 범위.

| : or 연산

+ : 플러스 기호는 앞 문자가 하나 이상.

 

정규표현식 뜻은 다음 블로그를 참고해서 알게됐다!

참고한 블로그 : https://zhfvkq.tistory.com/5

 

[JAVA] 정규 표현식(replaceAll)

String.replaceAll('From','to') - 대상 문자열 모두를 원하는 문자 값으로 변환하는 함수 ^ 문자열의 시작 $ 문자열의 종료 . 임의의 한 문자(필수입력, 문자의 종류 가리지 않음) 단, \ 는 넣을 수 없음 *

zhfvkq.tistory.com

 

728x90
300x250