본문 바로가기

분류 전체보기84

[node.js,백준]2343 - 기타 레슨 목차   문제링크https://www.acmicpc.net/problem/2343 문제강토는 자신의 기타 강의 동영상을 블루레이로 만들어 판매하려고 한다. 블루레이에는 총 N개의 강의가 들어가는데, 블루레이를 녹화할 때, 강의의 순서가 바뀌면 안 된다. 순서가 뒤바뀌는 경우에는 강의의 흐름이 끊겨, 학생들이 대혼란에 빠질 수 있기 때문이다. 즉, i번 강의와 j번 강의를 같은 블루레이에 녹화하려면 i와 j 사이의 모든 강의도 같은 블루레이에 녹화해야 한다.강토는 이 블루레이가 얼마나 팔릴지 아직 알 수 없기 때문에, 블루레이의 개수를 가급적 줄이려고 한다. 오랜 고민 끝에 강토는 M개의 블루레이에 모든 기타 강의 동영상을 녹화하기로 했다. 이때, 블루레이의 크기(녹화 가능한 길이)를 최소로 하려고 한다... 2024. 5. 9.
[node.js,백준]11652 - 카드 목차   문제링크https://www.acmicpc.net/problem/11652 문제준규는 숫자 카드 N장을 가지고 있다. 숫자 카드에는 정수가 하나 적혀있는데, 적혀있는 수는 -262보다 크거나 같고, 262보다 작거나 같다.준규가 가지고 있는 카드가 주어졌을 때, 가장 많이 가지고 있는 정수를 구하는 프로그램을 작성하시오. 만약, 가장 많이 가지고 있는 정수가 여러 가지라면, 작은 것을 출력한다.입력 첫째 줄에 준규가 가지고 있는 숫자 카드의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개 줄에는 숫자 카드에 적혀있는 정수가 주어진다.  출력 첫째 줄에 준규가 가장 많이 가지고 있는 정수를 출력한다.  주저리 24/03/28에 해결했던 문제. 로직은 이미 풀었었으나 node.. 2024. 5. 9.
[Node.js,백준]10825 - 국영수 목차 문제도현이네 반 학생 N명의 이름과 국어, 영어, 수학 점수가 주어진다. 이때, 다음과 같은 조건으로 학생의 성적을 정렬하는 프로그램을 작성하시오.국어 점수가 감소하는 순서로국어 점수가 같으면 영어 점수가 증가하는 순서로국어 점수와 영어 점수가 같으면 수학 점수가 감소하는 순서로모든 점수가 같으면 이름이 사전 순으로 증가하는 순서로 (단, 아스키 코드에서 대문자는 소문자보다 작으므로 사전순으로 앞에 온다.)입력 첫째 줄에 도현이네 반의 학생의 수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 한 줄에 하나씩 각 학생의 이름, 국어, 영어, 수학 점수가 공백으로 구분해 주어진다. 점수는 1보다 크거나 같고, 100보다 작거나 같은 자연수이다. 이름은 알파벳 대소문자로 이루어진 문자열이고.. 2024. 5. 8.
[Node.js,백준]1377 - 버블 소트 목차   문제 입력 첫째 줄에 N이 주어진다. N은 500,000보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에 A[1]부터 A[N]까지 하나씩 주어진다. A에 들어있는 수는 1,000,000보다 작거나 같은 자연수 또는 0이다. 출력정답을출력한다.  풀이24년 3월 28일날 풀었으나 티스토리로 이관 정렬을 이용해서 푸는 문제 이다. 실제로 버블 정렬으로 풀면 시간 초과가 일어나기 때문에 다른 방법으로 풀어야 한다.버블정렬엔 어떠한 규칙이있는데 앞의수가 뒤의수보다 클때 ex)(10 > 5)앞의수는 뒤의수보다 작을때까지 어디든 이동이 가능하지만 뒤의 수는 앞으로 한번씩만 이동한다는 점이다.이 점을 이용하기 위해arrs라는 새로운 배열을 만들껀데 최초 배열의 [값, i(순서)]를 저장하고 값을 오름차.. 2024. 5. 8.
이분 탐색: 정렬된 데이터에서 빠르게 값 찾기 안녕하세요! goodchuck 입니다!블로그에 방문해주셔서 감사합니다!목차  1. 이분 탐색의 탄생 배경 이분 탐색 알고리즘은 정렬된 데이터에서 특정 값을 찾는 과정에서 시간 복잡도를 최소화하기 위해 고안되었습니다. 선형 탐색(Linear Search)과 같은 단순한 방법보다 훨씬 효율적이기 때문에, 대용량 데이터에서 값을 찾을 때 유용합니다.  2. 이분 탐색이란? 이분 탐색은 정렬된 데이터에서 특정 값을 찾는 과정에서 전체 데이터를 반복적으로 절반씩 줄여나가며 탐색하는 알고리즘입니다. 중간 값과 찾고자 하는 값을 비교하여 왼쪽 또는 오른쪽 부분에서 탐색을 계속합니다. 이렇게 반복하여 값을 찾거나 존재하지 않음을 확인할 수 있습니다.  3. 이분 탐색의 일반적인 절차 1. **분할(Divide)**: .. 2024. 5. 7.
분할 정복 : 작은 부분에서 얻는 큰 지혜 안녕하세요! goodchuck 입니다!블로그에 방문해주셔서 감사합니다!  1. 분할 정복 알고리즘의 탄생 배경분할 정복 알고리즘은 1960년대 컴퓨터 과학자들이 복잡한 문제를 해결하기 위해 고안한 기법입니다. 당시 컴퓨터의 성능이 낮아서 큰 문제를 한 번에 해결하기 어려웠던 것이 계기가 되었습니다. 이에 문제를 작은 부분으로 나누어 각각 해결한 뒤, 그 결과를 합치는 방식으로 접근하게 되었습니다.  2. 분할 정복 알고리즘이란?분할 정복 알고리즘은 큰 문제를 작은 부분 문제로 나누어 각각을 해결한 다음, 그 해답을 모아서 전체 문제를 해결하는 알고리즘 설계 패러다임입니다. 이 기법은 재귀적인 방식으로 동작하며, 높은 효율성을 가지고 있습니다.  3. 분할 정복 알고리즘의 일반적인 절차1. **분할(Div.. 2024. 5. 6.
최적의 해를 향한 지름길: 그리디 알고리즘 입문 안녕하세요! goodchuck 입니다!블로그에 방문해주셔서 감사합니다! 그리디 알고리즘은 각 단계에서 최적의 선택을 함으로써 전체적인 최적해를 도출하는 알고리즘입니다. 이 방식은 많은 최적화 문제에서 효율적인 해결책을 제공할 수 있습니다.  개념 그리디 알고리즘은 각 단계에서 가능한 최선의 선택을 하며, 그 선택을 통해 최종적인 목표에 도달하려고 합니다. 이러한 접근 방식은 각 선택이 그 이후의 선택들에 영향을 미치지 않는 문제에 특히 적합합니다.  등장 배경 그리디 알고리즘은 복잡한 문제를 단순화하여 빠르게 해결하기 위한 필요에서 개발되었습니다. 초기 컴퓨팅 환경에서는 계산 자원이 제한적이었기 때문에, 각 단계에서 최적의 해를 빠르게 찾는 것이 중요했습니다. 이러한 배경 하에 그리디 알고리즘이 도입되어.. 2024. 5. 6.
알고리즘의 브루트포스(Brute Force): 모든 경우를 탐색하는 간단한 방법 안녕하세요! goodchuck 입니다!블로그에 방문해주셔서 감사합니다!   브루트포스의 개념 브루트포스(Brute Force)는 모든 가능한 경우를 일일이 탐색하여 원하는 결과를 얻는 알고리즘입니다. 이 방법은 간단하지만, 경우의 수가 많을 경우에는 효율적이지 않을 수 있습니다. 하지만 경우의 수가 적거나 작은 경우에는 쉽게 구현할 수 있고, 올바른 답을 보장합니다.  브루트포스의 동작 원리 브루트포스는 다음과 같은 과정을 거쳐서 동작합니다:1. 가능한 모든 경우의 수를 생성합니다.2. 각 경우의 수에 대해 조건을 확인하여 올바른 답을 찾습니다.  브루트포스의 장단점 **장점:**- 구현이 간단하고 직관적입니다.- 모든 가능한 경우를 탐색하므로 정확한 결과를 얻을 수 있습니다. **단점:**- 경우의 수.. 2024. 5. 6.
알고리즘의 BFS(Breadth-First Search): 그래프 탐색의 기본 안녕하세요! goodchuck 입니다!블로그에 방문해주셔서 감사합니다! BFS의 등장 배경 BFS(Breadth-First Search)는 그래프를 탐색하는 알고리즘 중 하나로, 너비를 우선하여 탐색하는 방법입니다. 이 알고리즘은 최단 경로를 찾거나 네트워크에서 연결된 모든 노드를 탐색하는 등 다양한 문제를 해결하는 데 사용됩니다. 예를 들어, 소셜 네트워크에서 특정 사용자와 다른 모든 사용자 간의 관계를 찾거나, 게임 개발에서 유닛의 이동 경로를 계산하는 등의 문제를 해결할 때 BFS가 유용하게 사용됩니다.  BFS의 개념 BFS는 다음과 같은 과정을 거쳐서 동작합니다:1. 시작 노드를 큐(Queue)에 넣고, 이 노드를 방문한 것으로 표시합니다.2. 큐에서 노드를 꺼내어 방문합니다.3. 방문한 노드와.. 2024. 5. 6.
알고리즘의 DFS(Depth-First Search): 그래프 탐색의 기본 안녕하세요! goodchuck 입니다!블로그에 방문해주셔서 감사합니다!  DFS의 개념 DFS(Depth-First Search)는 그래프를 탐색하는 알고리즘 중 하나로, 깊이를 우선하여 탐색하는 방법입니다. 이 알고리즘은 그래프의 한 노드에서 시작하여 깊이 방향으로 탐색하다가 더 이상 진행할 수 없는 상태에 이르면, 그 직전에 갈림길에서 다른 방향으로 다시 탐색을 진행합니다.  DFS의 동작 원리 DFS는 다음과 같은 과정을 거쳐서 동작합니다:1. 시작 노드를 방문하고, 이 노드를 방문한 것으로 표시합니다.2. 현재 방문한 노드와 연결된 다른 노드 중 아직 방문하지 않은 노드가 있다면, 해당 노드로 이동하여 방문합니다.3. 더 이상 방문하지 않은 노드가 없을 때까지 위 과정을 반복합니다.  DFS의 장.. 2024. 5. 6.