본문 바로가기

Algorithm

[알고리즘] #19 수박수박수박수박수박수? | 프로그래머스

728x90

수박수박수박수박수박수? 알고리즘 문제를 풀어보았다.

 

https://programmers.co.kr/learn/courses/30/lessons/12922

 

코딩테스트 연습 - 수박수박수박수박수박수?

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

programmers.co.kr

 

 

문제 설명

 

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

 
 
 

제한 조건

 

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

 

입출력 예

 

 


 

 

< 문제 풀이 >

 

function solution(n) {
    let watermelon = '수박';
    let str = watermelon.repeat(n/2 + 1);

    let answer = str.slice(0, n)
    return answer;
}

 

생각해보기

어떻게 수박수박수박수를 n 만큼 출력할 수 있을까.

'수박수박수박수' 에서 n만큼만 자르면 되겠다.

 

일단 '수박수박수'는 내가 수작업으로 하면 안되고 n에 맞춰서 '수박수박수'길이를 저장해놔야한다.

제한조건에서 n은 길이 10,000이하라고 했으므로 수작업으로 '수박수박수'를 써놓기 힘들다.

그래서 '수박'을 repeat()로 n만큼 반복시킬 건데 '수박'은 두글자니까 n/2만큼 반복해주어야한다. 

그리고 홀수일경우는 소수점이 날아가므로 n/2 + 1을 해줘서 '수박'이 모자라지 않게 해준다.

그리고 완성된 '수박수박수박수'를 slice()를 활용해서 내가 원하는 만큼만 잘라주면 된다.

 

 

 


 

 

 

다른 사람들은 어떻게 풀었을까?

https://programmers.co.kr/learn/courses/30/lessons/12922/solution_groups?language=javascript 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

// 문제가 개편되었습니다. 이로 인해 함수 구성이나 테스트케이스가 변경되어, 과거의 코드는 동작하지 않을 수 있습니다.
// 새로운 함수 구성을 적용하려면 [코드 초기화] 버튼을 누르세요. 단, [코드 초기화] 버튼을 누르면 작성 중인 코드는 사라집니다.
function waterMelon(n){
  // n을 2로나눈 몫 만큼 곱하고 나머지가 있으면 '수' 더해라.
  return ("수박").repeat(n/2) + ((n%2) ? '수' : '');
}

 

홀수 짝수일 경우를 활용해서 홀수인 경우 뒤에 '수'를 붙여주고 짝수인 경우에는 추가하지 않는다.

 

 

728x90