본문 바로가기

JS/백준25

[백준/nodeJS] 11375. 열혈강호 (이분매칭 문제) 안녕하세요. 박기린입니다. 백준 11375번 열혈강호 문제 풀어보겠습니다. 문제 링크 https://www.acmicpc.net/problem/11375 11375번: 열혈강호 강호네 회사에는 직원이 N명이 있고, 해야할 일이 M개가 있다. 직원은 1번부터 N번까지 번호가 매겨져 있고, 일은 1번부터 M번까지 번호가 매겨져 있다. 각 직원은 한 개의 일만 할 수 있고, 각각 www.acmicpc.net 문제 해석 이 문제는 이분 매칭에 대해서만 알면 쉽게 풀 수 있습니다. 이분 매칭에 대한 설명을 다른 분이 너무 쉽게 잘 적어주셔서, 링크를 적어놓겠습니다. 링크 : https://blog.naver.com/kks227/220807541506 이분 매칭(Bipartite Matching) 이번에 올릴 글은.. 2024. 3. 24.
[백준/nodeJS] 14935. FA 안녕하세요. 박기린입니다. 백준 14935번 FA 문제 풀어보겠습니다. 문제 링크 https://www.acmicpc.net/problem/14935 문제 해석 결론부터 말씀드리자면, 모든 수는 FA수입니다. 10만자리의 수일지라도, 'x의 첫 자리'와 'x의 자리수'를 곱한 결과는 아무리 커봐야 9 * 9 = 81 입니다. 그리고 81은 결국 F(x)에 의해 8로 전환되고, F(8)은 8 * 1 = 8이 되어, 동일한 수가 나옵니다. 즉, FA수가 됩니다. 정답 코드 & 해설 console.log("FA"); 모든 수가 FA수이기 때문에, 입력과 상관없이 FA만 출력해주면 끝입니다. 2024. 2. 29.
[백준/nodeJS] 1016. 제곱 ㄴㄴ 수 안녕하세요. 박기린입니다. 백준 1016번 제곱ㄴㄴ수 문제 풀어보겠습니다. 문제 링크 https://www.acmicpc.net/problem/1016 문제 해석 '제곱ㄴㄴ수'가 무엇일까요? 위 메모처럼, n의 제곱으로 나눴을 때 나머지가 없는 수를 제곱ㅇㅇ수라고 표현하고, 그 반대를 제곱ㄴㄴ수라고 문제에서 표현합니다. 정답 코드 const fs = require("fs"); const [min, max] = fs .readFileSync("/dev/stdin") .toString() .trim() .split(" ") .map(Number); const isDivided = Array(1000001).fill(false); // max와 min 사이에 들어가는 최대 수, ㄴㄴ제곱이 아닌 수가 true... 2024. 1. 26.
[백준/nodeJS] 2740. 행렬 곱셈 안녕하세요. 박기린입니다. 백준 2740번 행렬 곱셈 문제 풀어보겠습니다. 문제 링크 https://www.acmicpc.net/problem/2740 문제 해석 행렬 곱셈에 대해 사전 지식이 있다면 쉽게 폴 수 있습니다. 하지만 그렇지 못한 분도 있기에 간단하게 설명해보겠습니다. 문제에서 예시 입력으로 주어진 두 개의 행렬입니다. [3 * 2] 와 [2 * 3]으로 이루어진 행렬이고, N은 3, M은, K는 3입니다. 행렬의 크기는 N * K로 구할 수 있기 때문에, [3 * 3]임을 미리 알고 시작합니다. N과 K가 1일 때의 값을 구해보겠습니다. 이때 행렬 곱셈 방법은 이러합니다. 1. 첫 번째 행렬에서 N이 1인 행을 찾습니다. 2. 두 번째 행렬에서 K가 1인 열을 찾습니다. 3. 행일 경우 맨.. 2023. 12. 29.
[백준/nodeJS] 28279. 덱 2 안녕하세요. 박기린 입니다. 백준 28279번 덱 2 문제를 풀어보겠습니다. 문제 링크 https://www.acmicpc.net/problem/28279 28279번: 덱 2 첫째 줄에 명령의 수 N이 주어진다. (1 ≤ N ≤ 1,000,000) 둘째 줄부터 N개 줄에 명령이 하나씩 주어진다. 출력을 요구하는 명령은 하나 이상 주어진다. www.acmicpc.net 문제 해석 덱(deque)을 구현하는 것이 목표입니다. front, rear의 초기값은 -1입니다. -1은 덱 안에 아무것도 없다는 의미를 가집니다. JS의 pop, shift, push, unshift 메소드를 사용하는 방법도 있지만, 시간초과가 됩니다. 그렇기에 front와 rear의 주소를 이용하는 방식으로 코드를 짜야 합니다. 값이.. 2023. 12. 21.
[백준/JS] 12789. 도키도키 간식드리미 안녕하세요. 박기린 입니다. 백준 12789번 도키도키 간식드리미 문제를 풀어보겠습니다. 문제 링크 https://www.acmicpc.net/problem/12789 12789번: 도키도키 간식드리미 인하대학교 학생회에서는 중간, 기말고사 때마다 시험 공부에 지친 학우들을 위해 간식을 나눠주는 간식 드리미 행사를 실시한다. 승환이는 시험 기간이 될 때마다 간식을 받을 생각에 두근두 www.acmicpc.net 문제 해석 Input 배열 : 백준 문제에서 준 입력값을 담은 배열. 큐 구조를 이용할 예정입니다. Stack 배열 : 임시로 줄 선 사람을 옮겨둘 수 있는 공간 cur : 간식을 받을 차례 위 3가지를 먼저 염두에 둡니다. 가장 먼저 1번 순서가 받을 차례이기 때문에 cur을 1로 설정합니다. .. 2023. 12. 7.
[백준/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.
[백준/JS] 2738. 행렬 덧셈 안녕하세요. 박기린 입니다. 백준 2738번 행렬 덧셈 문제를 풀어보겠습니다. 문제 링크 https://www.acmicpc.net/problem/2738 문제 해석 예제 입력 3 3 1 1 1 2 2 2 0 1 0 3 3 3 4 4 4 5 5 100 입력이 위처럼 주어집니다. 첫 번째 줄이 행렬의 크기 n과 m의 값이 적혀 있습니다. (N * M) 그 다음 줄부터는 두 개의 행렬이 적혀 있습니다. 위의 예제 입력을 n * m에 따라 두 개의 행렬로 나누어서 본다면, 이와 같은 두 개의 2차원 배열로 구분해서 볼 수 있습니다. 이 두 행렬의 같은 위치에 있는 원소들을 합해서, 새로운 하나의 행렬을 만든 후 출력해주는 것이 문제의 목표입니다. 정답 코드 const fs = require("fs"); con.. 2023. 11. 23.
[백준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.