본문 바로가기
코딩 테스트/[JAVA] programmers 코딩 테스트 연습

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

by M개발자 2021. 6. 8.
반응형

수박수박수박수박수?


문제 설명

 

길이가 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

 

 

반응형

댓글