목록전체 글 (775)
치춘짱베리굿나이스
오늘의 날짜는? 문제 2018 SCAL-MOOKJA에 출전하기로 한 무근이와 인서는 대회 준비를 위해 같이 모여 문제를 풀기로 했다. 그런데 어느 날, 일어나서 날짜를 확인해 보니 무근이와 인서의 시계가 서로 다른 날짜를 가리키고 있었다. 두 사람이 정확한 날짜에 모일 수 있도록 문제를 푸는 지금 시각이 UTC+0(세계 표준시)을 기준으로 무슨 날짜인지 출력해 주는 프로그램을 작성하자. 만약 서울에서 확인한 시각이 2018년 9월 29일 오후 2시 정각이라면 UTC+0 기준의 시각은 2018년 9월 29일 오전 5시 정각이다. Fri Sep 29 05:00:00 UTC 2018 입력 이 문제는 입력이 없다. 출력 지금 시각을 UTC+0(세계 표준시)을 기준으로 나타냈을 때의 연도, 월, 일을 한 줄에 하..
새로운 시작 문제 부산일과학고등학교는 태어난지 얼마 안 된 킹-갓 과학고등학교다. 우리들을 위해 응원의 한마디를 출력하자. 입력 입력은 없다. 출력 파이팅!!을 출력한다. 풀이 const newStart = () => { console.log("파이팅!!"); }; newStart();
팩토리얼 0의 개수 문제 N!에서 뒤에서부터 처음 0이 아닌 숫자가 나올 때까지 0의 개수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 N이 주어진다. (0 ≤ N ≤ 500) 출력 첫째 줄에 구한 0의 개수를 출력한다. 풀이 const factorial = () => { let n = Number(require("fs").readFileSync("/dev/stdin").toString().trim()); let ans = 0; for (let i = 1; i

useClickOutside 모달을 라이브러리를 쓰지 않고 직접 구현하면서 (react-portal을 사용하였다) 모달 바깥을 클릭했을 때 모달이 닫히도록 구현을 하고 싶었다 유용한 훅을 많이 포함하고 있는 패키지인 react-use를 설치하여 useClickAway 훅을 이용하면 한번에 해결되겠지만, 지금 프로젝트에서 react-use가 설치되어 있지 않기도 했고 (이거 하나 때문에 설치하기도 애매하고) 생각보다 구현이 어렵지 않아 훅을 직접 제작해 보았다 코드 import { useEffect, useRef } from 'react'; const useClickOutside = onClicKOutside => { const ref = useRef(null); const handleClickOutsid..

코드 리팩토링하기 짧막한 내생각 긴 프리온보딩 기간이 끝나고 오랜만에 기존에 하던 프로젝트들에 복귀하였다 (몇개없지만…) 프리온보딩 기간동안 나름 성장해서 그런지 내가 작성한 코드를 슬쩍 봐도 아… 이건좀… 싶은 요소들이 많이 보였다… 마침 프로젝트 전체 리팩토링 및 배포 준비 과정에 들어가 내 코드를 리팩토링하였음 기능은 이전과 똑같이 동작하나 몹쓸 코드들만 개편한 것에 가깝다 합의한 사항들 폴더 구조 src/components └── pages └── Mypage ├── assets // folder ├── components // folder ├── constants.js ├── hooks // folder ├── index.jsx ├── styles // folder └── utils // fol..
나는야 포켓몬 마스터 이다솜 문제 … 오박사 : 그럼 다솜아 이제 진정한 포켓몬 마스터가 되기 위해 도감을 완성시키도록 하여라. 일단 네가 현재 가지고 있는 포켓몬 도감에서 포켓몬의 이름을 보면 포켓몬의 번호를 말하거나, 포켓몬의 번호를 보면 포켓몬의 이름을 말하는 연습을 하도록 하여라. 나의 시험을 통과하면, 내가 새로 만든 도감을 주도록 하겠네. 입력 첫째 줄에는 도감에 수록되어 있는 포켓몬의 개수 N이랑 내가 맞춰야 하는 문제의 개수 M이 주어져. N과 M은 1보다 크거나 같고, 100,000보다 작거나 같은 자연수인데, 자연수가 뭔지는 알지? 모르면 물어봐도 괜찮아. 나는 언제든지 질문에 답해줄 준비가 되어있어. 둘째 줄부터 N개의 줄에 포켓몬의 번호가 1번인 포켓몬부터 N번에 해당하는 포켓몬까지..
조합 문제 nCm을 출력한다. 입력 n과 m이 주어진다. (5 ≤ n ≤ 100, 5 ≤ m ≤ 100, m ≤ n) 출력 nCm을 출력한다. 풀이 const comb = () => { const [n, m] = require("fs") .readFileSync("/dev/stdin") .toString() .trim() .split(" ") .map(Number); const dp = Array.from({ length: n + 1 }, (v) => BigInt(0)); dp[1] = BigInt(1); for (let i = 2; i
빈도 정렬 문제 위대한 해커 창영이는 모든 암호를 깨는 방법을 발견했다. 그 방법은 빈도를 조사하는 것이다. 창영이는 말할 수 없는 방법을 이용해서 현우가 강산이에게 보내는 메시지를 획득했다. 이 메시지는 숫자 N개로 이루어진 수열이고, 숫자는 모두 C보다 작거나 같다. 창영이는 이 숫자를 자주 등장하는 빈도순대로 정렬하려고 한다. 만약, 수열의 두 수 X와 Y가 있을 때, X가 Y보다 수열에서 많이 등장하는 경우에는 X가 Y보다 앞에 있어야 한다. 만약, 등장하는 횟수가 같다면, 먼저 나온 것이 앞에 있어야 한다. 이렇게 정렬하는 방법을 빈도 정렬이라고 한다. 수열이 주어졌을 때, 빈도 정렬을 하는 프로그램을 작성하시오. 입력 첫째 줄에 메시지의 길이 N과 C가 주어진다. (1 ≤ N ≤ 1,000, ..