2019년 1월 13일 일요일

#7알고리즘 연습 - 반복 글자 출력 / JAVA


반복 글자 출력


문제 설명
길이가 n이고, 수박수박수박수....와 같은 패턴을 유지하는 문자열을 리턴하는 함수, solution을 완성하세요. 예를들어 n이 4이면 수박수박을 리턴하고 3이라면 수박수를 리턴하면 됩니다.
제한 조건
  • n은 길이 10,000이하인 자연수입니다.
입출력 예
nreturn
3수박수
4수박수박




문제 풀이 IDEA

1. 단순하게 홀수인지 짝수인지 판별하여 입력 받은 n의 길이 만큼 '수' 와 '박' 을 차례대로      String에 더해준다

2. 규칙성을 찾아 n을 2로 나눈 몫 만큼 수박을 더해주고
    저장된 str에서 2의 나머지인 0 혹은 1번째까지의 글자를 가져와 추가로 더해준다




나의 코드⭐

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Solution {
  public String solution(int n) {

      String answer = "";
      for(int i = 0; i< n; i++) {              
          if(i%2 == 0) {
                answer += "수";        
          }else{
              answer += "박";
          }
      }

      return answer;
  }
}



나의 코드2⭐

1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Solution {
  public String solution(int n) {
      String str= "";
      if (n==1){                             //n이 1일때는 for문이 돌지않아 '수박'이 더해지지않아 subString값도 없고 str도
          return "수";                         공백이므로 이경우 예외처리를 해줘서 바로 "수"를 return
      }
      for (int i=0; i < n/2 ; i++){
         str += "수박";                      //n=6이면 수박은 3번만 더해지면 되고 n이 101이면 수박은 50번 더해지고 추가로 "수"가 오면된다
      }
      return str + str.substring(0,n%2);      str에는 지금 "수박수박....."이 저장되어있으므로 0번째 부터 0번째(안가져오거나) 0번째 부터 1번째
      }                                       "수"를 추가적으로 가져온다
 }



다른 코드⭐

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// 문제가 개편 되었습니다. 이로 인해 함수 구성이 변경되어, 과거의 코드는 동작하지 않을 수 있습니다.
// 새로운 함수 구성을 적용하려면 [코드 초기화] 버튼을 누르세요. 단, [코드 초기화] 버튼을 누르면 작성 중인 코드는 사라집니다.
public class WaterMelon {
    public String watermelon(int n){

        return new String(new char [n/2+1]).replace("\0", "수박").substring(0,n);
                         char array의 크기를 n/2+1로 해주었기때문에 일단 n = 6이면 3+1 4개의 공간
    }                     n = 7이면 7/2+1 4개의 공간을 만들어 두고 빈공간일경우 "수박"으로 대체해준다
}                         그다음 substring을 이용해 n번째 까지의 글자만 뽑아오면 된다
즉 미리 여유 수박을 1개 더 넣어놓고 그중에서 substring으로 가져오는것이다




눈여겨 보아야 할 점

char array에서 Null값을 "수박"으로 replace해준 방법을 배워가자

출처:프로그래머스(https://programmers.co.kr/)

댓글 없음:

댓글 쓰기

가장 많이 본 글