목록분류 전체보기 (147)
게으른개발너D
https://school.programmers.co.kr/learn/courses/30/lessons/12953 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 두 수의 최소공배수(Least Common Multiple)란 입력된 두 수의 배수 중 공통이 되는 가장 작은 숫자를 의미합니다. 예를 들어 2와 7의 최소공배수는 14가 됩니다. 정의를 확장해서, n개의 수의 최소공배수는 n 개의 수들의 배수 중 공통이 되는 가장 작은 숫자가 됩니다. n개의 숫자를 담은 배열 arr이 입력되었을 때 이 수들의 최소공배수를 반환하는 함수, solutio..
1. 루프 돌리기 1. 최대공약수 최대공약수는 두 수 A, B의 공통 약수들 중 가장 큰 정수이다. 가장 직관적인 방법은 min(A, B)부터 1까지 루프를 돌려 각 수를 나누어보는 방법이다. const getGCD = (a, b) => { const max = Math.min(a, b); let gcd = max; for(let i = max; i >= 1; i--){ if(a % i === 0 && b % i === 0){ gcd = i; break; } } return gcd; } 2. 최소공배수 최소공배수는 A, B의 공통인 배수들 중 가장 작은 정수이다. 가장 직관적인 방법은 max(A, B)부터 시작하는 루프를 돌려 각 수들로 나누어보는 방법이다. const getLCM = (a, b) =>{..
개발을 하다가 API를 불러오는데 복잡한 로직이 필요없어 React Query를 쓰지 않고 Async/ Await를 통해 api를 불러오고 있었다. 하지만 가장 눈에 거슬리는 것은 리스트 item들을 API로 불러온 후 상세보기 화면으로 진입, 그 후에 뒤로가기를 하면 다시 API를 호출하여 loading 아이콘이 빙글빙글 돌고 있는 것이다. 날짜별로 localStorage에 저장한 후 다시 불러와 지난 날짜 data들은 삭제할까 싶다가 그냥 React Query를 사용하기로 했다. 역시 caching 기능을 무시할 수 없다.ㅠㅠ react query는 fetching, caching, 서버 데이터와의 동기화를 지원해주는 라이브러리이다. 즉, React 환경에서 비동기 query 과정을 도와주는 라이브러..
google maps나 google books 등의 embed를 사용하거나 window 객체에 property를 추가하는 일이 있을 수 있다. 예를들어 google books 미리보기 embed를 사용하는 경우이다. html 파일에 script 태그를 사용하여 API 로더를 포함시킨다. 하지만 위의 html이 아닌 다른 ts 파일에서 아래와 같이 작성하면 window는 google이라는 property의 존재를 알지 못한다. window.google.books.load(); function initialize() { var viewer = new window.google.books.DefaultViewer(document.getElementById('viewerCanvas')); viewer.load('..
메모리 (Memory) 컴퓨터는 CPU를 사용해 연산하고, 메모리를 사용해 데이터를 기억한다. 메모리는 데이터를 저장할 수 있는 셀 (memory cell)의 집합체이다. 메모리 셀 하나의 크기는 1바이트 (8비트)이며, 컴퓨터는 1바이트 단위로 데이터를 저장하거나 읽어들인다. 각 셀은 메모리 공간의 위치를 나타내는 고유의 메모리 주소 (memory address)를 갖는다. ✨ 4.1 변수란? 변수는 왜 필요한가? 10 + 20 이란 코드를 실행하면 값 10과 20은 메모리 상의 임의의 위치 (메모리 주소)에 기억(저장)되고 CPU는 이 값을 읽어들여 연산을 수행한다. 연산 결과인 30 또한 메모리 상의 임의의 위치에 저장된다. 하지만 CPU가 만들어낸 숫자 30을 재사용할 수 없다. 30을 재사용하려..
App.js (유효성 검사 실행을 불러올 컴포넌트) 유효성 검사를 실행할 email과 password input form을 불러온다. form을 submit 할 버튼에 addEventListener로 유효성 검사를 실행할 VerifyForms class의 instance를 만든다. import VerifyForms from 'VerifyForms.js'; class App { constructor({ $target }) { this.$target = $target; this.$email = document.querySelector("#email"); this.$password = document.querySelector("#password"); this.$btn = document.querySelecto..
1. test file 생성 파일명에 .spec, .test 를 넣어주면 test file로 인식된다. ex) login.test.js 2. test code 작성 test("테스트 설명", () => { expect("검증 대상").toXxx("기대 결과"); }); function solution(n) { let answer = '' const nArr = [1, 2, 4]; while(n) { answer = nArr[(n - 1) % 3] + answer; n = n % 3 === 0 ? (n / 3) - 1 : Math.floor(n / 3); } return answer; } // 테스트 코드 시작 describe('math.js', () => { // test() : 하나의 테스트 케이스를 ..
컴퓨터 시간은 어떤 원리로 동작할까? 시간이 결정되는 법칙은 세 가지가 있다. 1. 물리량 시간은 물리학 관점에서 봤을 때 시각과 시각 사이 간격을 표현하는 단위를 뜻한다. ex) 지금 이 순간 (Instant)은 빅뱅 (Epoch) 이후 시간이 얼마나 흘렀는가? 2. 위치 시간은 위치에 따라 다르게 표현될 수 있다. ex) 경도 0도(UTC)가 정오일 때 동경 135도의 시각은? (경도상 위치) ex) 런던이 정오일 때 미국의 시각은? (국가, 지역) 3. 천문 현상 지구자전속도의 불규칙성, 지구의 자전주기와 공전주기 등 천문 현상으로 인한 시간 보정이 필요하다. ex) 윤초, 윤달, 윤년 물리 법칙이 아닌 협의에 따른 표현도 있다. 1. 문화 문화에 따라 시간 표현이 다를 수 있다. ex) 태양력, ..