반복 글자 출력
문제 설명
길이가 n이고,
수박수박수박수....와 같은 패턴을 유지하는 문자열을 리턴하는 함수, solution을 완성하세요. 예를들어 n이 4이면
수박수박을 리턴하고 3이라면
수박수를 리턴하면 됩니다.
제한 조건
- n은 길이 10,000이하인 자연수입니다.
입출력 예
n | return |
---|---|
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/)
댓글 없음:
댓글 쓰기