WHAT I LEARNED/Algorithm

[프로그래머스 / 자바스크립트] 수박수박수박수박수박수?

보니bonnie 2022. 1. 24. 15:54
728x90

오늘의 첫번째 담당 문제. 뭔가 신박해보이는 문제가 나왔다.

토요일에 머리가 꽉 찬 상태로 보려고 하니 전혀 읽히지 않았던 문제!ㅎ

오늘 차근차근 뜯어보니

 

  • n의 숫자만큼 문자열을 반복해야 하니까 'for문'을 사용.
  •  '길이'가 n이라고 했으므로 for문에서 n.length가 아니라 그냥 n사용.
  • 반복해서 단어를 표현해야하므로 '별 찍기 활용'

로 이해를 하고, 일단 코드부터 작성해보기로 했다.

 

 

💡 나의 코드

function solution(n) {
    var answer = '';
    var word = '수박'
    for (let i=0; i<n; i++){
        answer = word.repeat(n)
    }
    return answer;
}

일단 1️⃣단어값을 먼저 주고, 2️⃣'for문'을 준 뒤, 3️⃣단어값을 n번 반복하게 만들었다.

제발 코드 어떻게 나오는지 보게 실행결과만 나와라, 하는 마음으로 코드 돌리니까

 

실패했지만 코드는 나왔다! 나같은 왕왕왕초보에게는 긴 오류 메세지가 아니라 실패로 나오는게 파악이 쉬워서 더 좋다..ㅎ

아무튼 n번 반복되는 건 확인했지만 앞에서 n만큼 잘리지는 않았다.

그래서 문자열 자르는 slince를 적용해야겠다고 생각했다.

 

 

💡 나의 코드_최종

function solution(n) {
    var answer = '';
    var word = '수박'
    for (let i=0; i<n; i++){
        var answer = word.repeat(n).slice(0,n)
    }
    return answer;
}

 

통과!

 

 

.

.

 

그런데 문득 코드를 보니이 문제에는 for문이 필요없겠다는 생각이 들었다.

for문으로 반복하는 범위를 정해주는 느낌? 인건데

이미 반복의 범위는 repeat에서 n번 반복하라고 했으니 굳이 중복해서 해야할까?

그러고보니 코드 실행을 돌리니까 시간이 조금 걸린 것 같은 느낌이기도 하고?!

 

그래서 for문을 떼어냈다.

 

 

💡나의 코드_최종

function solution(n) {
    var word = '수박'
    var answer = word.repeat(n).slice(0,n)
    return answer;
}

for문을 떼어내고 간단해진 코드에 살짝 좋아하고 있었는데 눈에 또 거슬리는 하나. 바로 word.

'별 찍기도 '*'로 반복되는 문자를 바로 줬는데 왜 word로 따로 단어값을 줬지?' 하는,

스스로 해놓고 스스로 어이없는 의문이 생겨서 또 또 코드 수정.

 

 

💡 나의 코드_진짜_최종

function solution(n) {
    var answer = '수박'.repeat(n).slice(0,n)
    return answer;
}

 

그래서 이렇게 완성된 나의 코드. 간단하게 끝나버렸다. 문자열 숫자 변환하는 문제 다음으로 간결한 코드가 나왔다.

 

💪🏻 오늘 문제는 쉬었지만 풀이과정이 너무나 아쉽다.

비슷한 방식을 사용하는 문제들을 반복해서 풀다보니 써야하는 식에 대한 고정관념을 갖게 된 것?

예를 들면, '반복'이라는 단어에 꽂혀서 바로 'for문'을 사용해야한다고 섣불리 판단해버린 것.
문제를 대충 보고 넘긴 결과물..ㅋ

처음부터 간결하게 만들 수 있었는데 너무너무 아쉽다. 문제를 잘 읽고 제대로 이해하는 버릇을 들여야지.

728x90