[프로그래머스] 수박수박수박수박수박수?

yoontaeng·2022년 1월 11일
0
post-thumbnail

📎 문제링크

https://programmers.co.kr/learn/courses/30/lessons/12922

📄 문제설명

길이가 n이고, "수박수박수박수...."와 같은 패턴을 유지하는 문자열을 리턴하는 함수, solution을 완성하세요. 예를들어 n이 4이면 "수박수박"을 리턴하고 3이라면 "수박수"를 리턴하면 됩니다.

제한사항

n은 길이 10,000이하인 자연수입니다

📝 문제풀이

홀수일때 '수', 짝수일때'박'을 추가시켜 길이가 n일때의 출력값을 구하면 된다.

💡 Code

초기코드

import java.util.*;

class Solution {
    public String solution(int n) {
        String answer = "";
       List<String>list=new ArrayList<>();
       for(int x=1;x<=n;x++){
           
           if(x%2==1){   //홀수         
               list.add("수");             
           }
          else list.add("박");               
       }        
      for(String lists:list){
        answer+=lists;
        }   
       return answer;
    }
}

수정코드

import java.util.*;

class Solution {
    public String solution(int n) {
        String answer = "";
      StringBuilder sb=new StringBuilder(); //StingBuilder를 사용한 
        
        for(int x=1;x<=n;x++){            
            sb.append(x%2==1?"수":"박");
        }
        answer=sb.toString();

       return answer;
    }
}

👍 Comment

처음에는 list를 사용, list.add함수로 추가를 한 다음 반복문을 돌려서 list 안의 객체들을 더하는 식으로 문제를 풀었다. 근데 알고리즘은 이상이 없지만 속도면에서 매우 비효율적인 면이 보여서 이것을 해결하기 위해 새로운 객체 생성이 아닌 기존의 데이터에 더하는 형식인 stringBuilder의 append 메소드로 데이터를 추가하였다. 또한 삼항연산자를 사용하여 좀더 표현을 깔끔하게 만들었고 이후 문자열로 출력하기 위해 StringBuider의 인스턴스인 sb에 toString()을 불러 문자열로 변환하였다.

profile
병아리개발자

0개의 댓글