Level1 수박수박수박수?

문제

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

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

일단 ‘수’와 ‘박’을 하나하나 담아둘 공간이 필요할 것 같아서 char[] 배열을 생성했다.

그리구나서 반복문을 돌려주면서 문자를 하나씩 넣어 주었다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public class WaterMelon {
public String watermelon(int n){

char[] subakStr = new char[n];

for (int i=0; i<subakStr.length; i++) {
subakStr[i] = '수';
if (i % 2 != 0) {
subakStr[i] = '박';
}
}

return String.valueOf(subakStr);
}

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

다른 사람의 풀이

\0 이 뭔지 몰라서 검색하다가 이런 글을 찾았다.

자바에서 문자열을 반복하는 방법

1
2
3
4
5
6
7
8
9
10
11
12
13
public class WaterMelon {
public String watermelon(int n){

return new String(new char [n/2+1]).replace("\0", "수박").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));
}
}

다른 사람의 풀이

배열과 StringBuffer를 활용한 문제 풀이

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public class WaterMelon {
public String watermelon(int n){
String array[]={"수","박"};
StringBuffer sb= new StringBuffer();

for(int i=1;i<=n;i++){
if(i%2==1){
sb.append(array[0]);
}else if(i%2==0){
sb.append(array[1]);
}
}
String result=sb.toString();
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));
}
}
Share