오늘한것 

1. 알고리즘 연습문제풀기 (프로그래머스) 1 ~ 11

 

몇가지 있지만 그중에서 풀기 어려웠던 문제를 써보고자 한다.

 

직사각형 별찍기

https://school.programmers.co.kr/learn/courses/30/lessons/12969

 

process.stdin.setEncoding('utf8');
process.stdin.on('data', data => {
    const n = data.split(" ");
    const a = Number(n[0]), b = Number(n[1]);
    console.log(a);
    console.log(b);
});

난생처음 제대로 풀어보는 알고리즘 문제라 어떤식으로? 뭘 건드려야 정답제출이 되는거지 같은 것도 감이 안잡혀서 고민했던 문제이다. 

process.stdin.setEncoding("utf8");
process.stdin.on("data", (data) => {
  const n = data.split(" ");// 받은 데이터를 공백으로 나눈다.
  const a = Number(n[0]),// n의 0번째 값
    b = Number(n[1]);// n의 1번째 값
  const str = "*".repeat(a);//*을 a번 반복한다.
  //직사각형의 세로길이가 b이고, i가 0부터 시작이니까 <를 사용 
  for (let i = 0; i < b; i++) {
    // str을 b-1번 반복, i가 0부터 시작이니까
    console.log(str);
  }
});

 

 

글자 가운데오게 하기

 

function solution(s) {
  // 5글자의 경우 2
  let i = s.length / 2;

  // 홀수인지 짝수인지 판별
  let j = i % 2;

  if (j) {
    // 홀수인 경우
    let k = s[Math.floor(i)];
    var answer = k;
  } else {
    //짝수인 경우
    let k = s[i - 1] + s[i];
    var answer = k;
  }

  return answer;
}

 

 

없는 숫자 더하기 

0부터 9까지의 숫자 중 일부가 들어있는 정수 배열 numbers가 매개변수로 주어집니다. numbers에서 찾을 수 없는 0부터 9까지의 숫자를 모두 찾아 더한 수를 return 하도록 solution 함수를 완성해주세요.

function solution(numbers) {
  let arr1 = [];
  let sum = 0;
  for (let i = 0; i < 10; i++) {
    arr1.push(i);
  }
  let difference = arr1.filter((x) => !numbers.includes(x));

  for (let i = 0; i < difference.length; i++) {
    sum += difference[i];
  }
  var answer = sum;
  return answer;
}

이문제는 filter를 사용하고 싶었는데, 찾아보다가 includes의 존재를 알게 되어 사용. 

 

 

 

개선해야할점

1. 자바스크립트 문법과 자료형, 기본 문법등 전체적으로 부족하다.

=> 기본적인 for문과 if 문을 이용하는 것밖에 모르고 좀 더 문제를 쉽게 간결하게 풀어주는 메소드를 활용하지 못함. 

=> 내가 푼문제도 중요하지만 새로운 해답이 없는지 찾아보거나 다른 해답도 참고해가며 풀이.

 

2. 

+ Recent posts