자바스크립트 28

프로그래머스 동적계획법: 정수 삼각형 javascript

문제링크 https://school.programmers.co.kr/learn/courses/30/lessons/43105 함수설명 함수는 완전 이진 트리 자료구조를 나타내는 2차원 배열 triangle을 입력으로 받습니다. 각 성분배열은 트리의 한 레벨을 의미합니다. 루트 노드부터 출발하여 리프 노드로 가는 경로에서, 노드에 있는 값들을 모두 더하여 구할수있는 "경로 합"값중 최댓값을 반환해야 합니다. 정답 코드 const solution = (triangle) => { const depth = triangle.length; const memo = [...Array(depth)].map((x,i) => [...Array(i + 1)].fill(0)); triangle[depth -1].forEach((..

코딩테스트 2023.08.30

클린코드 3주차: 예외처리, 경계 그리고 클래스

230822 클린코드 3주 차 클린코드 북 스터디를 하며 작성한 독후감 겸 요약글입니다. 7장 오류처리 오류와 예외의 구분을 알게 되었습니다. 저는 이전까지는 오류와 예외를 모두 오류로 간주하고 있었습니다. 이전에 생각하던 오류의 종류 프로그램을 중단시키는 오류 의도하지 않은 방식으로 실행되는 오류 두 번째 항목을 예외라고 지칭하는 것이었습니다. 잘못된 실행을 감지하고 처리하는 것을 try-catch 블록을 통한 예외 처리라고 합니다. 이전에는 기존 로직에서 오류가 발생하면, 원래 실행시킬 코드를 끊고, 다른 코드를 처리하므로 그 코드가 예외코드라고 생각했었습니다. 명확한 정의를 알게 되어 기분이 좋습니다. 책 내용으로 들어가자면, 마틴 아저씨는 오류를 예외로 처리해야 한다고 권고하십니다. 아마도 오류가..

자바스크립트: 프로그래머스 lv1 모의고사

문제링크 https://school.programmers.co.kr/learn/courses/30/lessons/42840 함수설명 1,2, 그리고 3번 총 3명의 학생들이 답안을 찍는 방식이 보기에 주어져있습니다. 답안지 answer을 입력받아 세 학생들의 시험지를 채점한 후, 최고점을 받은 학생들의 번호를 담은 배열을 반환여야 합니다. 정답코드 //찍는 주기에 맞게 채점하여 점수를 반환 const scorePaper = (studentStyle, answers) => { const range = studentStyle.length; const scoredTestPaper = answers.filter((answer, index) => answer === studentStyle [index % rang..

클린코드 2주차: 주석, 형식맞추기, 그리고 객체와 자료구조

클린코드 북 스터디를 하며 작성한 독후감 겸 요약글입니다. 이번주에는 4장 주석, 5장 형식 맞추기, 그리고 6장 객체와 자료구조를 읽고 이야기를 나누기로 했습니다. 4장 주석 첫인상 4장은 신선한 쳅터였습니다. 저는 주석은 코드가 아니라고 생각하고 있었습니다. 그래서 좋은 주석을 작성하는 법에대한 쳅터가 상당히 독특하게 다가왔습니다. 주석은 기껏해야 필요악이다. 저자는 주석을 개발자가 코드로 정확한 의도를 표현하는 것에 대해 실패했을 때 사용하는 필요악으로 묘사합니다. 주석은 거짓말을 한다. 개발자가 코드를 작성할 때 실수를 하는 것처럼, 주석을 작성할 때에도 으레 실수를 합니다. 하지만 잘못 쓰인 주석을 테스트할 수 있는 방법은 없으므로 주석은 때로 거짓말을 하거나 혼란을 줍니다. 주석은 의무적으로 ..

클린코드 1주차: 깨끗한 코드, 의미있는이름, 그리고 함수

클린코드 북 스터디를 하며 작성한 독후감 겸 요약글입니다. 1장 깨끗한 코드 나쁜 코드의 안 좋은 점을 통해 클린코드의 필요성을 역설하고 그 특징을 묘사합니다. 책 제목이 클린 코드인 만큼 주의 깊게 읽었습니다. 나쁜 코드로 치러야 하는 대가 더러운 코드의 누적은 점진적으로 업무 효율을 하락시키고, 종국에는 잘 성장하던 서비스가 문을 닫는 이유가 될 수 있습니다. 코드를 깔끔하게 작성하는 것은 개발자의 만족감을 위한 요소가 아닌 프로젝트의 생존 을 위한 행위라는 인상을 받았습니다. 깨끗한 코드란? 함수와 클래스들이 한 가지 일을 잘하는 코드 읽고 이해하기 쉬운 코드 기능 추가 및 수정이 쉬운 코드 시간을 들여 정리한 코드 중복이 없고, 추상화가 잘되어있는 코드 각 부분이 짐작했던 기능을 제대로 수행하는 ..

