전체 글

전체 글

    [백준] 10799번: 쇠막대기 (JavaScript, NodeJS)

    문제 여러 개의 쇠막대기를 레이저로 절단하려고 한다. 효율적인 작업을 위해서 쇠막대기를 아래에서 위로 겹쳐 놓고, 레이저를 위에서 수직으로 발사하여 쇠막대기들을 자른다. 쇠막대기와 레이저의 배치는 다음 조건을 만족한다. 쇠막대기는 자신보다 긴 쇠막대기 위에만 놓일 수 있다. - 쇠막대기를 다른 쇠막대기 위에 놓는 경우 완전히 포함되도록 놓되, 끝점은 겹치지 않도록 놓는다. 각 쇠막대기를 자르는 레이저는 적어도 하나 존재한다. 레이저는 어떤 쇠막대기의 양 끝점과도 겹치지 않는다. 아래 그림은 위 조건을 만족하는 예를 보여준다. 수평으로 그려진 굵은 실선은 쇠막대기이고, 점은 레이저의 위치, 수직으로 그려진 점선 화살표는 레이저의 발사 방향이다. 이러한 레이저와 쇠막대기의 배치는 다음과 같이 괄호를 이용하여..

    [개발지식] 웹 서버와 웹 애플리케이션 서버의 차이, 정확히 알고 계신가요?

    들어가며 서버라는 것은 요청이 들어오면 그에 대한 응답을 해준다 라는 것은 알고 있지만 보통 프로젝트를 진행하면서 WAS에 서버 코드를 올렸었는데 WAS가 무엇인지도 정확히 모르면서 사용을 하고 있었던 것... 웹 애플리케이션 서버(WAS)가 있고 웹 서버(WS)도 있다는데 둘의 차이점과 둘의 정확한 의미를 알고 싶었습니다. 웹 서버(Web Server), 웹 애플리케이션 서버(Web Application Server) 우선 웹 서버라는 것은 무엇일까요 우리가 브라우저에 접속해서 www.google.com을 치면 어떻게 될까요? 구글의 서버에 HTTP 통신으로 구글 서버에 있는 컴포넌트 파일(컴포넌트 파일에는 HTML 문서, images, CSS stylesheets, 그리고 JavaScript file..

    [백준] 1935번: 후위 표기식2 (JavaScript, NodeJS)

    문제 후위 표기식과 각 피연산자에 대응하는 값들이 주어져 있을 때, 그 식을 계산하는 프로그램을 작성하시오. 입력 첫째 줄에 피연산자의 개수(1 ≤ N ≤ 26) 가 주어진다. 그리고 둘째 줄에는 후위 표기식이 주어진다. (여기서 피연산자는 A~Z의 영대문자이며, A부터 순서대로 N개의 영대문자만이 사용되며, 길이는 100을 넘지 않는다) 그리고 셋째 줄부터 N+2번째 줄까지는 각 피연산자에 대응하는 값이 주어진다. 3번째 줄에는 A에 해당하는 값, 4번째 줄에는 B에 해당하는값 , 5번째 줄에는 C ...이 주어진다, 그리고 피연산자에 대응 하는 값은 100보다 작거나 같은 자연수이다. 후위 표기식을 앞에서부터 계산했을 때, 식의 결과와 중간 결과가 -20억보다 크거나 같고, 20억보다 작거나 같은 입..

    [백준] 1874번: 스택 수열 (JavaScript, NodeJS)

    문제 스택 (stack)은 기본적인 자료구조 중 하나로, 컴퓨터 프로그램을 작성할 때 자주 이용되는 개념이다. 스택은 자료를 넣는 (push) 입구와 자료를 뽑는 (pop) 입구가 같아 제일 나중에 들어간 자료가 제일 먼저 나오는 (LIFO, Last in First out) 특성을 가지고 있다. 1부터 n까지의 수를 스택에 넣었다가 뽑아 늘어놓음으로써, 하나의 수열을 만들 수 있다. 이때, 스택에 push하는 순서는 반드시 오름차순을 지키도록 한다고 하자. 임의의 수열이 주어졌을 때 스택을 이용해 그 수열을 만들 수 있는지 없는지, 있다면 어떤 순서로 push와 pop 연산을 수행해야 하는지를 알아낼 수 있다. 이를 계산하는 프로그램을 작성하라. 입력 첫 줄에 n (1 ≤ n ≤ 100,000)이 주어..

    [백준] 10866번: 덱 (JavaScript, NodeJS)

    문제 정수를 저장하는 덱(Deque)를 구현한 다음, 입력으로 주어지는 명령을 처리하는 프로그램을 작성하시오. 명령은 총 여덟 가지이다. push_front X: 정수 X를 덱의 앞에 넣는다. push_back X: 정수 X를 덱의 뒤에 넣는다. pop_front: 덱의 가장 앞에 있는 수를 빼고, 그 수를 출력한다. 만약, 덱에 들어있는 정수가 없는 경우에는 -1을 출력한다. pop_back: 덱의 가장 뒤에 있는 수를 빼고, 그 수를 출력한다. 만약, 덱에 들어있는 정수가 없는 경우에는 -1을 출력한다. size: 덱에 들어있는 정수의 개수를 출력한다. empty: 덱이 비어있으면 1을, 아니면 0을 출력한다. front: 덱의 가장 앞에 있는 정수를 출력한다. 만약 덱에 들어있는 정수가 없는 경우에..

    [백준] 18258번: 큐 2 (JavaScript, NodeJS)

    문제 정수를 저장하는 큐를 구현한 다음, 입력으로 주어지는 명령을 처리하는 프로그램을 작성하시오. 명령은 총 여섯 가지이다. push X: 정수 X를 큐에 넣는 연산이다. pop: 큐에서 가장 앞에 있는 정수를 빼고, 그 수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다. size: 큐에 들어있는 정수의 개수를 출력한다. empty: 큐가 비어있으면 1, 아니면 0을 출력한다. front: 큐의 가장 앞에 있는 정수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다. back: 큐의 가장 뒤에 있는 정수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다. 입력 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 2,000,000)이 주어진다. ..

    [백준] 10828번: 스택 (JavaScript, NodeJS)

    문제 정수를 저장하는 스택을 구현한 다음, 입력으로 주어지는 명령을 처리하는 프로그램을 작성하시오. 명령은 총 다섯 가지이다. push X: 정수 X를 스택에 넣는 연산이다. pop: 스택에서 가장 위에 있는 정수를 빼고, 그 수를 출력한다. 만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력한다. size: 스택에 들어있는 정수의 개수를 출력한다. empty: 스택이 비어있으면 1, 아니면 0을 출력한다. top: 스택의 가장 위에 있는 정수를 출력한다. 만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력한다. 입력 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보..

    [백준] 1158번: 요세푸스 문제 (JavaScript, NodeJS)

    문제 요세푸스 문제는 다음과 같다. 1번부터 N번까지 N명의 사람이 원을 이루면서 앉아있고, 양의 정수 K(≤ N)가 주어진다. 이제 순서대로 K번째 사람을 제거한다. 한 사람이 제거되면 남은 사람들로 이루어진 원을 따라 이 과정을 계속해 나간다. 이 과정은 N명의 사람이 모두 제거될 때까지 계속된다. 원에서 사람들이 제거되는 순서를 (N, K)-요세푸스 순열이라고 한다. 예를 들어 (7, 3)-요세푸스 순열은 이다. N과 K가 주어지면 (N, K)-요세푸스 순열을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 5,000) 출력 예제와 같이 요세푸스 순열을 출력한다. 예제 입력 1 복사 7 3 예제 출력 1 복사 정답 풀이 con..

    [백준] 1715번: 카드 정렬하기 (JavaScript, NodeJS)

    문제 정렬된 두 묶음의 숫자 카드가 있다고 하자. 각 묶음의 카드의 수를 A, B라 하면 보통 두 묶음을 합쳐서 하나로 만드는 데에는 A+B 번의 비교를 해야 한다. 이를테면, 20장의 숫자 카드 묶음과 30장의 숫자 카드 묶음을 합치려면 50번의 비교가 필요하다. 매우 많은 숫자 카드 묶음이 책상 위에 놓여 있다. 이들을 두 묶음씩 골라 서로 합쳐나간다면, 고르는 순서에 따라서 비교 횟수가 매우 달라진다. 예를 들어 10장, 20장, 40장의 묶음이 있다면 10장과 20장을 합친 뒤, 합친 30장 묶음과 40장을 합친다면 (10 + 20) + (30 + 40) = 100번의 비교가 필요하다. 그러나 10장과 40장을 합친 뒤, 합친 50장 묶음과 20장을 합친다면 (10 + 40) + (50 + 20)..

    2022, 내가 가고 싶은 기업 리스트

    내가 어떤 회사를 원하는지 파악 후, 2022년의 취업 전략을 짜기 위해 만든 글 나는 어떤 사람인가 나는 성장을 추구한다. 개발 관련 포스팅, 영상을 꾸준히 보려고 노력한다. 개발 관련 서적은 무엇이 있는지 궁금해한다. 개발뿐만 아니라 자기 개발 서적도 꾸준히 읽으려고 한다. 또한 운동도 열심히해서 외적인 성장도 추구하려고 한다. 내가 생각했을 때 나는 잘 놀거나 쉬지 못한다. 주말에 하루종일 침대에 있는 것을 지루해한다. 카페를 가든, 자전거를 타든, 친구를 만나든 무언가를 끊임없이 해야한다. 나는 개발을 좋아한다. 내가 겪고 있는 문제를 개발로 풀거나, 내가 만든 것을 다른 사람들에게 보여주고 잘 만들었다고 칭찬을 받으면 그렇게 기분이 좋다. 언젠가 많은 사람들에게 영향을 줄 수 있는 소프트웨어를 ..

    [개발지식] CORS, 잘 알고 계신가요?

    MDN Web Docs | 교차 출처 리소스 공유 (CORS) 이 글은 CORS에 대해 공부하고 정리한 글입니다. 오타나 부족한 곳이 있다면 마음껏 지적해주세요 CORS 우리가 개발을 진행하다보면 다음과 같은 에러를 많이 만날 수 있습니다. 대충 번역을 해보자면 네가 보낸 요청은 CORS 정책에 의해서 막혔다. 현재 요청에 Access-Control-Allow-Origin 헤더가 없다. 정도로 해석할 수 있습니다. 그럼 우선 CORS는 무엇일까요? CORS는 Cross-Origin-Resource-Sharing, 즉 직역을 해보자면 "교차 출처 리소스 공유"로 번역할 수 있겠네요. 다른 출처의 자원을 공유하는 것에 대한 정책이다. 조금 해석을 해보자면 위와 같습니다. 그러니까 우리의 에러는 해당 정책을 ..

    2021년을 보내고 2022년을 맞이하면서

    평범한 대학생 2021년 회고와 2022년 계획 2021년을 보내고 👋 📌 회고록들 내가 썼던 2021년의 회고록들이다. 2021년 1월 나를 돌아보며 2021년 2월 나를 돌아보며 현수의 2021년 3월 회고록 현수의 2021년 4월 회고록 [회고록] 5월 및 인턴 회고 2021 여름방학 회고록 2021년이 77일 남은 지금 6월달까지는 열심히 쓰다가 그 이후에는 잠잠해졌다. 지금 이 글까지 합친다면 총 8개의 회고록을 썼다. 회고록을 쓰는 이유는 간단하다. 반성하고 내가 무엇을 했는지 한 눈에 확인하기 편하다. 회고록을 써보니 분기마다 쓰는 것이 제일 적당한 것 같다. 한 달은 너무 무언가를 하기에 짧은 시간이다. 3개월은 어떤 성과를 내기에도 적당한 기간이고, 무엇을 했다는 것이 명확하게 정리된다...