Javascript - 프로그래머스 11일차

이율곡·2023년 6월 19일

Programmers

목록 보기
11/44
post-thumbnail

11일차

11일차는 60%를 풀었다. 벌써 반이 넘어갔다. 문제로는 75문제를 풀었고, 남은 문제는 49문제가 남았다.

물론 마음만 먹는다면, 더 많은 문제를 풀 수 있다. 그러나 내 목표는 빠르게 이 문제를 다 푸는 것이 아니라 매일 문제를 풀면서 코딩에 대한 더 많은 생각을 꾸준히 하는 것이다. 그러니 매일 푸는 시간 동안에는 문제를 100% 효과적으로 이해하고 풀도록 하는 연습이 필요하다.


오늘의 문제

x 사이의 개수

문자열 myString이 주어집니다. myString을 문자 "x"를 기준으로 나눴을 때 나눠진 문자열 각각의 길이를 순서대로 저장한 배열을 return 하는 solution 함수를 완성해 주세요.

입출력 예시

myStringresult
"oxooxoxxox"[1, 2, 1, 0, 1, 0]
"xabcxdefxghi"[0, 3, 3, 3]

예시 풀이

입출력 예 #1
"x"를 기준으로 문자열을 나누면 ["o", "oo", "o", "", "o", ""]가 됩니다. 각각의 길이로 배열을 만들면 [1, 2, 1, 0, 1, 0]입니다. 따라서 [1, 2, 1, 0, 1, 0]을 return 합니다.

이 문제를 선택한 이유는, 많은 풀이 방법이 있기 때문에 이 문제를 골랐다. 풀이 방법이 다양하다는 건 좋은 문제라고 생각한다.

접근방법

접근방법에 따라 푸는 방식이 달라진다. 예를 들어 반복문을 통해 문자열을 돌면서 x가 아니면 카운트를 올리다가 x를 만나면 값을 넣는 것도 존재하고.

x를 split()으로 나눠 배열에서 길이를 입력하는 방법도 존재한다. 물론 가장 편한 풀이방법이 존재하지만, 다양한 생각을 길러보는 단계가 기초 단계이지 않을까 싶다.

풀이

function solution(str) {
    var answer = [];
    
    let result = str.replace(/x/g, ' ').split(' ');
    for(let i = 0; i < result.length; i++) {
        answer.push(result[i].length);
    }
    
    return answer;
}

나는 정규표현식을 사용했다. 물론 이렇게 했을 때, 더 많은 데이터를 사용하겠지만, 정규표현식을 사용함으로써 하나 더 내것으로 만드는 것이라 여긴다.

문제는 result 변수에 정규표현식을 사용하여 'x' 문자를 제외한 배열을 넣었다. 그리고 배열을 반복하여 길이를 answer에 넣었다.


정리하기

남은 문제들은 더 깊이 이해하기.

문제가 쉽기 때문에 더 깊이 이해할 것도 없다. 라는 생각이 들기도 하지만 중요하지 않은 문제는 없다고 생각한다. 그러니 문제를 풀 때만은 문제만에 집중하는 자세를 가져야겠다.

그렇게 해야 문제가 내 것으로 되어, 응용 문제를 풀더라도 접근할 수 있겠다는 생각이 든다. 그러니 지금 기초 문제를 풀 때 어영부영하기 보다 말 그대로 기초를 탄탄히 잡아야겠다 라는 생각을 한 11차를 보냈다.

profile
음악을 좋아하는 사람이 음악을 만들 듯, 개발을 좋아하게 될 사람이 쓰는 개발이야기

0개의 댓글