[백준/JS] 16719 ZOAC
문제링크 16719번: ZOAC 2018년 12월, 처음 시작하게 된 ZOAC의 오프닝을 맡은 성우는 누구보다 화려하게 ZOAC를 알리려 한다. 앞 글자부터 하나씩 보여주는 방식은 너무 식상하다고 생각한 성우는 문자열을 보여주는 새로 www.acmicpc.net 배운점 이 문제 정말 맞왜틀 정말 왜 안돌아가는지.. 결국 원인을 찾아냈다. 코드를 보면 let idx 가 dfs 함수안에 선언된 것을 알 수 있다. 이게 밖에 선언이 되어있어서 전역변수 역할을 하게 되면서 slice 되는 인덱스가 계속 바뀌게 되는 치명적인 오류가 발생했다. 아.. 그래도 결국 고쳐서 다행이다. 또한 자바스크립트에서 배열을 복사할때에는 스프레드 연산자를 사용하여 깊은 복사를 해주는 것을 잊지 않아야한다. const dfs = (..
[백준/Python] 2075번 N번째 큰수
문제링크 2075번: N번째 큰 수 첫째 줄에 N(1 ≤ N ≤ 1,500)이 주어진다. 다음 N개의 줄에는 각 줄마다 N개의 수가 주어진다. 표에 적힌 수는 -10억보다 크거나 같고, 10억보다 작거나 같은 정수이다. www.acmicpc.net 문제이해 이 문제 도대체 무슨 소리를 하는거지? 문제를 이해를 하지 못했다. 나는 바보다. 문제예시를 보면 5 x 5 의 input이 들어오는데 이 수들 중에서 5번째로 큰 수를 출력하면된다. 52 - 49 - 48 - 41 - 35 순이므로 35를 출력하면 되는 것이다. 오답 처음에 모든 값을 최대힙에 넣어서 5번째 값을 출력하는 방식을 사용했는데, 메모리초과가 났다. 메모리 초과가 나올 것을 노리고 다른방법으로 풀기 원하는 문제였다. import sys i..
[백준/Python] 21939 문제 추천 시스템 Version 1
문제링크 21939번: 문제 추천 시스템 Version 1 tony9402는 최근 깃헙에 코딩테스트 대비 문제를 직접 뽑아서 "문제 번호, 난이도"로 정리해놨다. 깃헙을 이용하여 공부하시는 분들을 위해 새로운 기능을 추가해보려고 한다. 만들려고 하는 명령 www.acmicpc.net 배운점 1시간 정도 사소한 조건을 만족하지 못해 허비했다. 짜증이 난다. 그래도 배운게 많은 문제이다. 이 문제의 조건에서 recommend 1 이 입력되게 되면 가장 어려운 난이도의 문제 번호를 출력하게 되는데 나는 문제에 나와 있지도 않는데 힙의 최상위 원소를 출력하면 되는데 heappop을 시켰다. 머리를 한대 때렸다. 파이썬에서 최대힙을 구현하는 과정에서 -1 을 곱해서 넣어주게된다. 나는 처음에는 (-1 * 문제 난..
[백준/JS] 4358 생태학
문제링크 4358번: 생태학 프로그램은 여러 줄로 이루어져 있으며, 한 줄에 하나의 나무 종 이름이 주어진다. 어떤 종 이름도 30글자를 넘지 않으며, 입력에는 최대 10,000개의 종이 주어지고 최대 1,000,000그루의 나무가 주어 www.acmicpc.net 배운점 Map의 value값에 +1 을 해주기 위해서는 다시 set을 사용하여야합니다. 알고 있었지만 뭔가 낯설어서 메모합니다. for (let i = 0; i < input.length; i++) { if (dic.get(input[i])) { //상기시킨점 dic.set(input[i], dic.get(input[i]) + 1); } else { dic.set(input[i], 1); } } Map의 크기를 알아내기위해서는 size 라는 ..
[백준/Python] 7662 우선순위 큐
문제링크 7662번: 이중 우선순위 큐 입력 데이터는 표준입력을 사용한다. 입력은 T개의 테스트 데이터로 구성된다. 입력의 첫 번째 줄에는 입력 데이터의 수를 나타내는 정수 T가 주어진다. 각 테스트 데이터의 첫째 줄에는 Q에 적 www.acmicpc.net 문제풀이 참고한 블로그 https://imzzan.tistory.com/31 [백준][Python] 7662번 이중 우선순위 큐 7662번: 이중 우선순위 큐 입력 데이터는 표준입력을 사용한다. 입력은 T개의 테스트 데이터로 구성된다. 입력의 첫 번째 줄에는 입력 데이터의 수를 나타내는 정수 T가 주어진다. 각 테스트 데이 imzzan.tistory.com 우선순위 큐는 heap으로 구현이 가능합니다. 파이썬에서 내장 모듈인 heapq로 heap을 ..
[백준/JS] 14425 문자열집합
문제링크 14425번: 문자열 집합 첫째 줄에 문자열의 개수 N과 M (1 ≤ N ≤ 10,000, 1 ≤ M ≤ 10,000)이 주어진다. 다음 N개의 줄에는 집합 S에 포함되어 있는 문자열들이 주어진다. 다음 M개의 줄에는 검사해야 하는 문자열들이 주어 www.acmicpc.net 문제풀이 단순히 Map() 만 사용해서 풀 수 있는 문제였습니다. const fs = require("fs"); BOJkey = 1; let input = fs .readFileSync(BOJkey ? "./자바스크립트로/14425/input.txt" : "./dev/stdin") .toString() .trim() .split("\n"); let number = input[0].split(" ").map((v) => +v..
[백준/JS] 2493 탑
문제링크 2493번: 탑 첫째 줄에 탑의 수를 나타내는 정수 N이 주어진다. N은 1 이상 500,000 이하이다. 둘째 줄에는 N개의 탑들의 높이가 직선상에 놓인 순서대로 하나의 빈칸을 사이에 두고 주어진다. 탑들의 높이는 1 www.acmicpc.net 문제풀이 문제풀이는 다음 블로그 글을 참고하였다. https://jjangsungwon.tistory.com/44 [ 백준 2493 ] 탑 - Python 문제 보기 이 문제는 Stack 문제이다. 처음에는 완전 탐색 방식으로 구현하였는데, 역시나 시간 초과가 발생하였다. 예제로 주어진 6, 9, 5, 7, 4를 오른쪽부터 읽는 것이 아니라 왼쪽부터 읽는 방법 jjangsungwon.tistory.com 이분의 아이디어를 사용했고, 나의 로직과 조금 ..
[백준/JS] 1966 프린터큐
문제링크 1966번: 프린터 큐 여러분도 알다시피 여러분의 프린터 기기는 여러분이 인쇄하고자 하는 문서를 인쇄 명령을 받은 ‘순서대로’, 즉 먼저 요청된 것을 먼저 인쇄한다. 여러 개의 문서가 쌓인다면 Queue 자료구조에 www.acmicpc.net 문제풀이 주요한 아이디어는 [인덱스, 우선순위] 이렇게 배열의 형태로 큐에 집어 넣은것이다. (사실 배열로 만들어서 큐라고 할 수없지만..) const fs = require("fs"); BOJkey = 0; let input = fs .readFileSync(BOJkey ? "./자바스크립트로/1966/input.txt" : "./dev/stdin") .toString() .trim() .split("\n"); let testCaseNumber = inp..
[백준/JS] 10799 쇠막대기
문제링크 10799번: 쇠막대기 여러 개의 쇠막대기를 레이저로 절단하려고 한다. 효율적인 작업을 위해서 쇠막대기를 아래에서 위로 겹쳐 놓고, 레이저를 위에서 수직으로 발사하여 쇠막대기들을 자른다. 쇠막대기와 레이저 www.acmicpc.net 문제풀이 설명을 어떻게 해야할지.. 이 문제를 왜 스택으로 접근했냐하면, 괄호를 보기만 하면 스택으로 생각하게 되네요. 열린괄호는 쇠 막대기가 들어옴을 의미한다. 그래서 count++ 한다. 그리고 stack에 저장한다. 레이저를 만나면 쇠막대기가 등분된다. 이때 현재 stack의 length가 막대기의 갯수를 의미한다. 예를 들어 3개가 들어있을 경우 레이저를 만난다면 6개로 나누어진다! 그러므로 막대기의 갯수를 += 해주면 된다. 여기서 나는 razerCheck..
[백준/JS] 1935 후위표기식2
문제링크 1935번: 후위 표기식2 첫째 줄에 피연산자의 개수(1 ≤ N ≤ 26) 가 주어진다. 그리고 둘째 줄에는 후위 표기식이 주어진다. (여기서 피연산자는 A~Z의 영대문자이며, A부터 순서대로 N개의 영대문자만이 사용되며, 길이 www.acmicpc.net 아스키코드 자바스크립트에서 아스키코드 값을 알아내기 위해서는 charCodeAt 메소드를 사용한다. s="AB" s.charCodeAt(i) 그렇다면 아스키코드 값을 문자열로 변경할때는 어떻게 할까? 다음과 같이 fromCharCode 메소드를 사용한다. String.fromCharCode(아스키코드 변수) 소수점 자리수 정해주기 소숫점을 정해주기 위해서는 toFixed() 메소드를 사용한다. toFixed(2) = 둘째자리까지 를 의미한다...