전체 글

배우고 성찰한 것을 기록하는 블로그입니다.
코테 문제 풀이

[Node.js] 구름톤 챌린지 2주 Day3 풀이 (통증)

문제 통증을 각각 14, 7, 1 만큼 줄여줄 진통제가 각각 존재한다. 통증이 주어졌을 때, 모든 통증을 줄여줄 수 있는 최소한의 진통제 사용량을 찾아서 리턴하라 코드 const readline = require('readline'); let rl = readline.createInterface({ input: process.stdin, output: process.stdout, }); let pain = 0; rl.on('line', (line) => { pain = parseInt(line) }).on('close', () => { let answer = 0 for (let i of [14, 7, 1]) { answer += Math.floor(pain / i) pain = pain % i } con..

코테 문제 풀이

[Node.js] 구름톤 챌린지 2주 Day2 풀이 (구름 찾기 깃발)

문제 N과 K, N x N 행렬이 주어진다. N은 행렬의 좌우 길이이고, K는 찾고자 하는 특정 숫자이다. N x N 행렬에는 구름이 무작위로 생성된다. 구름은 1로 표시되고, 구름이 없으면 0으로 표시된다. 행렬의 각 요소를 모두 순회하되, 구름이 없는 행렬의 상하좌우, 대각선 8칸에 구름이 몇개 있는지를 체크하여 주변 구름 갯수가 K개와 같다면 카운트를 1 증가시킨다. 최종적으로 카운트를 리턴한다. 코드 const readline = require('readline'); let rl = readline.createInterface({ input: process.stdin, output: process.stdout, }); let input = []; rl.on('line', (line) => { in..

코테 문제 풀이

[Node.js] 구름톤 챌린지 2주 Day1 풀이

문제명 : 문자열 나누기 문제 길이가 N인 문자열 S가 주어진다. 문자열 S를 서로 겹치지 않는 3개의 부분 문자열로 나눠야 한다. 부분 문자열은 모두 길이가 1 이상이어야 하고, 원래 문자열에서 연속해야 한다. 문자열을 나누는 방법에 따라 플레이어는 점수를 얻을 수 있다. 점수 계산 방법은 아래와 같다. 문자열 S를 위 조건에 따라 3개의 부분문자열로 나눴을 때 등장하는 모든 부분 문자열을 중복제거하고 사전순으로 정렬한 결과를 P라고 하자. 나누어진 3개의 문자열이 각각 P에서 i, j, k번째로 등장하는 문자열이라면 얻을 수 있는 점수는 i + j + k 이다. abcd라는 문자열을 3개의 부분문자열로 나누는 방법은 {a, b, cd}, {a, bc, d}, {a, b, cd} 가 있다. 위의 원소들..

코테 문제 풀이

[Node.js] 구름톤 챌린지 1주 Day5 풀이

문제명 : 이진수 정렬 문제 N개의 10진수 정수가 배열로 주어진다. 이 정수를 2진수로 나타내고, 1의 갯수를 기준으로 내림차순 정렬한다. 1의 개수가 같다면 원래 10진수를 기준으로 내림차순 정렬한다. 입력 첫째 줄에 정수의 수 N이 주어지고, 찾으려는 정수의 위치 K가 공백을 두고 주어진다. 둘째 줄에 정수 a1, a2, ..., an이 공백을 두고 주어진다. 제약조건 입출력 예시1 입력 8 6 1 2 3 4 5 6 7 8 출력 4 풀이 const readline = require('readline'); let rl = readline.createInterface({ input: process.stdin, output: process.stdout, }); let input = []; rl.on('l..

코테 문제 풀이

[Node.js] 구름톤 챌린지 1주 Day3 풀이

문제명 : 합 계산기 문제 여러개의 계산식을 입력받은 뒤, 각각의 계산 결과를 모두 합해서 출력하는 기능을 만들어라. 합 계산식에 입력할 수 있는 계산식은 아래 조건을 만족한다. 계산식은 정수, 연산기호, 정수 형태이다. 연산기호는 더하기, 빼기, 곱하기, 나누기 네 가지 사칙 연산 기호가 들어갈 수 있다. 이 때 나눗셈 결과의 나머지는 버린다. 입력 첫째 줄에 식의 갯수 T가 주어진다. 다음 T개의 줄에는 계산식이 주어진다. 제약조건 입출력 예시1 입력 3 1 + 3 4 / 3 3 - 2 출력 6 풀이 const readline = require('readline'); let rl = readline.createInterface({ input: process.stdin, output: process.s..

코테 문제 풀이

[백준 12789] 도키도키 간식드리미 (Node.js) - 스택, 큐

문제 링크 https://www.acmicpc.net/problem/12789 12789번: 도키도키 간식드리미 인하대학교 학생회에서는 중간, 기말고사 때마다 시험 공부에 지친 학우들을 위해 간식을 나눠주는 간식 드리미 행사를 실시한다. 승환이는 시험 기간이 될 때마다 간식을 받을 생각에 두근두 www.acmicpc.net 답안 const fs = require("fs"); const filePath = process.platform === "linux" ? "/dev/stdin" : "text.txt"; const newLine = process.platform === "linux" ? "\n" : "\r\n"; let [max, line] = fs.readFileSync(filePath).toStri..

코테 문제 풀이

[Node.js] 구름톤 챌린지 1주 Day2 풀이

문제명 : 프로젝트 매니징 문제 프로젝트를 완수하기 위해서는 N개의 기능이 추가로 개발되어야 한다. 각 기능에는 1번부터 N번까지 번호가 붙어있고, i번째 기능을 개발하는데는 ci 분의 시간이 걸린다. 플레이어가 작업을 시작한 시각은 T시 M분이다. 한 기능을 끝마치면 바로 다음 기능의 개발을 시작한다. 모든 기능 개발을 끝마친 시각을 구하라. 입력 첫째 줄에 필요한 기능의 갯수 N이 주어진다. 둘째 줄에 두 정수 T, M이 공백을 두고 주어지며, 이는 현재 시각이 T시 M분임을 의미한다. 다음 N개의 줄에는 정수 ci가 주어진다. i번째 기능을 개발하는데는 ci분의 시간이 걸린다. 제약조건 입출력 예시1 입력 3 10 10 50 22 23 출력 11 45 예시2 입력 4 23 40 1000 1000 8..

Typescript

catch문의 error 타입이 any 또는 unknown여야 하는 이유

Catch clause variable type annotation must be 'any' or 'unknown' if specified. 캐치문의 error 타입은 왜 any와 unknown이어야 하는 걸까? 개발하다가 아래와 같은 타입 에러를 만났다. 왜 캐치문의 에러는 any, unknown이어야 하는 걸까? https://stackoverflow.com/questions/69021040/why-catch-clause-variable-type-annotation-must-be-any Why Catch clause variable type annotation must be any? I'm using yup to validate a form, and I encountered this type erro..

개발 일지

(express, front) 회원가입 로직 개발 (이메일 인증, 중복 체크 등)

개발 목적 만들고 있는 프로젝트에 회원가입 로직을 추가하기 위함. 인증이나 유효성 검증 등에 다소 민감한 회원가입 이라는 로직을 백과 프론트에서 직접 구현해보면서 구현 역량을 늘리고, 에러를 경험해보기 위함. 회원가입 로직 개발 (백엔드) 회원가입한 유저의 데이터를 보관하기 위해 User 모델을 다시 설계했습니다. User 모델 구성 User 모델(users 테이블) id : 테이블 내 유일성 보장. 기본키, 암호화 loginId : 유저가 로그인할 때 사용하는 id. 문자열. not null, unique password : 로그인 시 사용하는 password. 암호화, not null (개인정보 보호법에 의해 반드시 암호화해야함) email : 가입할때 사용하는 이메일. 문자열, email 유효성 검..

개발 일지

Context와 Redux의 리렌더링에 관한 고찰

면접관님께 컨텍스트와 리덕스의 차이에 대한 질문을 받았는데요. 프론트엔드 개발자라면 당연히 자신있게 말씀드려야 하는 부분임에도 불구하고, 어중간하게 알고 있는 점 + 긴장한 탓으로 횡설수설하게 되었습니다. 같은 실수를 반복하지 않도록 컨텍스트와 리덕스의 차이에 대해 추가적인 공부를 했고, 그것에 대한 고찰을 게시글로 남깁니다. (좋은 질문을 주신 면접관님께 너무 감사드립니다!) 리렌더링 리액트는 기본적으로 state가 변경되면 리렌더링이 일어납니다. 리렌더링이 일어나면 내부에 있는 중첩된 컴포넌트들도 재호출 될 것입니다. 따라서 상위 컴포넌트의 state가 변경되면 하위 컴포넌트들의 연쇄적인 리렌더링이 야기됩니다. 컨텍스트(Context) 컨텍스트의 사용 용도는 별도의 문맥(Context)을 만들어 그 ..

2DC
2DC