길이가 n이고, "수박수박수박수...."와 같은 패턴을 유지하는 문자열을 리턴하는 함수, solution을 완성하세요. 예를들어 n이 4이면 "수박수박"을 리턴하고 3이라면 "수박수"를 리턴하면 됩니다.
no | n | result |
---|---|---|
예1 | 3 | 수박수 |
예2 | 4 | 수박수박 |
보자마자 '수','박'을 차례대로 순서에 맞게 문자열 붙이기를 하면 된다고 생각했다. 문자를 n개만큼 붙이면 된다.
class Solution {
public String solution(int n) {
String answer = "";
String str1 = "수";
String str2 = "박";
while(n-->0){//수
answer += str1;
if(n-->0){//박
answer += str2;
}
}
return answer;
}
}
public class WaterMelon {
public String watermelon(int n){
String result = "";
for (int i = 0; i < n; i++)
result += i % 2 == 0 ? "수" : "박";
return result;
}
- 2개의 문자가 반복 되니까 2로 나눈 나머지(0,1)를 '수', '박'으로 문자열을 붙여주었다.
- StringBuffer를 사용해 문자열 더하기
StringBuffer sf = new StringBuffer();
for (int i = 0; i < n; i++) {
sf.append(i % 2 == 0 ? "수" : "박");
}
return sf.toString();
🔎 String 자료형은 한번 값이 생성되면 그 값을 변경할 수가 없다. 이렇게 값을 변경할 수 없는 것을 immutable 하다고 한다. trim, toUpperCase 등의 메소드를 보면 문자열이 변경되는 것 처럼 생각 될 수도 있겠지만 해당 메소드 수행 시 또 다른 String 객체를 생성하여 리턴할 뿐이다. StringBuffer 는 이와 반대로 값을 변경할 수 있다(mutable 하다). 즉 한번 생성된 값을 언제든지 수정할 수 있다.