유물 73

<백준(파이썬)> 1068번: 트리

🤖 문제 https://www.acmicpc.net/problem/1068 1068번: 트리 첫째 줄에 트리의 노드의 개수 N이 주어진다. N은 50보다 작거나 같은 자연수이다. 둘째 줄에는 0번 노드부터 N-1번 노드까지, 각 노드의 부모가 주어진다. 만약 부모가 없다면 (루트) -1이 주어진다 www.acmicpc.net 풀이 삭제할 노드를 부모로 가지는 노드를 모두 삭제하고, 이어서 삭제된 노드들을 부모로 가지는 노드들을 삭제하는 과정을 반복하는 방식으로 풀어나갔습니다. 이러한 문제의 접근 방법은 깊이우선탐색(DFS)으로 볼 수 있을 것입니다. 하지만 결과로 '틀렸습니다'가 계속 나오는 바람에 꽤나 헤맸습니다. 조건식을 잘못 작성한 것이 원인이었습니다. 루트만 남는 경우 루트를 리프 노드로 카운트 ..

유물/└ 백준 2022.03.23

<자료구조> 스택

🎯 스택 1. 데이터를 추가하면 맨 마지막 위치에 자리합니다. 2. 삭제를 하면 맨 마지막 위치의 데이터를 삭제합니다(삭제 데이터 반환). 구현 (파이썬) class Node: def __init__(self, item, next): self.item = item self.next = next class Stack: def __init__(self): self.top = None def push(self, item): self.top = Node(item, self.top) def pop(self): if self.top is None: return None node = self.top self.top = self.top.next return node.item def is_empty(self): retu..

유물/알고리즘 2022.03.15

<자료구조> 역순 연결 리스트

🎯 { 역순 연결 리스트 } 연결 리스트 1. 요소들끼리 붙어 있지 않고 서로의 위치정보를 포인터로 가지고 있습니다. 2. 맨 앞의 헤드 요소의 주소만 알 수 있기 때문에 특정요소를 찾기 위해서는 맨 앞에서부터 하나씩 타고 갑니다. 3. 요소를 추가하기가 비교적 쉽습니다(포인터만 수정하면 됨). 배열 1. 요소들끼리 다닥다닥 붙어있습니다 2. 인덱스를 통해서 원하는 요소를 바로 찾을 수 있습니다. 3. 요소를 추가하기가 어렵습니다(요소들의 위치를 하나씩 움직여야 함). 연결리스트 vs 배열 연결 리스트 배열 장점 1. 추가/삭제 빠름 2. 크기가 동적 3. 효율적인 메모리 할당/이용 1. 탐색 시간 빠름 2. 노드당 메모리 적음 3. 캐시 지역성이 좋음 단점 1. 탐색 시간 느림 2. 노드별 메모리 더 ..

유물/알고리즘 2022.03.13

<백준(node.js)> 1978번: 소수 찾기

🤖 문제 https://www.acmicpc.net/problem/1978 1978번: 소수 찾기 첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다. www.acmicpc.net 풀이 const filePath = process.platform === "linux" ? "/dev/stdin" : "../input.txt"; const INPUT_ARR = require("fs").readFileSync(filePath).toString().trim().split("\n"); const Q_ARR = INPUT_ARR[1].split(" ").map(Number); let countPrime = 0; function isPrime(n..

유물/└ 백준 2022.02.22

<백준(node.js)> 10757번: 큰 수 A+B

🤖 문제 https://www.acmicpc.net/problem/10757 10757번: 큰 수 A+B 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. www.acmicpc.net 풀이 const filePath = process.platform === "linux" ? "/dev/stdin" : "../input.txt"; const INPUT_ARR = require("fs").readFileSync(filePath).toString().trim().split(" "); console.log( INPUT_ARR.reduce((pre, cur) => BigInt(pre) + BigInt(cur)).toString() ); 1. (line 5) 주어진 숫자 2개를 BigIn..

유물/└ 백준 2022.02.21

<백준(node.js)> 2839번: 설탕 배달

🤖 문제 https://www.acmicpc.net/problem/2839 2839번: 설탕 배달 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그 www.acmicpc.net 풀이 const filePath = process.platform === "linux" ? "/dev/stdin" : "../input.txt"; const INPUT_N = +require("fs").readFileSync(filePath).toString().trim(); let box5kg; let box3kg; function calcBoxNum(totalKg) { box5kg = Math...

유물/└ 백준 2022.02.20

<백준(node.js)> 2775번: 부녀회장이 될테야

🤖 문제 https://www.acmicpc.net/problem/2775 2775번: 부녀회장이 될테야 첫 번째 줄에 Test case의 수 T가 주어진다. 그리고 각각의 케이스마다 입력으로 첫 번째 줄에 정수 k, 두 번째 줄에 정수 n이 주어진다 www.acmicpc.net 풀이 const filePath = process.platform === "linux" ? "/dev/stdin" : "../input.txt"; const INPUT_ARR = require("fs") .readFileSync(filePath) .toString() .trim() .split("\n"); const CASE_NUM = +INPUT_ARR[0]; const CASE_ARR = INPUT_ARR.slice(1); ..

유물/└ 백준 2022.02.19

<백준(node.js)> 10250번: ACM 호텔

🤖 문제 https://www.acmicpc.net/problem/10250 10250번: ACM 호텔 프로그램은 표준 입력에서 입력 데이터를 받는다. 프로그램의 입력은 T 개의 테스트 데이터로 이루어져 있는데 T 는 입력의 맨 첫 줄에 주어진다. 각 테스트 데이터는 한 행으로서 H, W, N, 세 정수 www.acmicpc.net 풀이 const filePath = process.platform === "linux" ? "/dev/stdin" : "../input.txt"; const INPUT_ARR = require("fs") .readFileSync(filePath) .toString() .trim() .split("\n"); const INPUT_COUNT = +INPUT_ARR[0]; let ..

유물/└ 백준 2022.02.17

<백준(node.js)> 2869번: 달팽이는 올라가고 싶다

🤖 문제 https://www.acmicpc.net/problem/2869 2869번: 달팽이는 올라가고 싶다 첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000) www.acmicpc.net 풀이 const filePath = process.platform === "linux" ? "/dev/stdin" : "../input.txt"; const INPUT_ARR = require("fs") .readFileSync(filePath) .toString() .trim() .split(" "); const A = +INPUT_ARR[0]; const B = +INPUT_ARR[1]; const V = +INPUT_ARR[2]; conso..

유물/└ 백준 2022.02.16

<백준(node.js)> 1193번: 분수찾기

🤖 문제 https://www.acmicpc.net/problem/1193 1193번: 분수찾기 첫째 줄에 X(1 ≤ X ≤ 10,000,000)가 주어진다. www.acmicpc.net 풀이 const filePath = process.platform === "linux" ? "/dev/stdin" : "../input.txt"; const ORDER_NUMBER = +require("fs").readFileSync(filePath).toString().trim(); function findFraction(number) { let numerator; let denominator; let total = 1; let sum; for (let i = 1; ; i++) { if (total >= number)..

유물/└ 백준 2022.02.15