저 많은 사람 중에 '나'

    중위표기법 후위표기법 변환

    중위표기법 중위표기법이란 우리가 흔히 쓰는 A + B 와 같이 연산자를 피연산자의 가운데에 표기하는 방법이다. 후위표기법 후위표기법은 컴퓨터가 연산을 처리할때 사용되는 방식인데, 피연산자 다음에 연산자를 표기하는 방식이다. ABC+* 처럼 말이다. 좋은 블로그 글 아래에 내용만으로는 이해가 가지 않을 수 있다. 다음 블로그에서 설명을 굉장히 잘 해놓으셔서 직접 풀어보면서 공부하니 이해가 되었다. 블로그주소 [자료구조] 중위표기식 후위표기식 변환 방법(stack의 응용) 본 글은 C로 배우는 쉬운 자료구조를 참고하였습니다. Todo :컴퓨터가 사용하는 연산 방법인 후위 표기법에 대해서 공부해 보자+_+ 컴퓨터의 연산 처리 방식 후위 표기법 Algorithm 후위 표기식 예시 dev-with-pre..

    [백준/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 옵션의 비밀

    여러분 안녕하세요. 자바스크립트 정규표현식에서 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..

    자바스크립트 queue 구현

    자바스크립트 queue 구현

    우선 전체 코드는 이러하다. class Queue { constructor() { this.elements = {}; this.head = 0; this.tail = 0; } enqueue(element) { this.elements[this.tail] = element; this.tail++; } dequeue() { const item = this.elements[this.head]; delete this.elements[this.head]; this.head++; return item; } peek() { return this.elements[this.head]; } back() { return this.elements[this.tail - 1]; } get length() { return this..

    [백준/JS] 2867 FBI

    FBI 성공다국어 한국어 시간 제한메모리 제한제출정답맞힌 사람정답 비율 0.25 초 (추가 시간 없음) 128 MB 6939 3323 2880 48.298% 문제 5명의 요원 중 FBI 요원을 찾는 프로그램을 작성하시오. FBI요원은 요원의 첩보원명에 FBI가 들어있다. 입력 5개 줄에 요원의 첩보원명이 주어진다. 첩보원명은 알파벳 대문자, 숫자 0~9, 대시 (-)로만 이루어져 있으며, 최대 10글자이다. 출력 첫째 줄에 FBI 요원을 출력한다. 이때, 해당하는 요원이 몇 번째 입력인지를 공백으로 구분하여 출력해야 하며, 오름차순으로 출력해야 한다. 만약 FBI 요원이 없다면 "HE GOT AWAY!"를 출력한다. 이상한 점 이 문제 아무리 생각해도 맞는 거 같은데 계속 틀려서 결국 해답을 봐버렸다. ..

    [백준/JS] 2671 잠수함식별

    [백준/JS] 2671 잠수함식별

    잠수함식별 성공 시간 제한메모리 제한제출정답맞힌 사람정답 비율 1 초 128 MB 5541 2149 1563 39.291% 문제 일반적으로 잠수함 엔진이 작동할 때에 나오는 소리는 잠수함의 종류에 따라서 다르다고 한다. 우리는 물속에서 들리는 소리의 패턴을 듣고서 그 소리가 특정한 잠수함에서 나오는 소리인지 아닌지를 알아내려고 한다. 이 문제에서는 잠수함의 소리가 두 종류의 단위 소리의 연속으로 이루어져 있고, 그 단위 소리를 각각 0과 1로 표시한다. 또, 한 특정한 소리의 반복은 ~로 표시한다. 예를 들어 x~는 x가 한번 이상 반복되는 모든 소리의 집합을 말하고, (xyz)~는 괄호 안에 있는 xyz로 표현된 소리가 한번 이상 반복되는 모든 소리의 집합을 말한다. 다음의 예를 보라. 1~ = {1,..

    [백준/JS] 1264 모음의 개수

    [백준/JS] 1264 모음의 개수

    문제링크 1264번: 모음의 개수 입력은 여러 개의 테스트 케이스로 이루어져 있으며, 각 줄마다 영어 대소문자, ',', '.', '!', '?', 공백으로 이루어진 문장이 주어진다. 각 줄은 최대 255글자로 이루어져 있다. 입력의 끝에는 한 줄 www.acmicpc.net 배운점 i - 대소문자 구분안함 정규표현식 match - 해당 문자열을 모두 찾아서 배열로 나타내어줌. 문제풀이 const fs = require("fs"); BOJkey = true; var input = fs .readFileSync(BOJkey ? "./자바스크립트로/1264/input.txt" : "./dev/stdin") .toString() .trim() .split("\n"); let regex = new RegExp(..

    [백준/JS] 1543 문서검색

    문제링크 배운점 동적변수로 정규표현식을 만들때 백틱을 사용하여 다음과 같이 정규식을 만들어주면 된다. const strr = input[1]; let regex = new RegExp(`${strr}`, "g"); let a = input[0].match(regex); 문제풀이 try catch를 사용한 이유는 정규표현식으로 걸러지는 문자가 없는경우에 length 메소드를 사용하면 에러가 발생한다. 따라서 catch문 이 동작할때에는 0을 출력한다. const fs = require("fs"); BOJkey = 1; var input = fs .readFileSync(BOJkey ? "./자바스크립트로/1543/input.txt" : "./dev/stdin") .toString() .trim() .spl..