
https://www.acmicpc.net/problem/1260 1260번: DFS와 BFS 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사 www.acmicpc.net 🤔 해결방법 1. N, M, V를 입력받고 그래프 생성 2. 시작 정점 V를 기준으로 DFS와 BFS 수행 3. 방문한 정점들을 result에 저장하고 출력 🔑 풀이 DFS와 BFS은 개념은 알지만 막상 문제에 적용하려면 어렵게 느껴져 제대로 푼 적이 많이 없었다.😥 그래서 이 문제를 풀어보며 DFS와 BFS에 대해 더 자세히 공부해봤다. DFS든 BFS든 일..
https://www.acmicpc.net/problem/10610 10610번: 30 어느 날, 미르코는 우연히 길거리에서 양수 N을 보았다. 미르코는 30이란 수를 존경하기 때문에, 그는 길거리에서 찾은 수에 포함된 숫자들을 섞어 30의 배수가 되는 가장 큰 수를 만들고 싶어한 www.acmicpc.net 🤔 해결방법 1. 0이 들어있지 않거나 모든 자리수의 합이 3의 배수가 아니면 -1을 출력한다. 2. 그렇지 않으면 숫자를 내림차순으로 정렬하여 출력한다. 🔑 풀이 const input = require("fs") .readFileSync("/dev/stdin") .toString() .trim() .split("\n"); const number = input[0]; const numberSplit..
https://www.acmicpc.net/problem/3273 3273번: 두 수의 합 n개의 서로 다른 양의 정수 a1, a2, ..., an으로 이루어진 수열이 있다. ai의 값은 1보다 크거나 같고, 1000000보다 작거나 같은 자연수이다. 자연수 x가 주어졌을 때, ai + aj = x (1 ≤ i < j ≤ n)을 만족하는 www.acmicpc.net 🤔 해결방법 1. 가지고 있는 숫자의 중복을 제거한다. 2. 만들어야 할 숫자에서 뺀 값이 들어있고 같은 숫자를 두 번 사용하지 않는 경우에만 answer+1을 한다. 🔑 풀이 const input = require("fs") .readFileSync("/dev/stdin") .toString() .trim() .split("\n"); con..

https://www.acmicpc.net/problem/10816 10816번: 숫자 카드 2 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10,0 www.acmicpc.net 🤔 해결방법 1. 상근이가 가지고 있는 숫자들을 haveNumber에, 몇 개 가지고 있는지 체크할 숫자를 checkNumber에 넣는다. 2. haveNumber의 숫자 각각의 개수를 object 객체에 담는데 이미 있으면 value+1, 없으면 1을 value로 넣는다. 3. checkNumber에 담긴 숫자가 object에 있으면 그 개수를, 없으면 0을 ..
https://www.acmicpc.net/problem/2606 2606번: 바이러스 첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하인 양의 정수이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍 www.acmicpc.net 🤔 해결방법 1. queue를 이용한 BFS 2. 처음 1번 컴퓨터를 큐에 추가하고 infected에 넣는다. 3. while 루프는 queue 배열이 비어있지 않을 때까지 반복하는데 각 반복에서 shift()를 사용해 queue 배열의 가장 앞에 있는 컴퓨터 번호를 가져오고 이것을 현재 탐색 중인 컴퓨터 current로 한다. 4. current를 infected에 추가하고 current와 연결된 컴..

https://www.acmicpc.net/problem/2875 2875번: 대회 or 인턴 첫째 줄에 N, M, K가 순서대로 주어진다. (0 ≤ M ≤ 100, 0 ≤ N ≤ 100, 0 ≤ K ≤ M+N), www.acmicpc.net 🤔 해결방법 1. 팀을 만들기 위해서는 최소한 2명의 여학생과 1명의 남학생이 필요하므로 여학생 수가 2명 미만 또는 남학생 수가 1명 미만인 경우는 0 return. 2. 여학생 수가 2명 이상, 남학생 수가 1명 이상, 남녀 학생 수의 합-3이 인턴 수보다 많은 경우엔 여학생을 2명씩, 남학생을 1명씩 감소시키고 team은 1씩 증가시킨다. 🔑 풀이 function solution(n, m, k) { let team = 0; //여학생 수가 2명 미만 또는 남학..