https://programmers.co.kr/learn/courses/30/lessons/12922
길이가 n이고, "수박수박수박수...."와 같은 패턴을 유지하는 문자열을 리턴하는 함수, solution을 완성하세요. 예를들어 n이 4이면 "수박수박"을 리턴하고 3이라면 "수박수"를 리턴하면 됩니다.
n은 길이 10,000이하인 자연수입니다
홀수일때 '수', 짝수일때'박'을 추가시켜 길이가 n일때의 출력값을 구하면 된다.
import java.util.*;
class Solution {
public String solution(int n) {
String answer = "";
List<String>list=new ArrayList<>();
for(int x=1;x<=n;x++){
if(x%2==1){ //홀수
list.add("수");
}
else list.add("박");
}
for(String lists:list){
answer+=lists;
}
return answer;
}
}
import java.util.*;
class Solution {
public String solution(int n) {
String answer = "";
StringBuilder sb=new StringBuilder(); //StingBuilder를 사용한
for(int x=1;x<=n;x++){
sb.append(x%2==1?"수":"박");
}
answer=sb.toString();
return answer;
}
}
처음에는 list를 사용, list.add함수로 추가를 한 다음 반복문을 돌려서 list 안의 객체들을 더하는 식으로 문제를 풀었다. 근데 알고리즘은 이상이 없지만 속도면에서 매우 비효율적인 면이 보여서 이것을 해결하기 위해 새로운 객체 생성이 아닌 기존의 데이터에 더하는 형식인 stringBuilder의 append 메소드로 데이터를 추가하였다. 또한 삼항연산자를 사용하여 좀더 표현을 깔끔하게 만들었고 이후 문자열로 출력하기 위해 StringBuider의 인스턴스인 sb에 toString()을 불러 문자열로 변환하였다.