Hayden's Archive
[알고리즘] 프로그래머스 : 수박수박수박수박수박수? 본문
알고리즘 문제 출처 : https://programmers.co.kr/learn/courses/30/lessons/12922
내가 작성한 코드
반복문을 쓰지 않고 풀 수 있는 방법이 없을까 고민해봤는데 방법을 찾지 못해서 for문을 돌려서 풀었다. 1부터 n까지 반복하면서 홀수일 때는 answer에 "수"를 더 하고 짝수일 때는 answer에 "박"을 더한다.
class Solution {
public String solution(int n) {
String answer = "";
for(int i = 1; i <= n; i++){
if(i % 2 == 1){
answer += "수";
}
if(i % 2 == 0){
answer += "박";
}
}
return answer;
}
}
더 좋은 방법이 없을까 해서 다른 사람의 코드를 봤다. 반복문을 사용하지 않고 깔끔하게 푼 코드가 있어서 감탄했다.
Class WaterMelon {
public String watermelon(int n){
return new String(new char [n/2+1]).replace("\0", "수박").substring(0,n);
}
}
먼저 n/2+1개의 공간을 가지는(예컨대 n=5라면 3개의 공간이 생성되고, n=6라면 4개의 공간이 생성된다.) char 배열을 인자값으로 생성자를 통해 String 객체로 만들어 반환한다.(n=5일 때 "\0\0\0"라는 값을 가지고, n=6일 때 "\0\0\0\0"라는 값을 가진다.
replace() 메소드를 사용하여 char형의 기본값인 "\0"을 "수박"으로 교체한다.
n=5라면 "수박수박수박"으로 초기화되었을 것이고, n=6이라면 "수박수박수박수박"이 초기화되었을 것이다.
이 때, substring() 메소드를 사용하여 0번째 문자부터 시작해서 n번째 문자 앞까지 자른다.
그러면 n=5일 때 "수박수박수"가 되고 n=6일 때 "수박수박수박"이 된다.
참고 : 자바 API java.lang.String