2606번: 바이러스 첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하인 양의 정수이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍 www.acmicpc.net 1. 문제 요약 컴퓨터의 수 n, 직접 연결된 컴퓨터의 수 m, 연결된 컴퓨터 쌍의 번호가 주어진다. 1번 컴퓨터와 직간접적으로 연결되어 있는 컴퓨터의 수를 구하시오. 2. 접근 방법 BFS(너비 우선 탐색) 알고리즘을 활용합니다. 1번을 기준으로 찾으면 되기 때문에, 4번과 7번은 무시합니다. 방문할 리스트를 생성하고 해당 리스트의 맨 앞부분에 1번을 추가합니다. (Deque 추천) 방문 리스트의 맨 앞 인덱스부터 순차적으로 방문합니다. 1번을 방문합니다. 1번을 ..
2606번: 바이러스 첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하인 양의 정수이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍 www.acmicpc.net 1. 문제 요약 컴퓨터의 수 n, 직접 연결된 컴퓨터의 수 m, 연결된 컴퓨터 쌍의 번호가 주어진다. 1번 컴퓨터와 직간접적으로 연결되어 있는 컴퓨터의 수를 구하시오. 2. 접근 방법 DFS(깊이 우선 탐색) 알고리즘을 사용합니다. 1번을 기준으로 찾으면 되기 때문에, 4번과 7번은 무시합니다. 1번에서 2번을 방문하고, 2번은 방문했다고 표시를 합니다. 2번에서 방문할 수 있는 곳들 중 방문하지 않은 곳을 방문합니다. 3번으로 방문 후, 더 이상 방문할 곳이 없으므..
2805번: 나무 자르기 첫째 줄에 나무의 수 N과 상근이가 집으로 가져가려고 하는 나무의 길이 M이 주어진다. (1 ≤ N ≤ 1,000,000, 1 ≤ M ≤ 2,000,000,000) 둘째 줄에는 나무의 높이가 주어진다. 나무의 높이의 합은 항상 M보 www.acmicpc.net 1. 문제 요약 나무의 수 n, 가져가려고 하는 나무의 길이 m이 주어지고, 나무의 높이 수열이 주어진다. 자를 높이를 지정하면 해당 높이에 맞게 모든 나무가 잘리며, 지정한 높이 이하의 나무들은 잘리지 않는다. m을 만족하면서 자를 수 있는 나무의 높이의 최솟값을 구하시오. 2. 접근 방법 자르는 높이 별로 얻을 수 있는 나무의 길이를 수열이라 생각하고 이분 탐색을 활용하여 풀면 쉽게 풀 수 있습니다. 빨간색이 배열의 인..
프로젝트에서 이미지 크롤링을 이용한 서비스를 제공할 예정이다. Jsoup을 이용해서 이미지 크롤링 기능을 구현해 놨다. 하지만 해당 방식은 Google 이미지 검색 결과 페이지에서 값을 가져오는 방식이다. 구글은 기본적으로 20개씩 띄워주게 되는데, 다음 인덱스 이미지를 가져오는 방법이 필요해서 알아보다 보니, Jsoup에서는 안되고 Selenium과 같은 자동화 도구를 사용해야 한다고 한다. 그래서 Selenium을 알아보다보니, Google의 정책에 위반될 수 있고, IP차단 등의 문제가 발생할 수 있다고 한다. 아무튼 실제 서비스를 할 생각인데, 합법적인 방법이 아니면 찝찝하기 때문에 넘기기로 했다. Google Custom Search API 그래서 좀 더 알아보니, Custom Search AP..
SSR (Server Side Rendering) 서버 쪽에서 렌더링 준비를 끝낸 상태로 클라이언트에게 전달하는 방식 서버에서 이미 렌더 가능한 상태로 클라이언트에게 보내주기 때문에 JS가 다운로드되는 동안 사용자는 무언가를 보고 있을 수 있음 장점 검색엔진 크롤러가 html에 접근하기 쉽다 -> SEO(Search Engine Optimization)가 우선순위인 경우, 일반적으로 SSR을 사용 웹 페이지의 첫 화면 렌더링이 빠르다 -> 단일 파일의 용량이 작음 웹 페이지가 사용자와 상호작용이 적은 경우 활용 가능 단점 자원이용이 서버에 집중되어 유지비용이 높음 일부 서드파티 자바스크립트 라이브러리의 경우 불가능할 수 있음 CSR (Client Side Rendering) 서버가 클라이언트에게 HTML..
데이터가 정렬된 상태에서 절반씩 범위를 나눠 분할 정복 기법으로 특정한 값을 찾아내는 알고리즘 이진 탐색 알고리즘 동작 원리 Up&Down 게임과 흡사하다 정렬된 배열의 가장 중간 인덱스를 지정한다 찾으려고 하는 값이 지정한 중간 인덱스의 값이라면 탐색을 종료한다 찾으려고 하는 값이 중간 인덱스의 값보다 큰 값인지, 작은 값인지 확인한다 값이 있는 부분과 값이 없는 부분으로 분리한다 값이 있는 부분에서 다시 1단계부터 반복한다 장점 ( 주 사용처) 사전 검색, 도서관 도서 검색, 대규모 시스템에 대한 리소스 사항 파악 등 탐색을 반복할 때마다 탐색 범위가 절반으로 줄어들게 되는 이 알고리즘은 데이터 양이 많을수록 더 높은 효율을 가지게 된다 정렬된 배열에서 요솟값을 더 효율적으로 검색할 때 사용 데이터의..