if, while 조건문을 사용할 때 false로 평가되는 값들 : falsy 값 정리

false로 평가되는 값 바로 보기 동기: if와 while 조건문을 유연하게 작성하고자, 조건식이 false로 판단되는 값들을 정리하였습니다. *false가 아닌 값들은 전부 true로 판별됩니다. 조건문의 괄호 안에는 부울리언(boolean)타입이 아닌 여러가지 타입의 데이터가 입력될 수 있습니다. if (바로여기) {} while( 여기){} 그러한 데이터들은 모두 true, 혹은 false로 평가됩니다. 예시 truthy "hello" 나 1은 각각 문자열(string)과 숫자(number) 타입을 갖습니다. 하지만 이 값들이 들어간 조건식은 true로 평가됩니다. 이러한 값들을 truthy 라고 합니다 falsy undefined나 null 은 실제로 false가 아니지만, 조건식에선 false..

dependencies: 의존성이란? package.json과 함께 알아보기 /자바스크립트, Node.js

package.json Node.js환경으로 자바스크립트 프로그래밍을 할 때, 개발 프로젝트의 메타적인 정보가 저장되는 파일이다. *이름, 사용된 패키지 버전정보 등 어디에 쓰이는가? 파악: package.json의 정보를 살펴봄으로써 프로젝트사용된 기술스택의 종류와 버전을 알 수 있다. 관리: 또 작성되어 있는 값들은 터미널의 여러 명령어에 연동되므로 패키지설치 및 관리, 테스트 케이스 실행 등 전체 프로젝트를 손쉽게 관리하는 데에 쓰인다. package.json 생성하기 보통은 개발사작과정에서 다음 명령어를 터미널에 입력하여 프로젝트 초기화를 진행할 때 자동으로 생성된다. npm init 생성된 package.json { "name": "test", : 패키지를 npm에 퍼블리싱할 이름 "versio..

BEM: CSS를 위한 HTML 클래스 명명규칙

많은 프로그래밍 언어들이 snake_case, camelCase, PasckalCase 등 저마다의 명명규칙을 가지고 있는 것처럼 HTML 에도 명명규칙이 있다. 왜? html 태그도 id와 class를 통해 관리하니까 쉽고 직관적인 네이밍이 중요하기 때문이다. 가장 대중적인 html 클래스 명명법, BEM에 대해 알아보자. BEM: Block Element Modifier BEM, 뱀은 블록 엘리멘트 모디파이어의 축약어로 HTML 요소들을 block과 그에 포함된 element로 구분하고 거기에 적용시킬 개별적 디자인 특성을 modifier로 구분해서 클래스명을 지어주는 규칙이다. BEM 표기법을 사용하는 유저들은 html의 id속성은 사용하지 않는다. 오로지 class만을 사용한다. 왜? select..

자바스크립트에서 랜덤 정수 출력하기

자바스크립트에선 놀랍게도 랜덤정수를 출력하는 built-in(내장) 함수가 없다. 단지 0과 1 사이에서 랜덤 유리수를 출력해 주는 메서드 Math.random() 만이 있을 뿐이다. 하지만 이를 잘 응용하면 원하는 랜덤정수를 출력하는 함수를 만들 수 있다. 목차 1. 최댓값만 설정하기: 0부터 n 사이의 랜덤정수 구하기 2. 최솟값과 최댓값 모두 설정하기: min부터 max사이의 랜덤정수 구하기 간략한 설명 Math.random() ; : 0 이상 1 미만의 랜덤 유리수를 반환한다. Math.random() * X ; : 0 이상 X 미만의 랜덤 한 양수가 반환된다. 위에 만들어진 숫자에 Math.floor함수로 소수점에 해당하는 숫자를 버려주면, Math.floor(Math.random() * (X ..

filter(필터): 배열의 성분이 불편해? / 자바스크립트 메서드

filter filter 메서드란? : array(배열)의 성분을 필터링하여 새로운 배열을 만드는 메서드. 인자는 콜백함수, 반환값은 배열이다. 기억할 것: 기존의 배열성분을 수정하는 메서드가 아니다. 필터링된 새로운 배열을 반환하는 메서드이다. 문법 // 코드의 형태 array.filter(callback함수); //새로 만들어진 배열을 저장할때 const newArray = array.filter(callback함수); filter 메서드의 인자 1. 인자는 callback 함수이다. 이미 정의되어 있는 함수명이나, 익명함수(arrow function)가 filter 메서드의 인자가 될 수 있다. 2. 콜백함수는 boolean값을 반환해야 한다. true or false를 반환하는 함수가 사용되어야 ..