본문 바로가기

프로그래밍/알고리즘(자바)

수박수박수박수박수박수? Level 1 #join #replace #StringBuffer #append #String '+=' 연산

  수박수박수박수박수박수? Level 1

이 문제는 푸는 방식이 정말 다양했다.
일단 join을 이용해 풀었는데 String API를 보니 concat 메소드로도 가능할 것 같다.
public class WaterMelon {
    public String watermelon(int n){
        String wm ="";
        for(int i = 0; i<n; i++){
            if(i%2==0)
                wm = String.join("",wm,"수");
            else
                wm = String.join("",wm,"박");
        }
        return wm;
    }

    // 실행을 위한 테스트코드입니다.
    public static void  main(String[] args){
        WaterMelon wm = new WaterMelon();
        System.out.println("n이 3인 경우: " + wm.watermelon(3));
        System.out.println("n이 4인 경우: " + wm.watermelon(4));
    }
}


한줄 코딩

public class WaterMelon {
    public String watermelon(int n){
        return new String(new char [n/2+1]).replace("\0", "수박").substring(0,n);  
        //String을 [n/2+1] 의 문자열 크기로 만든 다음 "\0"인 내용들을 "수박"으로 바꾼다는 것.
        // "\0" 은 null과 같은 표현으로 아스키 코드값 0x00을 나타낸다고 한다.
    }

    // 실행을 위한 테스트코드입니다.
    public static void  main(String[] args){
        WaterMelon wm = new WaterMelon();
        System.out.println("n이 3인 경우: " + wm.watermelon(3));
        System.out.println("n이 4인 경우: " + wm.watermelon(4));
    }
}

대단스....


아 그리고 String도 ' += ' 연산이 가능했다!

public class WaterMelon {
    public String watermelon(int n){
    String result="";
    for(int i=0; i<n; i++){
      result += i%2==0?"수":"박";
    }

        return result;
    }

    // 실행을 위한 테스트코드입니다.
    public static void  main(String[] args){
        WaterMelon wm = new WaterMelon();
        System.out.println("n이 3인 경우: " + wm.watermelon(3));
        System.out.println("n이 4인 경우: " + wm.watermelon(4));
    }
}


이 외에 문자열 동적 할당을 해주는 StringBuffer와 append를 이용한 방법도 있었다.


public class WaterMelon {
    public String watermelon(int n){
        StringBuffer sf = new StringBuffer();
        for (int i=1; i<=n; ++i) {
            sf.append(i%2==1?"수":"박");
        }
        return sf.toString();
    }

    // 실행을 위한 테스트코드입니다.
    public static void  main(String[] args){
        WaterMelon wm = new WaterMelon();
        System.out.println("n이 3인 경우: " + wm.watermelon(3));
        System.out.println("n이 4인 경우: " + wm.watermelon(4));
    }
}