코딩 테스트/[JAVA] programmers 코딩 테스트 연습

[No.13] 수박수박수박수박수? / 프로그래머스 코딩 테스트 연습 JAVA

M개발자 2021. 6. 8. 15:55
반응형

수박수박수박수박수?


문제 설명

 

길이가 n이고, "수박수박수박수...."와 같은 패턴을 유지하는 문자열을 리턴하는 함수, solution을 완성하세요. 예를 들어 n이 4이면 "수박수박"을 리턴하고 3이라면 "수박수"를 리턴하면 됩니다.


예시

 

n return
3 "수박수"
4 "수박수박"

코드 해석 및 전체 코드

 

알고리즘

1. 문자열 길이만큼 for문을 돌린다.

2. i가 홀수일 땐 "수", 짝수일 땐 "박"을 문자열에 더한다.

 

StringBuilder 클래스의 append 사용

StringBuilder a = new StringBuilder("Hello");
a.append(" World");
System.out.println(a); // Hello World

 

StringBuilder answer

StringBuilder는 문자열 연산이 많은 프로그래밍을 할 때 사용하는 클래스이다. 많이 공부한 게 아닌 리서치 지식으로 판단....!!!

 

1. 문자열 길이만큼 반복

"수박"은 두 글자로 문자열 길이가 홀수일 땐 "수", 짝수일 땐 "박"을 출력하기 위해

초기식은 i = 1로, 조건식은 1 <= n으로 1 ~ n까지 반복하였다. 

 

2. 문자열 더하기 

StringBuilder 클래스의 문자열의 마지막에 추가해주는 append 메서드를 사용하였다. 

i를 2로 나누었을 때 0이 아니면(삼항 연산자의 true값) 홀수이므로 "수"를 추가하고 

i를 2로 나누었을 때 0이면(삼항 연산자의 false값) 짝수이므로 "박"을 추가한다. 

 

StringBuilder 클래스로 구현

class Solution {
    public String solution(int n) {
        //StringBuffer answer = new StringBuffer("");
        StringBuilder answer = new StringBuilder("");
        
        for(int i = 1; i <= n; i++){
            answer = i % 2 != 0 ? answer.append("수") : answer.append("박");
        }
        
        return answer.toString();
	}
}

StringBuilder와 StringBuffer 속도 차이

StringBuilder                                                      StringBuffer     

StringBuffer는 StringBuilder에 비해 무거움. 

 

String 클래스로 구현

class Solution {
    public String solution(int n) {
        String answer = "";
        
        for(int i = 1; i <= n; i++){
            if(i % 2 != 0) answer += "수";
            else answer += "박";
        }
        
        return answer;
    }
}

String 클래스 구현 시 속도

String

StringBuilder와 StringBuffer보다 현저히 느림을 알 수 있음. 

 


github

programmers

 

 

반응형