ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Programmers/Level1] 수박수박수박수박수박수?
    Programmers/코딩테스트 풀이 2022. 2. 3. 20:03

    프로그래머스 / level1  / Java  / 수박수박수박수박수박수?

     

    문제
    길이가 n이고, "수박수박수박수...."와 같은 패턴을 유지하는 문자열을 리턴하는 함수, solution을 완성하세요. 예를들어 n이 4이면 "수박수박"을 리턴하고 3이라면 "수박수"를 리턴하면 됩니다.
    public class replayPrintSolution {
    
        // 방법 1 : StringBuffer로 Return, 삼항 연산자로 즉시 append 시키는 방법
    
        public StringBuffer solution(int n) {
            StringBuffer answer = new StringBuffer();
    
            for(int i = 0 ; i < n ; i++){
                answer.append(i % 2 == 0 ? "수" : "박");
            }
    
            return answer;
        }
    
        // 방법 2 : StringBuffer로 Return, 삼항 연산자로 str 문자열을 append 시키는 방법
    
        public StringBuffer solution(int n) {
            StringBuffer answer = new StringBuffer();
    
            for(int i = 0 ; i < n ; i++){
                String str = i % 2 == 0 ? "수" : "박";
                answer.append(str);
            }
    
            return answer;
        }
    
        // 방법 3 : StringBuilder로 Return, 삼항 연산자로 즉시 append 시키는 방법
    
        public StringBuilder solution(int n) {
            StringBuilder answer = new StringBuilder();
    
            for(int i = 0 ; i < n ; i++){
                answer.append(i % 2 == 0 ? "수" : "박");
            }
    
            return answer;
        }
    
        // 방법 4 : String으로 Return, 삼항 연산자로 += 시키는 방법
    
        public String solution(int n) {
            String answer = "";
    
            for(int i = 0 ; i < n ; i++){
                answer += i % 2 == 0 ? "수" : "박";
            }
    
            return answer;
        }
    }
     
    방법 1 결과 방법 2 결과 방법 3 결과 방법 4 결과
     

    방법 1과 방법 2는 StringBuffer를, 방법 3는 StringBuilder를 이용하여 방법 4보다 훨씬 빠른 속도로 코드를 실행시킬 수 있다.

     

    방법 1의 테스트 2는 방법 2의 테스트 2보다 느리지만,  방법1의 테스트 15는 방법 2의 테스트 15 보다 빠르게 실행된 것을 보아 두 방법의 속도 차이는 근소한 것으로 보인다.

    앞으로 간결한 코드 길이를 위해 StringBuffer 사용 시 방법 1을 사용 할 예정이다.

     

    방법 3는 StringBuilder를 사용한 방법인데, 동기화를 제공하지 않기 때문에 StringBuffer 사용보다 대체로 빨라진 코드 실행 속도를 확인 할 수 있다.

     

    방법 4과 같이 String을 사용하면 StringBuffer나 StringBulider 사용보다 현저하게 속도가 느려지는 것을 확인 할 수 있었다.

     


    StringBuilder는 동기화를 제공하지 않고, StringBuffer는 동기화를 제공하기 때문에 

    동기화가 필요하지 않은 경우에는 StringBuilder를 이용하여 코드 실행 속도를 좀 더 단축시킬 수 있다.

     

     

Designed by Tistory.