문제https://www.acmicpc.net/problem/11724 문제 설명방향 없는 그래프가 주어졌을 때, 연결 요소 (Connected Component)의 개수를 구하는 프로그램을 작성하시오. 입력첫째 줄에 정점의 개수 N과 간선의 개수 M이 주어진다. (1 ≤ N ≤ 1,000, 0 ≤ M ≤ N×(N-1)/2) 둘째 줄부터 M개의 줄에 간선의 양 끝점 u와 v가 주어진다. (1 ≤ u, v ≤ N, u ≠ v) 같은 간선은 한 번만 주어진다.출력첫째 줄에 연결 요소의 개수를 출력한다. 풀이법그래프 중에서는 위 그림과 같이 여러 개로 나누어져 있을 수도 있다. 위 그림을 보고 두 개의 그래프라고 볼 수도 있지만, 하나의 그래프에 두 개의 연결 요소를 가진다고 볼 수도 있다. 그 이유는 정점..
전체 글
KHU CSE Do Your Best!시간 복잡도?(Time Complexity) 다음은 1부터 N까지의 합을 구하는 코드이다. int sum = 0; for(int i=1; i 시간복잡도를 고려한다는 것이다! 즉 알고리즘의 로직을 코드로 구현할 때, 시간 복잡도를 고려한다는 것은 "입력값의 변화에 따라 연산을 실행할 때, 연산 횟수에 비해 시간이 얼마만큼 걸리는가?"라는 말이다. 시간복잡도 표기법 시간 복잡도를 표현하는 방법에는 3가지가 있다. 최적의 경우: 오메가 표기법(Big-Ω notation) 평균적인 경우: 세타 표기법(Big-Θ notation) 최악의 경우: 빅오 표기법(Big-O notation) Big-O 표기법 시간 복잡도를 표기하는 방법 중 가장 자주 사용되는 표기법 -> 빅오 표기법은 최악의 경우를 고려하므로 프로그램..
프로그래밍은 동기 프로그래밍, 비동기 프로그래밍으로 나눌 수 있다. 동기 프로그래밍이란 작업을 차례대로 진행하면서 작업의 실행이 완료될때까지 중단될 수 없다. 따라서 모든 작업은 이전 작업의 실행이 완료될 때까지 기다려야 한다. 반면 비동기 프로그래밍에서는 임의의 순서로 또는 동시에 작업이 진행될 수 있다. 자바스크립트는 단일 작업 특성을 갖고 있기 때문에 실행이 오래 걸리는 작업(setTimeOut, 파일 불러오기 등)에서는 다음 작업의 실행이 지연되는 blocking 현상이 발생할 수 있다. 이를 해결하기 위해서는 비동기 처리가 필요하다. 예를 들어, 동기로 프로그램이 작동한다면 짜장면 배달부가 한 집에 배달을 한 뒤, 해당 고객이 짜장면을 다 먹고 난 뒤 그릇을 회수해야 다음 배달을 갈 수 있게 된..
문제 https://www.acmicpc.net/problem/2512 2512번: 예산 첫째 줄에는 지방의 수를 의미하는 정수 N이 주어진다. N은 3 이상 10,000 이하이다. 다음 줄에는 각 지방의 예산요청을 표현하는 N개의 정수가 빈칸을 사이에 두고 주어진다. 이 값들은 모두 1 이상 www.acmicpc.net 문제 설명 국가의 역할 중 하나는 여러 지방의 예산요청을 심사하여 국가의 예산을 분배하는 것이다. 국가예산의 총액은 미리 정해져 있어서 모든 예산요청을 배정해 주기는 어려울 수도 있다. 그래서 정해진 총액 이하에서 가능한 한 최대의 총 예산을 다음과 같은 방법으로 배정한다. 모든 요청이 배정될 수 있는 경우에는 요청한 금액을 그대로 배정한다. 모든 요청이 배정될 수 없는 경우에는 특정한..
저는 보통 집에서 무언가를 작업할 때는 블루투스 마우스를 사용하고, 외부에서 작업을 할 때는 트랙패드를 사용합니다. 보통 트랙패드와 마우스 스크롤 휠의 방향이 반대인데, 맥북에 내재된 기능으로는 트랙패드와 외장 마우스의 스크롤 방향을 반대로 설정할 수 없습니다. 외장 마우스와 트랙패드를 번갈아 사용할 때마다 설정에 들어가 계속 설정을 바꿔주어야 했습니다. 그래서 제가 찾은 프로그램이 "Scroll Reverser" 입니다. 이는 최신 Mac OS를 지원합니다. 저는 Macbook Air 15(M2)를 사용 중입니다. https://pilotmoon.com/scrollreverser/ Scroll Reverser Per-device scrolling preferences for MacOS. pilotmoo..
저번 시간에는 자료구조의 선형 자료구조(linear data structure)에 대해 알아봤습니다. [알고리즘]자료구조(Data Structure) - 1: Linear Data Structure 자료구조는 알고리즘의 기본이 되는 개념입니다. 실제로 실무에서도 많이 사용하기도 하므로 개념을 명확히 알고 있는 것이 중요합니다. 자료구조란? 자료구조는 컴퓨터 과학에서 효율적인 접 bestdeveloperever.tistory.com 이번 시간에는 non-linear 한 자료구조에 대해 알아보겠습니다. 1. 그래프(Graph) 그래프는 노드(vertices)와 간선(edge)들로 이루어져 있는 자료구조이다. 간선들은 노드를 연결하는 데 사용된다. 그래프의 종류에는 두가지가 있다. (directed, undi..
저번 시간에 HTTP/1.1의 GET, POST 요청 처리하는 서버 코드를 작성해 보았다. 이번 시간에는 서버에게 응답을 요구하는 클라이언트 코드에 대해 알아보도록 하겠다. 2023.11.29 - [Node.js] - [Node.js]HTTP/1.1 GET, POST 요청 처리하기(1) - Server Client Code 란? 어떤 기능을 제공하는 쪽을 서버(Server), 제공받는 쪽을 클라이언트(Client)라고 한다. 코드도 마찬가지로 기능을 제공하는 서버 코드, 기능을 제공받는 클라이언트 코드가 존재한다. 특정 기능을 구현해 호출되는 코드를 서버 코드, 이 코드를 호출하는 모든 코드(객체, 클래스)가 클라이언트 코드라고 한다. 간단히 말하자면 "클라이언트 = 호출, 서버 = 응답" 이 되겠다. ..
HTTP 1.1? Client가 Server에게 HTTP request를 보내면, Server에서 Client로 HTTP response를 보내게 된다. Client가 Server에게 request를 보내기 위해서는 URL(Uniform Resource Locator)를 사용해 정적/동적인 컨텐츠의 위치를 설명하고, method 라는 것을 사용한다. HTTP의 주요 method로는 다음과 같이 GET, POST, PUT, DELETE가 존재한다. 이번 시간에는 GET과 POST만 구현해보려고 한다. GET 요청 GET은 Client가 Server에게 리소스를 달라고 요청하며 server로부터 리소스를 받는 것을 의미한다. request에서 method를 확인한 뒤 GET이면 해당 요청을 처리한다. Nod..