뭐라도 배우면 기록하자

[알고리즘 문제풀이] 수박수박수박수? 본문

프로그래밍언어공부/Java

[알고리즘 문제풀이] 수박수박수박수?

무의욕자 2017. 6. 22. 10:24

문제 및 답안 출처: http://www.tryhelloworld.co.kr


문제

water_melon함수는 정수 n을 매개변수로 입력받습니다.
길이가 n이고, 수박수박수...와 같은 패턴을 유지하는 문자열을 리턴하도록 함수를 완성하세요.

예를들어 n이 4이면 '수박수박'을 리턴하고 3이라면 '수박수'를 리턴하면 됩니다.


public class WaterMelon {

public String watermelon(int n){

return "";

}


// 실행을 위한 테스트코드입니다.

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){

String str="";

    for(int i=1;i<n+1;i++){

      if(i%2 == 0){

      str += "박";

      }else{

        str += "수";

      }

    }

return str;

}


// 실행을 위한 테스트코드입니다.

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){
        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));
    }
}

저는 for, if문의 아주 간단한 조건, 반복문으로 수,박을 각각 추가하는 로직을 새웠습니다. 하지만 다른 분들의 답안을 보니 API의 활용능력이 훨씬 뛰어나시더라구요.


그 중 눈에 띄었던 것은 Stringbuffer자료형을 사용한 것입니다. 

StringBuffer는 문자열을 추가하거나 변경 할 때 주로 사용하는 자료형으로 append, insert, substring의 매소드를 사용할 수 있습니다. 

(https://wikidocs.net/276)에 Stringbuffer의 자세한 내용이 나와있어서 링크를 걸어두겠습니다. 


문제를 풀면 풀수록 제가 아는 것이 정말 적다는 것을 느끼네요;;

Comments