728x90
수박수박수박수박수박수? 알고리즘 문제를 풀어보았다.
https://programmers.co.kr/learn/courses/30/lessons/12922
문제 설명
길이가 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
// 문제가 개편되었습니다. 이로 인해 함수 구성이나 테스트케이스가 변경되어, 과거의 코드는 동작하지 않을 수 있습니다.
// 새로운 함수 구성을 적용하려면 [코드 초기화] 버튼을 누르세요. 단, [코드 초기화] 버튼을 누르면 작성 중인 코드는 사라집니다.
function waterMelon(n){
// n을 2로나눈 몫 만큼 곱하고 나머지가 있으면 '수' 더해라.
return ("수박").repeat(n/2) + ((n%2) ? '수' : '');
}
홀수 짝수일 경우를 활용해서 홀수인 경우 뒤에 '수'를 붙여주고 짝수인 경우에는 추가하지 않는다.
728x90
'Algorithm' 카테고리의 다른 글
[알고리즘] #17 문자열 다루기 기본 | 프로그래머스 (0) | 2022.01.19 |
---|---|
[알고리즘] #18 서울에서 김서방 찾기 | 프로그래머스 (0) | 2022.01.19 |
[알고리즘] #16 문자열 내 p와 y의 개수 | 프로그래머스 (0) | 2022.01.17 |
[알고리즘] #15 내적 | 프로그래머스 (0) | 2022.01.17 |
[알고리즘] #11 x만큼 간격이 있는 n개의 숫자 | 프로그래머스 (0) | 2022.01.15 |