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

LDH·2021년 3월 28일
0

🔑알고리즘

목록 보기
8/9
post-thumbnail

✨Link 수박수박수박수박수박수?

🤔 문제

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

입출력 예

nonresult
예13수박수
예24수박수박

💡 접근

보자마자 '수','박'을 차례대로 순서에 맞게 문자열 붙이기를 하면 된다고 생각했다. 문자를 n개만큼 붙이면 된다.

💻 코드(1)_나의 풀이

class Solution {
    public String solution(int n) {
       String answer = "";
        String str1 = "수";
        String str2 = "박";

        while(n-->0){//수
            answer += str1;
            if(n-->0){//박
                answer += str2;
            }
        }

        return answer;
    }
}

💻 코드(2)_다른 사람의 풀이

public class WaterMelon {
    public String watermelon(int n){
    String result = "";
    for (int i = 0; i < n; i++)
      result += i % 2 == 0 ? "수" : "박";
        return result;
    }
  • 2개의 문자가 반복 되니까 2로 나눈 나머지(0,1)를 '수', '박'으로 문자열을 붙여주었다.
  • StringBuffer를 사용해 문자열 더하기
    StringBuffer sf = new StringBuffer();
    for (int i = 0; i < n; i++) {
    sf.append(i % 2 == 0 ? "수" : "박");
    }
    return sf.toString();
    🔎 String 자료형은 한번 값이 생성되면 그 값을 변경할 수가 없다. 이렇게 값을 변경할 수 없는 것을 immutable 하다고 한다. trim, toUpperCase 등의 메소드를 보면 문자열이 변경되는 것 처럼 생각 될 수도 있겠지만 해당 메소드 수행 시 또 다른 String 객체를 생성하여 리턴할 뿐이다. StringBuffer 는 이와 반대로 값을 변경할 수 있다(mutable 하다). 즉 한번 생성된 값을 언제든지 수정할 수 있다.
profile
💻💻💻

0개의 댓글