전체 글
TIL - 20221014(JavaScript 객체에서 키를 기준으로 필터링)
주의! 본 게시물은 프로그래머스 '주차 요금 계산' 문제에 대한 중요 내용을 포함하고 있습니다. 풀기 전이시라면 이 점 참고해주시길 바랍니다! 링크: https://school.programmers.co.kr/learn/courses/30/lessons/92341 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제를 풀면서 차량 번호가 작은 자동차부터라는 문구가 있어서 객체에서 키 값을 기준으로 오름차순 정렬하는 방법이 필요했다. 객체에서 키 값을 기준으로 오름차순 정렬하는 방법은 다음과 같다. const obj = { c: 3, b: 2, a: 1 };..
TIL - 20221013
주의! 본 게시물은 k진수에서 소수 개수 구하기 문제에 대한 중요 내용을 포함하고 있습니다. 풀기 전이시라면 이 점 참고해주시길 바랍니다! 링크: https://school.programmers.co.kr/learn/courses/30/lessons/92335 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제를 읽으면서 바로 든 생각은 주어진 수 n을 주어진 k진수로 변환하는 것과, 소수 판별법이었다. 먼저 소수 판별법은 다음과 같은 방법들이 존재한다는 사실을 오늘 알게 됐다. 반복문을 이용해 나누어지는 수가 존재하는지 계산하는 방법 주어진 수 / 2까..
TIL - 20221012
주의! 본 게시물은 프로그래머스 '뉴스 클러스터링' 문제에 대한 중요 내용을 포함하고 있습니다. 풀기 전이시라면 이 점 참고해주시길 바랍니다! 링크: https://school.programmers.co.kr/learn/courses/30/lessons/17677 풀면서 시간은 조금 걸렸지만 막히는 부분은 없었다. 하지만, 이번 문제에서 코드 실행하기는 통과해도 제출 후 채점 과정에서 테스트 케이스 4, 7, 9, 10, 11에서 막혔다. 검색을 통해 내가 해결하지 못한 부분은 '원소의 중복을 허용하는 다중집합에 대해서 확장할 수 있다.'를 제대로 해결하지 못한 것이었다. 당장 예시에서도 이렇게 나와있는데 필자는 교집합 구하는 방법을 filter와 includes를 통해 구현했고 예시로만 실행해봐도 이렇..
TIL - 20221011
주의! 본 게시물은 프로그래머스 '튜플' 문제에 대한 중요 내용을 포함하고 있습니다. 풀기 전이시라면 이 점 참고해주시길 바랍니다! 링크: https://school.programmers.co.kr/learn/courses/30/lessons/64065 문제를 읽으면서 이해가 되지 않는 지점이 있었다. 집합은 원소의 순서가 바뀌어도 상관없지만, 튜플은 분명하게 정해진 순서가 존재한다. 그러면 집합만을 이용해 어떻게 튜플을 만들어낼 수 있는가?라는 궁금증이 생겼다. 이 궁금증에 대한 답을 얻지 못해서 검색을 통해 답을 얻게 되었다. 집합의 원소를 원소의 크기가 작은 순으로 정렬한다. 원소 배열에 존재하는 숫자들을 정답 배열에 없으면 넣어주고, 있으면 건너뛴다. 이게 가능한 이유로는 1. 중복되는 원소가 없..
TIL - 20221010
오늘은 자바스크립트의 가비지 컬렉션에 대해 공부했다. 가비지 컬렉션 기준 자바스크립트는 도달 가능성이라는 개념을 사용해 메모리 관리를 수행한다. 도달 가능한이라는 의미는 어떻게든 접근하거나 사용할 수 있는 값을 의미한다. 도달 가능한 값들은 메모리에서 삭제되지 않는다. 다음과 같은 값들은 태생부터 도달할 수 있기 때문에 명백한 이유 없이 삭제되지 않는다. 현재 함수의 지역 변수와 매개 변수 전역 변수 중첩 함수 체인에 있는 함수에서 사용되는 변수와 매개변수 결국, 루트가 참조하는 값이나 체이닝으로 루트에서 참조할 수 있는 값은 도달 가능한 값이 된다. 자바스크립트 엔진내에서 가비지 컬렉터가 끊임없이 동작한다. 따라서, 모든 객체를 모니터링하고 도달할 수 없는 객체는 삭제된다. 가비지 컬렉션 알고리즘 자바..
TIL - 20221009
자바스크립트에는 이런 문제가 있다. 0.1 + 0.2 === 0.3 // false 0.1 + 0.2 // 0.30000000000000004 이유로는 자바스크립트 숫자 타입의 값이 IEEE 754의 부동소수점 표현 형식 중 배정밀도 64비트 부동소수점 형식을 따르고 모든 수를 실수로 처리하기 때문에 하나의 숫자 타입만 존재한다. 하나하나 천천히 살펴보자 IEEE 754 IEEE(Institue of Electrical and Electronics Engineer)에서 개발한 컴퓨터에서 부동소수점을 표현하는 방법을 정의한 것이며 널리 쓰이는 표준이다. 부동소수점을 표현하는 형식의 종류로는 2진법 부동소수점 형식과 10진법 부동소수점 형식이 존재한다. 이름 비트 수 지수 비트 가수 비트 지수 편향 bina..
TIL - 20221008 (객체와 Map 성능 차이)
코딩테스트 문제를 풀고 나서 다른 사람의 풀이를 공부할 겸 참고해보면 종종 Map과 Set을 사용하여 푸는 경우가 있다. 객체와 Map의 차이로 가장 큰 차이점은 Map의 키로는 자료형에 제약이 없다는 점이었는데 성능에 차이가 있는지 알아보는 시간을 가졌다. 데이터 갱신 측면에서, Map의 set이 객체의 set보다 2배 느리다. 데이터 조회 측면에서는 Map이 객체보다 10배 더 빠르다. 데이터 갱신 측면의 이유로는 객체의 경우 데이터가 순차적으로 적재되지 않기에 set 활동이 일어나면 아무 빈 공간에 만들어서 값을 넣지만, Map은 순차적으로 데이터를 적재하고 적재하면서 수반되는 추가 활동이 Map의 set 처리에 영향을 주어 객체의 set보다 느려지게 된다. 데이터 조회 측면의 이유로는 객체의 경우..
TIL - 20221007 (LRU)
주의! 본 게시물은 프로그래머스 '[1차] 캐시' 문제에 대한 중요 내용을 포함하고 있습니다. 풀기 전이시라면 이 점 참고해주시길 바랍니다! 링크: https://school.programmers.co.kr/learn/courses/30/lessons/17680 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제를 읽으면서 나온 조건 중 '캐시 교체 알고리즘은 LRU를 사용한다'라는 표현이 있었고 이 LRU를 알지 못하면 문제를 정상적으로 풀 수 없다라는 생각이 들어 LRU에 대해 공부했다. LRU LRU란 Lease Recently Used의 줄임말로,..