본문 바로가기

main

JS의 list 함수 끝판왕 reduce와 친해지기 :) 분명 일상이는 나에게 타입 가드에 대해 설명해주고 있었는데갑자기 Math.max 가 number[] 타입이어서 .. 자기가 설정한 타입의 list에 max를 쓰려니 타입이 안되구 어쩌구 저쩌구그러더니 잠깐 , , max를 왜 써? 하고는갑자기 분위기 리듀스! const myMax = Math.max(...scores) as AnswerNumber;max를 쓰면, 내 myMax number[] 가 아니라 AnswerNumber 타입이라는 것을 aliasing 해주어야 했다.scores.reduce((acc, cur) => (acc 그러지 말고 리듀스로 바꿔버리기 .. 오 ..? 그리고 시작된 리듀스와 친해지기 시간 🥲 자 다음 문제를 풀어보시오 ~1. 짝수 원소는 제거한다.2. 모든 원소값을 2배한다.[.. 더보기
무한 if 지옥을 벗어나자 (feat. Map) 위 코드에서 num은 질문의 문항이고, type은 답변의 문항이다. 분명 문제마다 답을 하나씩 선택했을 때 scores에 카운팅을 하는 것은 동일하기 때문에, 코드의 형식은 매번 같으나알고리즘 문제도 아니고 어떤 수치적으로의 패턴이 없는 상황에서이 if 지옥은 아무리 봐도 아닌 것 같은데 .. 근데 어떻게 해야하지 ... 하다가짱고수 개발자에게 자문을 구해보았다. 🤩Map을 만들어서, 문항별 답변에 어떤 스코어의 값을 올려줄 지 기록한다. 값을 올려줄 때 해당 스코어의 값을 Map에서 찾아와서 올려주는 코드는더 이상 중복하지 않고 두 줄로 끝내버린다. (에러 처리는 덤 ..) Map 자체는 계속 길어지지만, (아마 이 Map도 더 스마트하게 할 수 있는 방법이 있겠지)핵심 코드는 간단해졌기에 누가 봐도.. 더보기
구름톤 챌린지 남은 문제들 푼 일기 (JavaScript) 구름톤 챌린지가 끝나고, 구름톤 오프라인 행사에도 참여 했었다.오 그게 벌써 .. 2달 전 ?! 어쨌든, 바쁜 일들 지나고 시간 날 때 그래프 문제 중 못풀었던 문제들을 몰아서 마저 풀었었다.그래프 문제들을 풀다 보니 내가 생각했던 것보다 그래프도 별 것 없잖아? 라고 생각을 조금 했는데아마 기초적인 그래프 문제들을 풀어서 그런 것 같긴 하지만그래프 문제라고 하면 좀 꺼려지고 풀기 싫고 못 풀 것 같고 그런 편견을 살짝 내려놓은 계기가 되었다. 문제 18. 중첩 점 구름LEVEL난이도별 다양한 문제를 해결함으로써 SW 역량을 향상시킬 수 있습니다.level.goorm.ioconst readline = require('readline');let rl = readline.createInterface({ in.. 더보기
구름톤 챌린지 20일차 일기 망했따.. 망했어...끄흑흑ㄱ흐 문제 16. 연합 const readline = require('readline'); let rl = readline.createInterface({ input: process.stdin, output: process.stdout, }); const input = []; rl.on('line', (line) => { input.push(line); }); const l = console.log; rl.on('close', () => { const [n, m] = input[0].split(' ').map(Number); const map = {}; const check = Array.from(Array(n + 1), () => Array(n + 1).fill(0)); co.. 더보기
구름톤 챌린지 17일차 일기 예전에 제대로 못 풀었던 문제들(숙제..)을 몰아서 모두 처리하려고 했는데.. 게임젬이 안 풀린다.(새벽에 겨우 풀었다...) 아...... 그래서 오늘 문제를 아직도 못 풀었다 문제 4. 완벽한 햄버거 만들기 // Run by Node.js const readline = require('readline'); (async () => { let rl = readline.createInterface({ input: process.stdin }); let n; let taste = []; let goodTaste = 0; let goodIndex = 0; let left, right; let result = 0; const main = (taste) => { taste.forEach((el, idx) => {.. 더보기
구름톤 챌린지 15일차 일기 문제 13. 발전기 (2) let input, N, K; const village = []; rl.on('close', () => { const dir = [[1, 0], [-1, 0], [0, 1], [0, -1]] const groups = Array(33).fill(0); const memo = Array.from(Array(Number(N)), () => Array(Number(N)).fill(0)); const BFS = (i, j) => { let cnt = 1; const queue = [[i, j]]; while (queue.length) { const queuePop = queue.shift(); const queueI = queuePop[0] const queueJ = queuePop[.. 더보기
구름톤 챌린지 12일차 일기 문제 11. 통증 (2) let N, input, A, B; rl.on('close', () => { let usedBMod = N % B; let usedBCnt = Math.floor(N / B); let usedACnt; while (usedBCnt !== -1) { if (usedBMod % A === 0) { usedACnt = Math.floor(usedBMod / A) return console.log(usedACnt + usedBCnt) } else { usedBCnt--; usedBMod += B; } } return console.log(-1) }) A 아이템이 항상 B 아이템보다 능력 수치가 낮음, B 값이 크므로 usedBMod 변수에 총 통증 수치에서 B 아이템만을 최대로 사용했을.. 더보기
구름톤 챌린지 10일차 일기 8, 9일차는 풀만했는데 10일차 ... 어려워 .. 다시 풀어봐야 한다. 문제 8. 통증 (async () => { let rl = readline.createInterface({ input: process.stdin }); for await (const line of rl) { let result = 0; const items = [14, 7, 1]; let value = line; for (let i=0; i { const direction = [[0, 0], [-1, 0], [1, 0], [0, -1], [0, 1]]; for (let i=0; i { nextI = bomb[0]-1 + d[0]; nextJ = bomb[1]-1 + d[1]; if (nextI = inpu.. 더보기