오늘한것
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.