목록코딩테스트/백준 (33)
seunghyun Note
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/zJ3QW/btsFyO6FeMw/nLUOOdHEtS6HHyBK9ceKe1/img.png)
링크 : https://www.acmicpc.net/problem/1181 1181번: 단어 정렬 첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다. www.acmicpc.net 문제 풀이 1. Set을 통한 배열 중복 제거 arr = [...new Set(arr)]; 2. sort를 할 때 길이가 같을 때, 다를 때 구분 arr.sort((a, b) => { if (a.length !== b.length) return a.length - b.length; return a > b ? 1 : -1; }); const input = ( process.pla..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/NdKFP/btsFkXa41gU/QNtPt3C4qoGGlluQRPRAo0/img.png)
링크 : https://www.acmicpc.net/problem/11279 11279번: 최대 힙 첫째 줄에 연산의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 자연수라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0 www.acmicpc.net 문제 풀이 힙을 복습해보자! 2024.02.23 - [코딩테스트/코테를 위한 알고리즘 & 자료구조 정리] - Binary Heaps with JS Binary Heaps with JS 단일 연결 리스트 이중 연결 리스트 스택 & 큐 (배열로 하는 방법은 숙지했음! linked list로 구현해 보기) 이진 검색 트리 트리 순회 (bfs,dfs) 이진 힙 해시 테이블..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bgQh9W/btsEJavj8jx/BMJWYHkYN8NmoPOiuEkMWk/img.png)
링크 : https://www.acmicpc.net/problem/1991 1991번: 트리 순회 첫째 줄에는 이진 트리의 노드의 개수 N(1 ≤ N ≤ 26)이 주어진다. 둘째 줄부터 N개의 줄에 걸쳐 각 노드와 그의 왼쪽 자식 노드, 오른쪽 자식 노드가 주어진다. 노드의 이름은 A부터 차례대로 알파 www.acmicpc.net 문제 풀이 이진 트리를 입력받아 전위 순회(preorder traversal), 중위 순회(inorder traversal), 후위 순회(postorder traversal)한 결과를 출력하는 프로그램을 작성하시오. 아직 트리에 대한 이해도가 많이 부족한 거 같다. 굳이 class를 만들어서 풀 필요가 없었다. 또한 순회에 대한 재귀가 아직 이해가 되지 않아 아래의 링크를 참고..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/dWOcJe/btsDWRqRD8m/RgsiLvebXC4tEkiSrWLb21/img.png)
링크 : https://www.acmicpc.net/problem/1316 1316번: 그룹 단어 체커 그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때 www.acmicpc.net 문제 풀이 1. 입력 숫자(n) 만큼 배열 순회 for (let i = 0; i < n; i++) { sum += isGroup(arr[i]); } 2.isGroup 함수 function isGroup(str) { let compressed = ""; for (let i = 0; i < str.length; i++) { let currentChar = st..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/c29M9p/btsDWRRIOnN/lLUw1Ifr4GKvgnhW7Rk8O0/img.png)
링크 : https://www.acmicpc.net/problem/28279 28279번: 덱 2 첫째 줄에 명령의 수 N이 주어진다. (1 ≤ N ≤ 1,000,000) 둘째 줄부터 N개 줄에 명령이 하나씩 주어진다. 출력을 요구하는 명령은 하나 이상 주어진다. www.acmicpc.net 문제 풀이 스택, 큐 공부를 하면서 linked list로 구현하는 것이 재미있어서 풀었지만... 런타임 에러, 시간초과 반복이었다. 런타임 에러와 틀렸습니다 는 말 그대로 코드를 틀린 상황이었고 시간 초과가 문제였다. 또한 JS로 풀었던 자료가 별로 없어서 힘들었다.. Linked List로 풀기 (실패 - 시간 초과) const fs = require("fs"); //const input = fs.readFile..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bEA7zs/btsDTws3Od4/YNpDMsVg5ZyeNQocTqeEI0/img.png)
링크 : https://www.acmicpc.net/problem/11866 11866번: 요세푸스 문제 0 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 1,000) www.acmicpc.net 문제 풀이 링크드리스트 공부를 하다가 이 문제를 보니 또 링크드리스트로 풀어야 하나..? 생각이 들었지만 아니었다. 배열을 사용해서 풀 수도 있다. cnt를 넣어주고 cnt가 같을 때 ans에 Push, 아니면 arr에 push 해서 저장할 곳을 두 곳에 둔다. const filePath = process.platform === "linux" ? "/dev/stdin" : "예제.txt"; let [N, K] = require("fs").readFileSync(filePa..