| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 |
- html
- CSS
- 코딩
- DFS
- 그리디
- javascript
- 개발자
- 정글
- 백준
- frontend
- js
- c언어
- 팀프로젝트
- 알고리즘
- 혼자 공부해서 개발까지
- 코딩테스트
- BFS
- HTML기초
- Git
- 프론트엔드
- 그래프
- 정렬
- Mini-React
- 해시
- 알고리즘 기초
- 크래프톤 정글
- react
- 프론트앤드
- 프로그래머스
- Python
- Today
- Total
목록javascript (9)
민혁이의 IT스토리
문제 설명n개의 음이 아닌 정수들이 있습니다. 이 정수들을 순서를 바꾸지 않고 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 있습니다.-1+1+1+1+1 = 3+1-1+1+1+1 = 3 +1+1-1+1+1 = 3 +1+1+1-1+1 = 3+1+1+1+1-1 = 3사용할 수 있는 숫자가 담긴 배열 numbers, 타겟 넘버 target이 매개변수로 주어질 때 숫자를 적절히 더하고 빼서 타겟 넘버를 만드는 방법의 수를 return 하도록 solution 함수를 작성해주세요.제한 사항- 주어지는 숫자의 개수는 2개 이상 20개 이하입니다.- 각 숫자는 1 이상 50 이하인 자연수입니다.- 타겟 넘버는 1 이상 1000 ..
문제 설명다양한 모양과 크기의 명함들을 모두 수납할 수 있는 가장 작은 지갑을 만들려고 합니다. 모든 명함은 가로로 눕히거나 세로로 세워서 수납할 수 있습니다.예를 들어, 가로 크기가 80, 세로 크기가 50인 명함을 가로로 눕히면 (80, 50)이 되고, 세로로 세우면 (50, 80)이 됩니다. 모든 명함을 수납할 수 있는 가장 작은 지갑의 크기(가로 x 세로)를 리턴해주세요.문제 요약- 모든 명함의 가로, 세로 중 긴 쪽을 한 방향(예: 가로)으로 몰아넣는 것이 핵심입니다.- 그렇게 정렬된 상태에서 가로의 최댓값과 세로의 최댓값을 곱하면 정답이 됩니다. 출력 예 제출 코드function solution(sizes) { // 1. 각 명함의 가로, 세로를 비교해 작은 값이 앞에 오도록 정렬합니..
문제 설명전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다.전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다.구조대 : 119박준영 : 97 674 223지영석 : 11 9552 4421전화번호부에 적힌 전화번호를 담은 배열 phone_book 이 solution 함수의 매개변수로 주어질 때, 어떤 번호가 다른 번호의 접두어인 경우가 있으면 false를 그렇지 않으면 true를 return 하도록 solution 함수를 작성해주세요.제한 사항phone_book의 길이는 1 이상 1,000,000 이하입니다.- 각 전화번호의 길이는 1 이상 20 이하입니다.- 같은 전화번호가 중복해서 들어있지 않습니다. 출력 예문제 요약주어진 전화..
문제 설명당신은 폰켓몬을 잡기 위한 오랜 여행 끝에, 홍 박사님의 연구실에 도착했습니다. 홍 박사님은 당신에게 자신의 연구실에 있는 총 N 마리의 폰켓몬 중에서 N/2마리를 가져가도 좋다고 했습니다.홍 박사님 연구실의 폰켓몬은 종류에 따라 번호를 붙여 구분합니다. 따라서 같은 종류의 폰켓몬은 같은 번호를 가지고 있습니다. 예를 들어 연구실에 총 4마리의 폰켓몬이 있고, 각 폰켓몬의 종류 번호가 [3번, 1번, 2번, 3번]이라면 이는 3번 폰켓몬 두 마리, 1번 폰켓몬 한 마리, 2번 폰켓몬 한 마리가 있음을 나타냅니다. 이때, 4마리의 폰켓몬 중 2마리를 고르는 방법은 다음과 같이 6가지가 있습니다.- 첫 번째(3번), 두 번째(1번) 폰켓몬을 선택- 첫 번째(3번), 세 번째(2번) 폰켓몬을 선택- ..
문제 설명수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다.마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수들의 이름이 담긴 배열 completion이 주어질 때, 완주하지 못한 선수의 이름을 return 하도록 solution 함수를 작성해주세요.제한사항- 마라톤 경기에 참여한 선수의 수는 1명 이상 100,000명 이하입니다.- completion의 길이는 participant의 길이보다 1 작습니다.- 참가자의 이름은 1개 이상 20개 이하의 알파벳 소문자로 이루어져 있습니다.- 참가자 중에는 동명이인이 있을 수 있습니다. 입출력 예participantcompletionreturn["leo", "kiki",..
Intro지난 포스팅에서는 createElement로 가상 DOM(설계도)을 만들고, render 함수에서 재귀(Recursion)를 사용해 실제 브라우저 DOM에 노드를 그려보았습니다. 드디어 화면에 우리가 짠 코드가 렌더링되는 기쁨을 맛봤죠 하지만, 우리가 만든 초기 render 함수에는 아주 치명적인 문제가 하나 숨어있었습니다.// 이전 포스팅의 문제점: 한 번 시작하면 멈출 수 없는 렌더링function render(element, container) { // ... DOM 생성 ... element.props.children.forEach(child => render(child, dom));} 트리 구조를 순회하기 위해 재귀 호출을 사용했기 때문에, 트리가 엄청나게 깊고 거대해지면 브라우저는..
자바스크립트를 공부하다 보면 가장 우리를 당황스럽게 만드는 존재가 있습니다. 바로 this입니다. 상황에 따라, 장소에 따라 그 정체가 변하는 this는 마치 카멜레온 같습니다.늘 포스팅에서는 this가 결정되는 결정적인 차이인 "누가 나를 불렀는가(호출 방식)"와 "어디서 태어났는가(선언 환경)"의 관점에서 핵심 내용을 정리해 보겠습니다. 메서드 호출: "누가 나를 불렀는가?"가장 직관적인 형태입니다. 점(.) 앞을 주목하세요. 객체의 메서드로 호출될 때, 그 내부의 this는 메서드를 호출한 객체를 가리킵니다.const user = { name: "Gemini", greet() { console.log(this.name); }};user.greet(); // 결과: Gemini (점 앞의..
최근 프로젝트를 진행하면서 AI 도구에 의존하다 보니, 예전에는 분명 자신 있게 설명할 수 있었던 개념들조차 기억에서 흐릿해지고 있음을 느꼈습니다. 편안함에 익숙해져 '내 지식'이 사라져가고 있었던 것이죠. 지금이라도 이 문제를 깨닫고 다시 기초를 다질 수 있어 다행이라 생각합니다. AI가 짜준 코드가 아닌, 온전한 내 지식으로 만들기 위해 오늘 학습한 내용을 기록해 봅니다. 지난 글에서 우리는 코드가 실행될 때 생성되는 환경인 실행 컨텍스트에 대해 알아봤습니다.자바스크립트 엔진은 효율성을 위해 코드가 종료되면 사용했던 메모리를 즉시 정리합니다. 그런데, 분명 종료된 함수의 변수인데도 사라지지 않고 계속 살아남아 메모리를 차지하는 녀석들이 있습니다.우리는 이것을 클로저(Closure)라고 부릅니다. 도대..