Language/JAVA

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

paran21 2022. 1. 17. 14:33

자리수마다 글자를 하나씩 넣고, 마지막에 배열을 String으로 바꾸는 방식을 사용했다.

import java.util.ArrayList;

class Solution {
    public String solution(int n) {
        String answer = "";
        ArrayList<String> arr = new ArrayList<>();
        for (int i = 0; i < n; i++){
            //index고려하면 짝수자리가 "수"
            if(i % 2 == 0) {
                arr.add("수");
            } else {
                arr.add("박");
            }
        }
        answer = String.join("",arr);
        return answer;
    }
}

다른 문제 풀이를 보니까, 굳이 배열로 만들어서 합치지 않고 바로 +를 이용해서 붙일 수도 있다.

import java.util.ArrayList;

class Solution {
    public String solution(int n) {
        String answer = "";
        for (int i = 0; i < n; i++){
            //index고려하면 짝수자리가 "수"
            if(i % 2 == 0) {
                answer +="수";
            } else {
                answer +="박";
            }
        }
        return answer;
    }
}

 

++다른 문제 풀이

public class WaterMelon {
    public String watermelon(int n){
		//빈 char 배열이 생성되면 \0으로 먼저 생성
        return new String(new char [n/2+1]).replace("\0", "수박").substring(0,n);
    }

 

++ 코드리뷰 후 추가

String은 매번 새롭게 복사본을 만들어서 오래 걸리는데

StringBuilder를 쓰면 그 자체 값을 수정해서 훨씬 시간이 적게 걸린다!(StringBuffer도 유사)