Javascript - 프로그래머스 6일차

이율곡·2023년 6월 12일

Programmers

목록 보기
6/44
post-thumbnail

6일차

주말동안에도 문제를 푼 결과다.

매일 10문제씩 풀려고 했다. 하지만 Lv.0라 할지라도 정답률이 80% 이하로 떨어지면 난이도가 높았다. 그래서 한 문제를 풀더라도 이전보다 힘을 들여서 풀게됐다. 그래서 이후부터는 매일 10문제는 어렵고 약간의 아이스브레킹처럼 매일 공부하기 전에 하도록 해야겠다.

문제가 어렵더라도 포기하지말고 차근차근 해보기.👣


문법

substr()

substr() 메서드는 문자열을 자르는 메서드이다. 문자열에서 특정 위치에서부터 지정된 위치까지 자른다.

예시

const str = "Hello, World!";
const result1 = str.substr(7, 5);
console.log(result1);  // "World"

const result2 = str.substr(7);
console.log(result2);  // "World!"

위와 같이 인덱스를 위치로 자를 수 있다. substr() 메서드를 이번 문법으로 선정한 이유는

알고 있어도 떠오르지가 않는다.

이다. 문자열을 자르는 메서드는 알고 있지만, 막상 문제를 마주하면 바로 substr()이 떠오르지가 않는다. 그렇기 때문에 계속해서 사용해보고 마주해봄으로써 이러한 방식도 있음을 떠올릴 수 있게 하려고 적었다.

hasOwnProperty()

hasOwnProperty() 메서드는 자주 사용하지 않는 메서드이다. 그러나 오늘의 문제에도 나오고 알고 있으면 생각보다 자주 쓸 거 같아 적었다. 우선 예시부터 적어본다.

예시

const obj = {
  name: "John",
  age: 25
};

console.log(obj.hasOwnProperty("name"));  // true
console.log(obj.hasOwnProperty("age"));   // true
console.log(obj.hasOwnProperty("gender"));  // false

예시를 살펴보면, obj 객체가 있고 name과 age 속성이 있다. 그리고 log를 보면 hasOwnProperty() 메서드를 사용하여 속성이 있는지 확인하여 있으면 true, 없으면 false를 반환한다.

이 메서드는 객체의 속성의 존재 여부를 확인하기 좋고, 이를 응용할 수 있는 방법도 많다.


오늘의 문제

영어가 싫어요

영어가 싫은 머쓱이는 영어로 표기되어있는 숫자를 수로 바꾸려고 합니다. 문자열 numbers가 매개변수로 주어질 때, numbers를 정수로 바꿔 return 하도록 solution 함수를 완성해 주세요.

제한사항

  1. numbers는 소문자로만 구성되어 있습니다.
  2. numbers는 "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine" 들이 공백 없이 조합되어 있습니다.
  3. 1 ≤ numbers의 길이 ≤ 50
  4. "zero"는 numbers의 맨 앞에 올 수 없습니다.

풀이

const num = {
    'zero': 0, 'one': 1, 'two': 2,
    'three': 3, 'four': 4, 'five': 5,
    'six': 6, 'seven': 7, 'eight': 8, 'nine': 9
}

function solution(numbers) {
  let result = "";
  let currentWord = "";

  for (let i = 0; i < numbers.length; i++) {
    currentWord += numbers[i]; // 1
   
    if (num.hasOwnProperty(currentWord)) {
      result += num[currentWord];
      currentWord = "";
    }
  }
    
  return parseInt(result);
}

오늘의 문제로 선정한 이유는 다음 단계로 성장하기에 너무 좋은 문제라 생각했다.

우선 첫 번째로는 문자열을 인덱스로 받을 수 있다는 점이다. 1이라 적혀 있는 라인을 보면 문자열 인덱스를 받아 새로운 단어를 만든다.

그리고 두 번째로 새로운 단어, 예를 들어 one이 만들어지면 앞서 정리한 문법인 hasOwnProperty() 메서드로 속성이 있는지 없는지 판단하여 있으면 영어를 숫자로 바꿔 저장하고 이를 초기화 한다.

이번 문제를 풀면서 객체의 속성을 접근하는 것도 공부했고, 문자열에 인덱스로 접근할 수 있다는 점도 배워서 굉장히 좋은 문제였다는 생각이 들었다.


정리하기

점점 올라갈수록 한 번 되돌아보고 다음 단계 준비하자.

Lv.0지만, 정답률에 따라 난이도는 천차만별이다. 그렇기 때문에 매일 10문제를 푼다는 것보다 하나하나 이해하고 내것으로 만들 필요가 있다.

지금은 실력으로 내가 문제를 풀면 억지로 하는 것밖에 되지 않다. 그렇기 때문에 잠시 비슷한 레벨의 다른 문제들을 푼 후 다시 도전해야겠다.

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

0개의 댓글