[백준/JS] 2800 괄호제거
문제링크 2800번: 괄호 제거 첫째 줄에 음이 아닌 정수로 이루어진 수식이 주어진다. 이 수식은 괄호가 올바르게 쳐져있다. 숫자, '+', '*', '-', '/', '(', ')'로만 이루어져 있다. 수식의 길이는 최대 200이고, 괄호 쌍은 적어도 1개 www.acmicpc.net 문제풀이 제게 너무 힘든문제였습니다. 참고한 블로그입니다. 조눅's 괴발개발 [백준] 괄호 제거 문제링크 괄호 제거 시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율 1 초 128 MB 2016 680 499 33.512% 문제 어떤 수식이 주어졌을 때, 괄호를 제거해서 나올 수 있는 서로 다른 식의 개수를 계산 guard1000.github.io 인간디버거의로그찍기 BOJ - 괄호 제거 2800번 (python) ..
자바스크립트 in 연산자
참고자료 이글은 제로초님의 유튜브영상을 보고 정리한 글입니다. in 연산자 여러분은 in 연산자를 자바스크립트를 사용할때 어떻게 사용하시나요? 저는 위 질문을 들었을때 for in 문이 딱 생각이 났습니다. const h = {hello: "cat", hi: "zerocho", 1: 3, true: false}; for (const k in h) { console.log(k); } // 1 // hello // hi // true if 안에도 in을 사용할 수 있는데요. 다음 처럼 말이죠. 제가 사용할 수 있는 것에는 객체의 키값이 존재하는지 아닌지 정도일 것 같네요. 파이썬의 if in 문과 비슷한 것 같습니다. 파이썬은 string도 if in을 쓸수 있지만요. 자바스크립트에서는 includes를 사..
자바스크립트 중괄호 괄호의 기능
참고자료 이글은 제로초님의 유튜브영상을 보고 정리한 글입니다. 중괄호{ }의 기능 다음 코드를 보겠습니다. 어떤 숫자가 콘솔에 찍히게 될까요? let b = "5"; { let b = "3"; } console.log(b); 답은 5 입니다. 간단한 스코프(Scope) 개념인데요. { } 중괄호안에서 선언된 b는 중괄호 스코프(Scope)안에서 존재하기 때문입니다. 여기서 배운 것은 if, for, function, while 이 가지는 scope 뿐만아니라, 그냥 { } 중괄호만 있어도 스코프를 가질 수 있다라는 것입니다. if(){ } for(){ } function() { } while() { } { } 괄호( ) 의 기능 여러분은 함수를 즉시 실행시키고 싶으실때는 어떻게 하시나요? 이미 질문속에 ..
[백준/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) = 둘째자리까지 를 의미한다...
[백준/JS] 1874 스택 수열
문제링크 1874번: 스택 수열 1부터 n까지에 수에 대해 차례로 [push, push, push, push, pop, pop, push, push, pop, push, push, pop, pop, pop, pop, pop] 연산을 수행하면 수열 [4, 3, 6, 8, 7, 5, 2, 1]을 얻을 수 있다. www.acmicpc.net 문제풀이 const fs = require("fs"); BOJkey = true; let input = fs .readFileSync(BOJkey ? "./자바스크립트로/1874/input.txt" : "./dev/stdin") .toString() .trim() .split("\n"); let result = []; let n = input[0]; let stack = ..
[백준/JS] 1185 요세푸스 문제
문제링크 1158번: 요세푸스 문제 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 5,000) www.acmicpc.net 문제사항 요세푸스문제 클래스 큐를 구현해서 풀고 있는데 , 메모리초과가 계속 나네요. 그런데 이유를 정말 모르겠습니다. 로직은 환형큐를 사용해서 K번째가 아닌 수는 큐에 다시 넣어주는 방식으로 구현했습니다. N이 7이고 K가 3일때 [1, 2, 3, 4, 5, 6, 7] -> [3, 4, 5, 6, 7, 1, 2] => 3 삭제 [4, 5, 6, 7, 1, 2] -> [6, 7, 1, 2, 4, 5] => 6 삭제 [7, 1, 2, 4, 5] -> [2, 4, 5, 7, 1] => 2 삭제 [4, 5, 7, 1] -> [7, 1, 4, 5] =..
자바스크립트 정규표현식 g 옵션의 비밀
여러분 안녕하세요. 자바스크립트 정규표현식에서 g 옵션에는 비밀이 숨겨져있다는 것 아시나요? 저는 이 비밀을 알아내기 위해 머리가 깨져버렸답니다. 도저히 모르겠어서 백준에 질문을 드려봤습니다. 그랬더니 어떤분께서 엄청 자세하게 답변을 달아주셨습니다. 정말 감사합니다. 앞으로의 글은 문제답변내용을 공부한 것 입니다. 문제답변 글 읽기 - 자바스크립트 정규표현식 질문입니다. 댓글을 작성하려면 로그인해야 합니다. www.acmicpc.net RegExp에서의 lastIndex란 틀린 원인을 알기 위해 먼저 RegExp(정규 표현식 객체) 의 lastIndex 속성을 알아봅시다. lastIndex 속성은 정규 표현식에서 매칭을 어디까지 했는지를 저장하기 위한 속성이며, 초기 값은 0입니다. 정규 표현식에 전역 ..
[백준/JS] 10845 큐
문제링크 10845번: 큐 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 방금 자바스크립트로 큐를 구현하는 것을 공부했는데 적용하기 위해서 문제를 풀어봐야겠다. 애먹었던점 아무리 생각해도 돌아가야되는 코드인데 돌아가지가 않았다. split 할때 trim을 우선으로 해주었더니 가능했다.아마 빈 공백이 섞여있었나보다. let arr = input[i].trim().split(" "); 문제풀이 class Queue { constructor() { this.elements = {}; this.head = 0; thi..