프로그래머스 알고리즘 문제. JavaScript

문제 1. 서울에서 김서방 찾기

function solution(seoul) {
    for(var i = 0; i < seoul.length; i++) {
        if(seoul[i] === "Kim") {
            var answer = "김서방은 "+i+"에 있다";
            return answer;
        }
    }
}

첫번째 코드는 그냥 머리에서 생각난대로 반복문을 사용해서 구현해보았다. indexOf의 존재를 모를 때라서 냅다 반복문 돌렸다.

function solution(seoul) {
    var answer = "김서방은 " + seoul.indexOf("Kim") + "에 있다";
    return answer;
}

두 번째 코드가 indexOf의 존재를 알고나서 구상해 본 코드이다. 첫 번째로 생각해본 코드보다 짧고 간결하다. 내장 함수의 존재를 어느정도 알고 있으면 같은 문제를 해결하는 코드라도 조금 더 간결하고 명확하게 구현할 수 있는 것 같다.

문제 2. 가운데 글자 가져오기

function solution(s) {
    var answer;
    var half = s.length/2;
    
    if (s.length % 2)    answer = s[Math.floor(half)];
    else    answer = s[half-1] + s[half];
    
    return answer;
}
function solution(s) {
    var half = s.length/2;
    return s.length % 2 ? s[Math.floor(half)] : s[half-1] + s[half];
}

이 문제는 처음부터 두 가지 방법으로 구상을 했고 둘 다 구현을 해보았다. 상황에 맞게 삼항 연산자를 쓰니 코드가 간결하고 가독성이 높아진 것을 한 눈에 볼 수 있었다.

문제 3. 수박수박수박수박수...

function solution(n) {
    var answer = '';
    for(var i = 0; i <= (n-1); i++) {
        if((i+1) % 2)   answer = answer.concat('수');
        else    answer = answer.concat('박');
    }
    return answer;
}

처음에 코드를 구현할 때 var answer = ''; 이 부분을 var answer; 이렇게만 선언을 했었다. 그런데 TypeError가 떴다. 자바스크립트는 변수를 선언할 때 자료형을 명시해주지 않다보니 생긴 문제 같았다. 그래서 answer의 자료형이 string 임을 명시하면서 비어있는 변수로 선언해주기 위해 var answer = ''; 이렇게 선언해주었더니 해결되었다. 문제는 해결 되었으나 올바른 해결 방법이었는지는 모르겠다,, 올바른 방법으로 해결한 것이었으면 좋겠다ㅠㅠ

🎁 문제 출처

좋은 웹페이지 즐겨찾기