본문 바로가기

반응형

공부

(105)
[TIL] 24.07.08 내가 푼 문제 📖내가 작성한 코드 💻let [buy, ...input] = require("fs") .readFileSync(process.platform === "linux" ? "/dev/stdin" : __dirname+"/input.txt") .toString() .trim() .split('\n')const N = +buyconst cardPacks = input[0].split(' ').map(Number)const memo = Array.from({length: N + 1}, () => 0)for(let i=1; i 어려웠던 점 ❓1. 최댓값 비교하기for(let i=1; i 최댓값 비교하는 부분이 생각해 내기가 정말로 어려웠다. 1시간을 넘게 고민해 봤지만 해결방법이 떠오르질 않..
동적계획법(Dynamic Programming) DP란?다이나믹 프로그래밍(DP)은 하나의 큰 문제를 여러 개의 작은 문제로 나누고, 그 결과를 저장하여 다시 큰 문제를 해결할 때 사용하는 알고리즘 기법입니다. DP는 주로 최적화 문제에 사용되며, 문제를 해결하기 위한 계산량을 줄이는데 매우 유용합니다.  DP를 사용하는 이유?일반적인 재귀(Native Recursion) 방식 또한 DP와 유사합니다. 그러나 큰 차이점은 재귀를 사용 시 동일한 작은 문제들이 여러 번 반복되어 비효율적입니다. ex) 피보나치 수열피보나치수열은 각 항이 그 앞에 두 항의 합인 수열입니다. 예를 들어, 피보나치수열의 첫 10개 항은 0, 1, 1, 2, 3, 5, 8, 13...  피보나치 수를 구할 때 재귀로 구성하게 되면 f(n) = f(n-1) + f(n-2)가 됩니..
[TIL] 24.06.17 백준 1373번 js 내가 푼 문제 📖 내가 작성한 코드 💻let input = require("fs") .readFileSync(process.platform === "linux" ? "/dev/stdin" : __dirname+"/input.txt") .toString() .trim() .split('')let results = ''while(input.length){ let ocl = input.splice(-3).join('') if(ocl.length !== 3) ocl = ocl.padStart(3, '0') results += parseInt(ocl, 2).toString(8)}console.log(results.split('').reverse().join('')) 어려웠던 점 ❓1. 기존 변환 ..
[TIL] 24.06.12 백준 1676번 js 내가 푼 문제 📖 내가 작성한 코드 💻const input = require("fs") .readFileSync(process.platform === "linux" ? "/dev/stdin" : __dirname+"/input.txt") .toString() .trim()let cnt = 0;for(let i=1; i 어려웠던 점 ❓1. 팩토리얼 범위const factorial = (n) => { if(n == 0) return 0; if(n == 1) return 1; return n * factorial(n-1)} 팩토리얼로 값을 구하고 뒤에서부터 0의 개수를 세는 방법을 생각하고 계산을 했었는데 주어진 N값의 범위가 (0~500) 22 팩토리얼만 돼도 값이 (1.124000727777..
[TIL] 24.06.11 백준 6588번 js 내가 푼 문제 📖 내가 작성한 코드 💻const input = require("fs") .readFileSync(process.platform === "linux" ? "/dev/stdin" : __dirname+"/input.txt") .toString() .trim() .split('\n') .map(Number)const size = input.pop();const numbers = Array(1000000).fill(true); const sosu = [];numbers[0] = falsenumbers[1] = falsefor(let j=2; j { const low = sosu.find(su => numbers[num - su]) if(low){ let high = num ..
[TIL] 24.06.10 React 트랙을 신청한 이유 1.  내가 React 트랙에 참여한 계기는 무엇인가요? 혼자서도 충분히 할 수 있다 판단이 들어 컴퓨터공학을 졸업하고 백엔드 친구 1명이랑 개인 프로젝트를 진행한 경험이 있습니다! 백엔드와 협업을 해볼 수 있어서 좋은 경험이었지만 프로젝트를 진행하면서 학습의 고통보단 무엇을 학습해야 하는지 모르는 고통이 좀 더 컸던 것 같습니다. 그리고 내가 작성한 코드가 과연 잘 작성된 코드인가? 확장성이 있는 코드인가? 에 대한 의문이 계속 들었지만 서로 작성한 코드에 대한 피드백을 해줄 수 없었기 때문에 이 또한 힘들었습니다. 그래서 확장성을 고려한 개발, 코드리뷰, 팀프로젝트 경험을 더 쌓기 위해서 React 트랙에 참여하게 되었습니다.2. 내가 이해한 개발자는 어떤 역할을 하는 사람인가요?사용자가 보면 모든 ..
브라우저 동작 원리 브라우저란사용자가 웹 페이지를 탐색하고 상호작용할 수 있도록 하는 소프트웨어우리가 보는 웹 페이지는 서버에서 준비해 두었던 것을 "받아서"브라우저에게 전달해 "그려주는" 역할을 수행합니다!  주소창에 naver.com을 입력하면 일어나는 일1. URL 주소를 DNS 서버에서 검색해 도메인 네임에 해당하는 IP 주소를 찾아 사용자가 입력한 URL 정보와 함께 전달합니다.2. 브라우저는 HTTP 프로토콜을 이용해 요청 메세지를 생성하고 HTTP 요청 메시지는 TCP/IP 프로토콜을 사용해 서버에 전송송됩니다.3. 서버는 response 메세지를 생성해 다시 브라우저에게 데이터를 전송합니다.4. 브라우저는 response를 받아 파싱 하여 화면에 렌더링 합니다. 렌더링 과정 브라우저 렌더링은 HTML, CSS..
[TIL] 24.06.03 백준 10820번 JS 내가 푼 문제 📖 내가 작성한 코드 💻let input = require("fs") .readFileSync(process.platform === "linux" ? "/dev/stdin" : __dirname+"/input.txt") .toString() .split('\n')let results = '';for(let i=0; i  어려웠던 점 ❓ 예제는 문제없이 결과가 나왔지만 정답만 제출하면 이상하게 계속 틀리는 문제가 발생했다.어디서 틀린 건지 감이 전혀 오질 않아서 결국 검색을 통해 정답을 찾아봐야 했다. 정답 실패 이유!? 찾아본 결과 이 한줄이 문제였던 것이었다!!if(input[i] === '') continue;  빈 공백을 확인하지 않고 넘어간 것이 문제였던 것이다! 깨달은 점..