본문 바로가기

분류 전체보기

(177)
[2주차 WIL] 2022.11.21 ~ 2022.1126 회고 이번주에는 월 ~ 목 알고리즘 문제풀이를 진행했고, 금~토에는 주특기 주차를 시작하였다. 또, 정규 과정과는 별도로, 언어 스터디도 함께 시작하였다. 한 주간 배운 것들을 회고해 본다. 알고리즘 문제풀이 우선, 알고리즘 문제풀이를 통해 JS의 다양한 내장 함수를 경험해 볼 수 있었다. 또, 상급 문제를 풀수록, 문제를 풀어 나가는 다양한 알고리즘과 자료구조에 대한 공부가 필요하다는 것을 많이 느꼈다. 왠지, 항해가 끝나도 취업까지 쉽지 않겠다는 생각도 많이 들었다. (알고리즘과 면접준비를 또 그만큼 많이 해야 할것 같다..) [2021121] 알고리즘 문제풀이 [2주차][20221122] 알고리즘 문제 풀이 [2주차] [20221123] 화살표 함수의 this binding [2주차] [20221124]..
[3주차] [20221127] for, for in, for of 오늘은 for in과 for of의 차이에 대해 알아보았고, for문이 있는데 왜 등장했는지도 간접적으로 알아보았다. 깔끔하게 잘 정리되어 있는 자료를 찾지 못해서 MDN에 나와있는 내용을 기반으로 대략 정리했다. 우선, for..in이 언제부터 추가되었는지는 잘 모르겠지만, for..of문은 ES6부터 추가되었다. ES6에서는 새로운 Symbol primitive가 추가되었고, 이를 대응하기 위해서 for..of문이 추가된 것이다. 이 외에도 ES6로 넘어오면서 지금 우리가 편하게 쓰는 대부분의 JS 기능이 추가되었는데, 대표적으로 let, const, template literal, Map, Promise, Class 등이 있다. JavaScript가 어떻게 만들어졌고, 변해왔는지는 아래 유튜브에 재..
[3주차][20221125] 동기, 비동기 vs 블로킹, 논블록킹 Intro Node.js는 무엇인지? Node.js는 크롬 V8 JavaScript엔진으로 빌드된 JS의 런타임으로, 브라우저에서만 작동이 가능했던 JS를 브라우저 없이도 작동하도록 만든 환경이다. Node.js는 논블로킹(non-blocking) I/O, 싱글 스레드(single thread), 이벤트 루프(event loop)의 특성이 있다. 비동기 언어의 대표주자인 JavaScript에 논블로킹(non-blocking) 특성을 가진 Node.js가 만나 여러가지 일을 한번에 처리할 수 있는 유연한 프로그래밍이 가능해진거다. 그렇지만, Node.js가 논블로킹 특성을 가지고 있음에도 불구하고, 싱글 스레드(single thread)를 사용한다. 싱글 스레드의 장점 스레드 생성 부하 및 스래드 유지에 ..
[36번] [상] 키패드 누르기 (미완) 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 아직 해결 못함!!! 이 문제는 참으로 고난이도다..ㅠㅠ 처음에 어떻게 접근할지도 생각이 나지를 않아서, 경로를 찾는 알고리즘을 찾다가, DFS, BFS 개념을 들여다 봤고, 그러다 키패드 자료구조를 짜야 탐색도 가능하기에 이진 트리 -> 이중연결 트리 - > 그래프 -> 가중 그래프 -> 다익스트라 알고리즘 이렇게 엄청나게 빠르게 훑었다. 우선, 그래프 자료구조를 만들고, 그래프 DFS (재귀 사용) 방법 비스므리하게 구현을 했는데, 결국 전체 테스트를 통과하지는 못했다. 이미 너무 지쳐서 다시 코드를 보지..
[35번] [상] [1차] 비밀지도 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 이 문제는 꽤나 재미있게 풀었다. 퍼즐 푸는 것 같아서 재미있었던 문제! 나의 풀이 * 35.비밀지도 *정수 배열의 각 원소 x를 이진수로 변환했을 때의 길이는 n 이하이다. 즉, 0 ≦ x ≦ 2n - 1을 만족한다. [pseudo code] 1. 0 ~ n 사이를 도는 루프 생성 arr1과 arr2를 각각 a1, a2 배열로 받는데, 이때 각 원소를 2진법으로 변환한 뒤, 한자리씩 string으로 만들어 배열에 넣어주고, 그 배열을 뒤집기 a1과 a2.의 길이가 n이 될때까지 "0"을 푸쉬 (arr1[0]..
[33번] [중상] 체육복 (미완) 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 이 문제는 아직 극복을 못했다!!! 아래는 여러 시도를 통해 풀이를 해보려고 시도한 흔적들... * 체육복 (탐욕법) * 체육복 여벌이 있는 학생은 본인 번호의 +/- 1 번호의 학생에게만 빌려줄 수 있으므로, +/-reserve[i] 번호가 lost 배열에 있는지 확인하고, 있으면 n-lost.length 값에 +1 해주기 * linear search이므로, sort를 먼저 해줌 [pseudo code] => 배열 루프 충첩 + 반복이 너무 많은것 같아 폐기하고 아래로 넘어감 1. result =[] 생성 ..
[34번][중상] 폰켓몬 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 나의 풀이 * 폰켓몬 * 총 폰켓몬 수 / 2 = nums.length / 2 * 총 폰켓몬 종류 = Math.max([...nums]) or new Set(nums).length or sort(a-b)[.length-1] * 가질 수 있는 최대 폰켓몬 수 = nums.length/2 or Math.max([...nums]) function solution(nums) { let pos = nums.length / 2; let types = new Set(nums).size; return pos >= types..
[32번][중상] 실패율 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 나의 풀이 * 실패율 = 스테이지에 도달했으나 아직 클리어하지 못한 플레이어의 수 / 스테이지에 도달한 플레이어 수 * N = 전체 스테이지의 개수 * stages.length = 전체 사용자 수 * stages[i] = 사용자가 멈춰 있는 스테이지 * 실패율이 높은 스테이지부터 내림차순으로 스테이지의 번호가 담겨있는 배열을 리턴 * ex) [2, 1, 2, 6, 2, 4, 3, 3] => [3, 4, 2, 1, 5] * stage 3 = 도달,클리어x 2 / 도달 4 ([3,3]/[3,3,4,6]) -> 실..