[프로그래머스/java]수박수박수박수박수박수?

리트리버J

·

2021. 1. 3. 15:22

728x90

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

 

제한 조건

  • n은 길이 10,000이하인 자연수입니다.

<나의 풀이>

1. String += 는 메모리 소모가 크기 때문에 StringBuffer / StringBuilder 객체 생성

2. 짝수면 n/2까지 반복

3. 홀수면 n/2까지 반복 후 append("수") 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class Solution {
    public String solution(int n) {
        String wm = "수박";
        StringBuffer sb = new StringBuffer();
        if(n % 2 == 0){
            for(int i=0; i<n/2; i++){
                sb.append(wm);
            }
        }else{
            for(int i=0; i<n/2; i++){
                sb.append(wm);
            }
            sb.append("수");
        }
        return sb.toString();
    }
}
cs

<사이트 풀이>

1. new String(char[])를 통해 길이 배정

2. n/2 절반을 나누고, +1을 통해 무조건 "박"으로 끝나게 함.

3. replace("\0","수박")으로 빈문자열당 수박으로 치환.

* replace("","수박")으로 할 시 수박 수박 수박 이렇게 공백 문자가 들어가게 됨.

→ 나중에 공부하기

5. substring(start, end)으로 주어진 숫자만큼 잘라냄

1
2
3
4
5
class Solution {
    public String solution(int n) {
        return new String(new char [n/2+1]).replace("\0""수박").substring(0,n);
    }
}
cs

출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges

728x90