level 1. 수박수박수박수박수박수? (java, python)

|

level 1. 수박수박수박수박수박수?

출처

문제

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

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

풀이 (python)

def water_melon(n):
    return ("수박"*n)[:n]

# 실행을 위한 테스트코드입니다.
print("n이 3인 경우: " + water_melon(3));
print("n이 4인 경우: " + water_melon(4));

풀이 (java)

public class WaterMelon {
	public String watermelon(int n){
    String result="";

		for(int i=1; i<n+1; i++){
      result += (i % 2 == 1)? "수" : "박";
			}
    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));
	}
}

다른사람 풀이(java)

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));
    }
}
public class WaterMelon {
	public String watermelon(int n){
		String repeated = new String(new char[n]).replace("\0", "수박");
    return repeated.substring(0,n);
	}

	// 실행을 위한 테스트코드입니다.
	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));
	}
}

배운점

  • 슬라이싱 기능을 잘 활용하자
  • java 3항 연산자
  • replace 메소드
  • StringBuffer 클래스 (String클래스와 달리 동적 문자열을 처리하는 클래스)
  • toString 메소드