목록Problem Solving/BOJ (24)
가치투자자
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bc38x2/btr8f0rn3Lg/RkRwkRoYCvyaJkx6Yxkkb0/img.png)
백준 1181번 : 단어 정렬 🔗 문제 링크 https://www.acmicpc.net/problem/1181 1181번: 단어 정렬 첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다. www.acmicpc.net 💬 문제 정렬 알고리즘 에 대한 이해가 있다면, 충분히 풀 수 있는 문제다. 1번째 줄에 정렬해야 하는 문자열의 개수 N이 주어진다. 2번째 줄부터 총 N개의 문자열이 주어지며, 이를 배열 arr로 받아준다. 길이가 짧은 것 순으로 정렬하고, 길이가 같을 겨우에는 사전 순으로 정렬한다. 중복된 단어가 있을 경우, 하나만 남겨준다. 💡 입력값 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/esvLFS/btr8hmHGb9q/MI51aIheeB2MCN8jphU6b0/img.png)
백준 2751번 : 수 정렬하기2 🔗 문제 링크 https://www.acmicpc.net/problem/2751 2751번: 수 정렬하기 2 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. www.acmicpc.net 💬 문제 정렬 알고리즘 에 대한 이해가 있다면, 충분히 풀 수 있는 문제다. 1번째 줄에 정렬해야 하는 수의 개수 N이 주어진다. 2번째 줄부터 총 N개의 수가 주어지며, 이를 배열 arr로 받아준다. 배열 arr를 오름차순으로 정렬하여 출력해준다. 💡 입력값 받아오기 JavaScript로 풀 경우, 입력값(input)을 어떻게 받아와야 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cUktIH/btr8f0Zcjfw/TqWl4gYTu716aqBDbM8tUk/img.png)
백준 24060번 : 병합 정렬1 🔗 문제 링크 https://www.acmicpc.net/problem/24060 24060번: 알고리즘 수업 - 병합 정렬 1 첫째 줄에 배열 A의 크기 N(5 ≤ N ≤ 500,000), 저장 횟수 K(1 ≤ K ≤ 108)가 주어진다. 다음 줄에 서로 다른 배열 A의 원소 A1, A2, ..., AN이 주어진다. (1 ≤ Ai ≤ 109) www.acmicpc.net 🎯 풀이를 위한 개념 설명 병합 정렬에 대한 이해가 있어야 풀 수 있는 문제이다. 쉽게 설명을 하자면, 병합 정렬은 입력된 배열을 크기가 1인 부분 배열로 쪼갠 다음, 각 부분 배열의 인덱스 0번째 값을 비교하여 작은 값부터 빈 배열에 넣어 정렬하는 알고리즘이다. 병합 정렬에 대해 더 자세한 설명은 아..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bYLyH9/btr8hm1W6YM/mS6OE0Ockfql7Oh6EM1WX0/img.png)
백준 2164번 : 카드2 🔗 문제 링크 https://www.acmicpc.net/problem/2164 2164번: 카드2 N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가 www.acmicpc.net 💬 문제 큐(queue) 에 대한 이해가 있다면 더 잘 이해할 수 있고, 큐를 몰라도 쉽게 이해할 수 있는 문제이다. 숫자 N이 주어지므로 1부터 N까지 담고 있는 배열을 생성해준다. 맨 위에 있는 수, 즉 배열 첫 번째 요소를 제거(shift)해준다. 그 다음 위에 있는 수를 빼서(shift) 맨 밑으로 옮겨준다(push). 그리고 단 1장의 숫자가 남을..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/dP4wTs/btr8gYfKxFH/VB7tx8sxK4ZiKV2fSiNzk0/img.png)
백준 10773번 : 제로 🔗 문제 링크 https://www.acmicpc.net/problem/10773 10773번: 제로 첫 번째 줄에 정수 K가 주어진다. (1 ≤ K ≤ 100,000) 이후 K개의 줄에 정수가 1개씩 주어진다. 정수는 0에서 1,000,000 사이의 값을 가지며, 정수가 "0" 일 경우에는 가장 최근에 쓴 수를 지우고, 아닐 경 www.acmicpc.net 💬 문제 스택(stack) 에 대한 이해가 있다면, 충분히 풀 수 있는 문제다. 1. 빈 배열인 스택(stack)을 만들어준다. 2. 재현이가 올바른 수를 부를 경우, stack에 그 수를 넣어준다(push). 3. 재현이가 잘못된 수를 부른 다음 0을 말하므로, 0이 나올때마다 stack에서 이전 수를 빼준다(pop). ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/buWsBF/btr1Wx26OXo/RXkuPdOzGVODqsw1MajP9k/img.png)
JS로 백준 푸는 법 1. Node.js fs모듈 사용법 백준에서 JavaScript로 문제를 풀기 위해선 Node.js를 사용해야 하며, 이때 readline 모듈이나 fs 모듈로 입력값(input)을 받아와야 한다. 이 중 속도나 코드의 길이, 작성 편리성에 있어 fs 모듈 이 더 나으므로, fs 모듈로 백준 문제를 풀어보고자 한다. 1) 입력값(input)의 종류에 따른 fs 모듈 사용법 어떤 종류의 입력값을 받냐에 따라 fs 모듈의 코드가 달라진다. (1) 입력값이 하나일 때 const input = require('fs').readFileSync('/dev/stdin').toString().trim(); 예시> 3 (2)입력값 사이에 공백에 끼여있을 때 split(' ') 로 공백을 잘라주면, ..