본문 바로가기

js97

[백준/JS] 20920. 영단어 암기는 괴로워 안녕하세요. 박기린 입니다. 백준 20920번 영단어 암기는 괴로워 문제를 풀어보겠습니다. 문제 링크 https://www.acmicpc.net/problem/20920 20920번: 영단어 암기는 괴로워 첫째 줄에는 영어 지문에 나오는 단어의 개수 $N$과 외울 단어의 길이 기준이 되는 $M$이 공백으로 구분되어 주어진다. ($1 \leq N \leq 100\,000$, $1 \leq M \leq 10$) 둘째 줄부터 $N+1$번째 줄까지 외울 단 www.acmicpc.net 문제 해석 주어진 단어들의 출현 빈도수를 체크합니다. 만약 단어의 길이가 M보다 짧을 경우, 지워버립니다. 예제에서는 M이 4였기 때문에, 글자수가 3개인 ant는 제외됩니다. 출현 빈도수가 높은 순서대로 정렬을 합니다. 출현 빈.. 2023. 12. 2.
[React] 13. useEffect() 사용법 총정리 안녕하세요. 박기린 입니다. 이번엔 React Hooks 중 하나인 useEffect()에 대해 알아보겠습니다. Effect(Side Effect)란 무엇일까? useEffect()를 알기 위해선, Effect가 무엇인지를 먼저 알아야 합니다. 여기서 Effect는 Side Effect와 동일한 의미를 지닙니다. React의 주요한 임무는 UI 렌더링입니다. 유저가 키보드를 누르든 클릭을 하든, 입력에 반응하여 필요할 때 UI를 다시 렌더링합니다. React의 역할 - state, props를 관리한다. - state와 props를 기반으로 JSX와 DOM을 평가하고, UI를 렌더링한다. - 유저의 입력을 실시간으로 확인한다. 이러한 React의 역할들은 '화면에 무언가를 가져오는 것(Bringing s.. 2023. 7. 20.
[백준JS] 16139. 인간-컴퓨터 상호작용 안녕하세요. 박기린 입니다. 백준 16139번 인간-컴퓨터 상호작용 문제를 풀어봅시다. 문제 링크 https://www.acmicpc.net/problem/16139 문제 해석 giraffe라는 글자와 [i 0 3]이라는 질문이 주어졌다고 가정합니다. giraffe 문자열 중, 0번째부터 3번째까지의 글자 중에 i가 있는지 검사합니다. i가 하나 있으므로, 1을 출력하면 정답입니다. 하지만, 매번 일일이 for문으로 모든 질문을 검사하게 된다면, 200,000자의 문자와 200,000개의 문제를 견뎌내기 힘들 것입니다. 그래서 누적합 방식을 사용합니다. 위처럼 f에 대한 질문이 여러 개 있을 경우, 미리 f의 갯수를 세어놓은 데이터를 만들어서, f 질문 때마다 뽑아쓰면 효율적일 것입니다. DP라는 {ke.. 2023. 6. 26.
[백준JS] 1037. 약수 안녕하세요. 박기린 입니다. 백준 1037번 약수 문제를 풀어봅시다. 문제 링크 https://www.acmicpc.net/problem/1037 문제 해석 본문의 예제를 인용해서 설명하겠습니다. 예제의 답인 24의 약수는 위와 같습니다. 이 중 '1'과 '답이 되는 약수'를 제외한 수들이 입력으로 주어집니다. 그리고 이 값들을 이용해서 '24'라는 답을 도출해내면 됩니다. 이 문제를 쉽고 빠르게 해결하는 방법으로, 하나의 간단한 수학 지식을 알면 됩니다. 약수의 양끝 수들을 곱해주면 정답이 나옵니다. 이런 식으로 말이죠. 문제에서 받은 입력값은 '1'과 '정답이 되는 수'가 제외된 상태로 주어집니다. 반대로 말하자면, 이 입력값들의 최대값과 최소값을 곱하면 정답이 나옵니다. 정답 코드 const fs .. 2023. 4. 25.
[백준JS] 13909. 창문 닫기 안녕하세요. 박기린 입니다. 백준 13909번 창문 닫기 문제를 풀어봅시다. 문제 링크 https://www.acmicpc.net/problem/13909 문제 해석 const fs = require("fs"); const input = +fs.readFileSync("/dev/stdin").toString().trim(); const windows = Array(input + 1).fill(false); const execute = (n) => { for (let i = 1; n * i 제곱근의 정수 부분 입력값의 제곱근의 정수 부분이 답이었습니다. 원리는 무엇일까요? n번째 창문이 열려 있으려면, 그 창문을 열고 닫은 횟수가 홀수번이어야 합니다. 그럴려면 n의 약수의 갯수가 3개여야 합니다. n = .. 2023. 4. 19.
[백준JS] 2485. 가로수 안녕하세요. 박기린 입니다. 백준 2485번 가로수 문제를 풀어봅시다. 문제 링크 https://www.acmicpc.net/problem/2485 문제 해석 1, 3, 7, 13에 가로수가 놓여 있다고 가정을 합니다. 문제의 목표는, 보기로 주어진 일정하게 놓이지 않은 가로수 사이에 최소한의 가로수를 놓아서 일정한 거리를 두게 끔 만드는 것입니다. 방법은 정말 간단합니다. 각 가로수 간의 거리를 구한 후, 그 거리들의 최대공약수를 구하면 됩니다. 최대공약수의 거리가 되게 끔 가로수를 사이에 넣어주면, 최소한의 가로수를 놓아서 일정한 거리를 두게 만들 수 있습니다. 가로수가 놓이는 갯수는 두 가로수 사이에 추가되는 가로수 갯수 = 두 가로수 사이의 거리 / 최대공약수 - 1 입니다. 3과 7 사이에는 4.. 2023. 4. 18.
[백준JS] 1735. 분수 합 안녕하세요. 박기린 입니다. 백준 1735번 분수 합 문제를 풀어봅시다. 문제 링크 https://www.acmicpc.net/problem/1735 문제 해석 최대공약수를 구하면 기약분수를 바로 구할 수 있습니다. 두 분수를 더한 다음, 분모와 분자의 최대 공약수를 구하고, 분모와 분자를 각각 최대공약수로 나눠주면 기약분수가 됩니다. 최대공약수는 유클리드 호제법으로 구하면 됩니다. // 유클리드 호제법으로 최대공약수를 구하는 식 const gcd = (x, y) => { if (y == 0) return x; else return gcd(y, x % y); }; 정답 코드 const fs = require("fs"); const [moles, denoms] = fs .readFileSync("/dev/.. 2023. 4. 16.
[리디저널 제작기] 5. 크롬 웹 스토어에 올릴 아이콘 디자인 만들기 안녕하세요. 박기린 입니다. 본 글은 [ 리디북스의 독서노트 글귀를 복사하는 크롬 확장프로그램 : RIDI-Journals ]의 제작 과정을 적어놓은 글입니다. 필요한 아이콘의 포맷 Icons should generally be in PNG format, because PNG has the best support for transparency. They can, however, be in any format supported by WebKit, including BMP, GIF, ICO, and JPEG. 공식 크롬 확장프로그램 API 문서의 글입니다. PNG 확장자(포맷)의 이미지 파일을 아이콘으로 사용하는 것을 적극 권장한다고 나와있습니다. BMP, GIF, ICO, JPEG도 가능은 하지만, 웬만하.. 2023. 4. 11.
[백준JS] 2903. 중앙 이동 알고리즘 안녕하세요. 박기린 입니다. 백준 2903번 중앙 이동 알고리즘 문제를 풀어봅시다. 문제 링크 https://www.acmicpc.net/problem/2903 문제 해석 주어진 도형이 정사각형이기 때문에 아래와 같은 식이 성립합니다. 한 줄의 사각형의 갯수 = 2 ** n 한 줄의 꼭짓점의 갯수 = 한 줄의 사각형의 갯수 + 1 = 2 ** n + 1 -------------------------------------------- 총 꼭짓점의 갯수 = 한 줄의 꼭짓점의 갯수 ** 2 = (2 ** n + 1) ** 2 정답 코드 const fs = require("fs"); const input = +fs.readFileSync("/dev/stdin").toString().trim(); const re.. 2023. 4. 10.