본문 바로가기

JS122

[백준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.
[백준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.
[백준JS] 11005. 진법 변환 2 안녕하세요. 박기린 입니다. 백준 11005번 진법 변환 2 문제를 풀어봅시다. 문제 링크 https://www.acmicpc.net/problem/11005 문제 해석 10진수 숫자 n을 b진수로 바꾸는 방법은 위의 계산 방식을 사용하면 됩니다. 1. n을 b으로 나눈 후, [몫과 나머지]를 구합니다. 2. 나머지는 오른쪽에 두고, 몫을 계속 n으로 나눕니다. 3. 나눗셈을 반복해서 남은 몫이 n보다 작아지면, 남은 몫과 나머지들을 순서대로 적어줍니다. (몫부터 차례대로 적기 - 가장 맨 처음에 나온 나머지 값이 맨 뒤에 위치해야 합니다.) 10 이상 35 이하의 값의 경우, A부터 Z까지 영어를 이용해서 표기하면 됩니다. 정답 코드 const fs = require("fs"); let [n, b] =.. 2023. 4. 4.
[백준JS] 2745. 진법 변환 안녕하세요. 박기린 입니다. 백준 2745번 진법 변환 문제를 풀어봅시다. 문제 링크 https://www.acmicpc.net/problem/2745 문제 해석 입력으로 들어오는 값은 N과 B입니다. B는 진법을 나타내며, 최대 36진법까지 입력을 받습니다. N은 'B진법에 해당하는 수' 입니다. 특정 진법을 10진법으로 바꾸는 방법은 위의 그림과 같습니다. 1. 숫자를 자릿수별로 나눕니다. 2. '해당 자릿수의 순서 - 1'값을 진법의 제곱수로 곱합니다. ( 36진법의 4번째 자릿수이면 36 ** 3 ) 3. 2단계에서 계산한 값을 해당 자릿수에 곱합니다. ( Z는 10진법 기준으로 35를 의미합니다 => 35 * (36 ** 3) ) 4. 그렇게 모든 자릿수를 계산한 후, 전부 더하면 10진법으로 .. 2023. 4. 1.
[백준JS] 2563. 색종이 안녕하세요. 박기린 입니다. 백준 2563번 색종이 문제를 풀어봅시다. 문제 링크 https://www.acmicpc.net/problem/2563 문제 해석 1. 100 x 100 사이즈의 도화지가 주어집니다. 2. 색종이가 여러 장이 주어지는데, 모두 10 x 10 사이즈입니다. 3. 색종이가 서로 겹처서 놓아지는 경우가 존재합니다. 그럴 경우 '색종이가 붙은 검은 영역의 넓이'를 구할 때, 겹치는 부분의 넓이도 고려를 해야 합니다. 이 문제는 100 x 100 사이즈의 2차원 배열을 만든 후, 색종이가 놓일 부분의 인덱스를 구해서, 총 인덱스의 개수를 알면 문제가 쉽게 해결이 됩니다. 정답 코드 const fs = require("fs"); const [amount, ...papers] = fs ... 2023. 3. 31.
[React] 12. CSS 모듈 사용하기 안녕하세요. 박기린 입니다. 이번엔 ReactJS의 스타일링 모듈인 CSS에 대해 알아보겠습니다. css 모듈을 사용하는 이유 모든 React 프로젝트에는 css모듈이 내장되어 있습니다. 기존의 css 파일은 컴포넌트 단위가 아니라 전역 단위로 적용이 되는 탓에 문제가 발생하였고, 이를 해결하기 위해 styled-components라는 외부 모듈을 사용한다고 저번에 소개를 해드렸습니다. 외부 모듈을 설치하는 방법 대신에, React에 내장된 css 모듈을 이용해서 컴포넌트 단위로 스타일링을 할 수 있습니다. css 모듈 사용해보기 import React from "react"; import styles from "./Button.module.css"; const Button = props => { ret.. 2023. 3. 28.
[React] 11. styled-components 사용하기 안녕하세요. 박기린 입니다. 이번엔 ReactJS의 스타일링 모듈인 styled-components에 대해 알아보겠습니다. 공식 사이트 : https://styled-components.com/ styled-components가 필요한 이유 React 프로젝트의 컴포넌트들을 css 파일을 이용해서 스타일링하는 경우, 비록 컴포넌트 파일(js/ts)에서 css 파일을 import해서 사용한다고 해도, 그 css 파일의 스타일을 해당 컴포넌트에만 국한되지 않고 전역으로 적용시킵니다. .form-control { margin: 0.5rem 0; } .form-control label { font-weight: bold; display: block; margin-bottom: 0.5rem; } 예를 들어, 위와.. 2023. 3. 27.