알고리즘

[Programmars] 수박수박수박수박수박수? (JavaScript)

프린벼르 2022. 2. 1. 00:09

수박수박수박수박수박수?

1. 나의 생각 흐름

문제를 처음 읽고는 쉽다는 생각보다 어떻게 구현하지..? 라는 생각이 먼저 들었다. 여전히 나에게는 알고리즘문제는 공포스럽기에 공포감이 먼저 들었다. 하지만, 그런 마음을 뒤로하고 천천히 생각했다. 가장 먼저 해야할 것이 뭘까? 바로 기본값이 무엇이냐는 것이다. 그 기본값을 생각하니 저절로 어떻게 해야할지 감이 잡히기 시작했다. 기본값을 "수박"으로 둔 후 홀수인 경우에는 "수"를, 짝수인 경우에는 "수박"을 붙이면 된다고 생각하게 됬다.

2. 내 코드

function solution(n) {
    let answer = '';
    let basic = '수박';
    let x = (n/2); //x는 몫을 의미.
    if(n % 2 === 0){answer = basic.repeat(x)}
    else{answer = basic.repeat(x) + basic.substring(0,1)}
    return answer;
}
# Javascript 문자 n번 반복 생성 방법

    문자열.repeat(n) => 문자열을 n번 반복 연결한 문자열 반환
     * n은 반복할 횟수(정수)
     * n을 생략하거나, 0으로 지정시 => 빈 문자열 "" 반환
"a".repeat(3); // "aaa" 반환 
"abc".repeat(3); // "abcabcabc" 반환 
"a".repeat(); // "" 빈문자열 반환 
"a".repeat(0); // "" 빈문자열 반환​

    Array(n+1).join("문자열") => 문자열을 n번 반복 연결한 문자열 반환
      * n은 반복할 횟수(반복할 횟수보다 1을 크게 넣어줘야함)
Array(5).join("a"); // "aaaa" 반환 
Array(5).join("abc"); // "abcabcabcabc" 반환​


substring 함수

substring()

substring("시작 위치", "종료 위치") 또는 substring("시작 위치")
substring() 함수는 시작 위치에서 종료 위치까지 문자열을 자른다.
※ 주의할 점은 종료 위치의 -1까지 문자열을 자른다는 것이다.

3. 다른 사람들의 코드

const waterMelon = n => {
    return '수박'.repeat(n/2) + (n%2 === 1 ? '수' : '');
}
조건부 삼항 연산자는 JavaScript에서 세 개의 피연산자를 취할 수 있는 유일한 연산자입니다.
맨 앞에 조건문 들어가고. 그 뒤로 물음표(?)와 조건이 참(truthy)이라면 실행할 식물음표 뒤 들어갑니다.
바로 뒤로 콜론(:)이 들어가며 조건이 거짓(falsy)이라면 실행할 식 마지막에 들어갑니다.

삼항연산자를 이용하면 정말 간단하게 표현이 가능한 것 같다. 이런 코드를 짤 수 있는 날이 오긴할지 모르겠다.

4. 결론

substring, substr 공부 하기!!!