분류 전체보기

1. 문제https://www.acmicpc.net/problem/14467 2. 풀이과정-1로 초기화되어 있는 크기 10 배열에 소의 번호를 인덱스로 하여 소의 위치를 저장한다.-1이면 새로운 소이므로 추가0, 1이면 새로 위치한 소이므로 새로운 위치로 갱신 후 count  1 증가 3. Javascript 코드const fs = require('fs');const filepath = process.platform === 'linux' ? '/dev/stdin' : './input.txt';const input = fs.readFileSync(filepath).toString().trim().split('\n');const n = input[0];const arr= input.slice(1).map(l..
Javascript를 활용해서 백준 사이트에서 문제를 풀 때 사용하기 좋은 입력 방법을 찾아서 정리한 글입니다. 백준을 자바스크립트로 풀기 어려운 이유코딩 문제를 해결하는 대표적인 사이트에 백준, 프로그래머스가 있다.프로그래머스는 아래 코드와 같이 입력받는 값이 함수의 매개변수로 주어지기 때문에 입력받는 부분을 따로 만들 필요가 없다. function solution(age) { var answer = 0; return answer;}그러나 백준은 입출력을 stdin, stdout 방식으로 받기 때문에 입출력 과정을 전부 명시해줘야 한다. 자바스크립트는 브라우저 환경에서 사용되는 목적으로 개발된 언어이므로, Node.js가 등장하기 전에는 백준과 같은 환경에서 표준 입력(stdin)을 직접 다..
1. 문제 https://www.acmicpc.net/problem/1715 2. 풀이과정카드 묶음을 합쳐가면서 비교를 수행하는데 최소의 비교로 합친다면 최소 몇번의 비교가 필요한지 묻는 문제 즉, 우리는 "현재 존재하는 카드 묶음 중에서, 가장 적은 2개의 묶음을 우선적으로 계산" 하는 것이 정답이라는 것을 파악했습니다. ex) 5 4 3 2 1 카드 묶음이 이렇게 구성되어 있다면 (1+2) + (3+3) + (6+4 )+ (10+5) 이전 카드 묶음의 비교횟수가 다음 카드 비교횟수에 영향을 주기 때문에 가장 적은 카드 묶음을 계속 합쳐야합니다!!✏ 알고리즘N개의 카드 묶음에서 가장 작은 두 개를 골라 합친다 -> 합친 두 카드를 카드 묶음에 넣는다 -> 반복 N개의 카드 묶음에서 최소값 2개를 꺼내기..
1. 큐(Queue) 란?큐는 한쪽은 데이터가 나오기만 하고 한쪽은 들어가기만 하는 형태의 자료구조이다.대표적인 예시로 놀이공원 줄 서기를 생각하면 된다. 내 앞의 사람들이 입장해야 내가 들어갈 수 있다.이런 줄 서기 구조를 FIFO : First-In-First-Out (먼저 온 사람이 먼저 나감)이라고 한다. 2. 원형 큐연결리스트로도 큐를 구현할 수 있지만 필자는 동적 배열을 사용하여 큐를 구현할 것이다.배열로 큐를 구현하는 방법은 다양하지만 큐를 효율적으로 구현하기 위해 알아야 할 중요 로직이 존재한다.몇 가지 방법을 소개하고 가장 효율적인 방법에 대해 설명하겠다. 방법 1. 큐에 값이 빠져나가도 앞의 공간은 내버려 두고 새로운 값을 추가할 때마다 동적배열을 늘려준다.이 방법은 앞에 안 쓰는 공간..
1. 스택이란?스택(stack)은 영어로 "쌓다"라는 뜻으로 그 의미가 개념과 연관이 깊다.데이터가 아래에서 위로 쌓이는 구조로 데이터가 계속 쌓이면 밑에 있는 데이터는 깔리게 된다.데이터를 꺼내려면 가장 위의 데이터부터 꺼내야 함 이런 구조를 LIFO : Last-In-First-Out (마지막에 들어간 사람이 가장 먼저 나온다)라고 한다.대표적인 예시로 프링글스 통, 엘리베이터가 있다.1. 프링글스를 만들 때는 아래에서부터 하나씩 차곡차고 쌓고 꺼낼 때는 가장 위에 있는 과자부터 먹어야 한다.2. 엘리베이터에 제일 마지막에 탄사람이 가장 먼저 내린다.2. 스택에서의 용어자료구조에서 데이터를 넣거나 뺄 때 사용하는 용어들이 있다.아래에서 해당 용어의 기능을 하는 함수를 구현할 것이다.스택에 데이터를 넣..
1. 문제https://www.acmicpc.net/problem/6198 2. 풀이과정1. 먼저 스택이 비어있는 상태니까 첫번째 빌딩의 높이를 스택에 넣는다. 2. 두번째 입력부터 아래 로직을 거친다.스택에 들어있는 빌딩 높이들 중에 입력받은 빌딩의 높이보다 낮은 빌딩은 다 뺍니다.낮은 빌딩을 다 뺐다면 스택에는 입렵받은 빌딩보다 높거나 아니면 모두 다 빠져서 비어있을 겁니다.이때 스택의 남은 빌딩 수가 곧 입력받은 빌딩을 볼 수 있는 빌딩이므로 count에 저장합니다.3. 위 3단계가 끝나면 스택에 입력받은 빌딩을 스택에 넣어줍니다 예시1. 첫번째 입력건물5개이고 높이 {10, 5, 1 ,3 ,14}가 순차적으로 입력됩니다.현재 스택이 비어있으니 현재 입력 push 합니다. Stack [ 10 ] 2..