본문 바로가기

생각정리

(200)
[JAVA 알고리즘]BAEKJOON 3020번 개똥벌레 개똥벌레 문제 설명 개똥벌레 한 마리가 장애물(석순과 종유석)로 가득찬 동굴에 들어갔다. 동굴의 길이는 N미터이고, 높이는 H미터이다. (N은 짝수) 첫 번째 장애물은 항상 석순이고, 그 다음에는 종유석과 석순이 번갈아가면서 등장한다. 아래 그림은 길이가 14미터이고 높이가 5미터인 동굴이다. (예제 그림) 이 개똥벌레는 장애물을 피하지 않는다. 자신이 지나갈 구간을 정한 다음 일직선으로 지나가면서 만나는 모든 장애물을 파괴한다. 위의 그림에서 4번째 구간으로 개똥벌레가 날아간다면 파괴해야하는 장애물의 수는 총 여덟개이다. (4번째 구간은 길이가 3인 석순과 길이가 4인 석순의 중간지점을 말한다) 하지만, 첫 번째 구간이나 다섯 번째 구간으로 날아간다면 개똥벌레는 장애물 일곱개만 파괴하면 된다. 동굴의 ..
레디스 설치 윈도우 레디스 설치 wsl는 윈도우에서 리눅스의 일부기능을 사용할 수 있게 해주는 플랫폼으로 wsl를 이용해 레디스를 사용할 수 있다. $ wsl --install wsl를 이용해 ubuntu를 사용할 수 있도록 설정을 해준다. windows 기능 켜기/끄기에서 Linux용 Windows 하위 시스템을 설치하고 재부팅을 해준다. Microsoft Store에서 ubuntu LTS를 다운로드하여준다. 설치 후 열기를 눌러 ubuntu terminal을 실행해 사용자 이름과 비밀번호를 설정해 준다. wsl 버전을 1이라면 업데이트를 해주고 다른 시스템이 기본값이라면 ubuntu로 변경해 사용해 준다. wsl -s 변경할 시스템명 : 기본값 자체를 변경 wsl를 이용해 우분투 환경에서 레디스를 다운로드할 수 ..
[JAVA 알고리즘]BAEKJOON 1027번 고층 건물 고층 건물 문제 설명 세준시에는 고층 빌딩이 많다. 세준시의 서민 김지민은 가장 많은 고층 빌딩이 보이는 고층 빌딩을 찾으려고 한다. 빌딩은 총 N개가 있는데, 빌딩은 선분으로 나타낸다. i번째 빌딩 (1부터 시작)은 (i,0)부터 (i,높이)의 선분으로 나타낼 수 있다. 고층 빌딩 A에서 다른 고층 빌딩 B가 볼 수 있는 빌딩이 되려면, 두 지붕을 잇는 선분이 A와 B를 제외한 다른 고층 빌딩을 지나거나 접하지 않아야 한다. 가장 많은 고층 빌딩이 보이는 빌딩을 구하고, 거기서 보이는 빌딩의 수를 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 빌딩의 수 N이 주어진다. N은 50보다 작거나 같은 자연수이다. 둘째 줄에 1번 빌딩부터 그 높이가 주어진다. 높이는 1,000,000,000보다 작거나 같은..
[수학] 좌표를 가지고 구할 수 있는 공식 점과 점의 거리 두 점의 좌표를 알 때, 피타고리스 정리를 이용해서 두 점의 거리를 알 수 있다. 두 점 사이의 거리 = x 값의 증가량 + y 값의 증가량 2차원 좌표 평면 위 점 A(x1, y1)와 B(x2, y2) √(x2 - x1)^2 + (y2 - y1)^2 3차원 좌표 평면위 점 A(x1, y1, z1)와 B(x2, y2, z2) √(x2 - x1)^2 + (y2 - y1)^2 + (z2 - z1)^2 두 점의 좌표를 알 때 기울기 2차원 좌표 평면 기울기 = y 값의 증가량 / x 값의 증가량 y2 - y1 / x2 - x1 3차원 좌표 평면 기울기 = z 값의 증가량 / xy의 길이 z2 - z1 / √(x2 - x1)^2 + (y2 - y1)^2 두 점위를 지나는 직선 일차함수 식을 이용..
Redis와 Memcached Memcached란? 무료로 사용할 수 있는 오픈소스 분산 메모리 캐싱 시스템 데이터베이스의 부하를 줄여 동적 웹 애플리케이션의 속도개선을 위해 사용되기도 한다. 데이터베이스나 API호출 또는 랜더링 등으로 부터 받아오는 결과 데이터를 작은 단위의 키-값 형태로 메모리에 저장하는 방식 Memcached는 필요량보다 많은 메모리를 가졌을 때, 시스템으로부터 메모리를 사용하고 필요로 하는 메모리가 부족한 경우 이를 더 쉽게 가져다 사용할 수 있도록 만들어 준다. 사용 사례 캐싱 인메모리 캐시를 구현하여 데이터 엑세스 지연 시간을 줄이고 처리량을 늘리며 백엔드 시스템의 로드를 완화하는 데 매우 적합하다. 데이터베이스 쿼리 결과 캐싱, 세션 캐싱, 웹 페이지 캐싱, API 캐싱, 이미지, 파일 및 메타데이터와 ..
레디스의 기본 구조 자료구조 레디스는 RDS와 달리 데이터 타입 등을 지원하지 않는다. 오직 몇 가지 로우 레벨의 데이터타입을 지원한다. String : 문자열 데이터를 저장할 수 있는 가장 간단한 자료 구조 최대 512MB의 문자열 데이터를 저장할 수 있으며 이진 데이터를 포함하는 모든 종류의 문자열이 binary-safe 하게 처리되기 대문에 JPEG 이미지와 같은 바이트 값, HTTP 응답값 등의 다양한 데이터를 저장하는 것도 가능하다. 유일하게 키와 값이 일대일로 연결되는 자료구조이다. (String이 아닌 다른 자료 구조에서는 하나의 키에 여러 개의 값이 저장된다.) 문자열에 숫자를 넣을 수 있고 원자적으로 조작을 할 수 있다. (동시성 제어와 비슷) 단순 증감 연산으로 사용 가능 (INCR / INCRBY / I..
레디스란? 레디스의 개요 Redis(Remote dictionary server)는 고성능 키-값 유형의 인메모리 NoSQL 데이터베이스로, 오픈 소스 기반의 데이터 저장소로 데이터베이스, 캐시, 메시지 브로커 등으로 주로 사용되고 있다. 레디스의 특징 인메모리 데이터베이스 인메모리 형태의 데이터베이스에서는 모든 데이터가 컴퓨터의 메모리에서 관리돼 디스크에 접근하는 과정이 필요 없어 데이터 처리 성능이 굉장히 빠르다. 인 메모리 데이터베이스와 온디스크 데이터베이스의 차이 온디스크 형태의 데이터베이스에서 데이터는 영구적으로 디스크에 저장되며 데이터를 찾을 때에는 직접 디스크에 가서 데이터를 검색하는 과정을 거쳐야 하기 때문에 메모리에 접근하는 속도보다 현저히 느리다. 문제점으로 메모리의 데이터는 휘발성이기 때문에 소..
[JAVA 알고리즘]BAEKJOON 2206번 벽 부수고 이동하기 벽 부수고 이동하기 문제 설명 N×M의 행렬로 표현되는 맵이 있다. 맵에서 0은 이동할 수 있는 곳을 나타내고, 1은 이동할 수 없는 벽이 있는 곳을 나타낸다. 당신은 (1, 1)에서 (N, M)의 위치까지 이동하려 하는데, 이때 최단 경로로 이동하려 한다. 최단경로는 맵에서 가장 적은 개수의 칸을 지나는 경로를 말하는데, 이때 시작하는 칸과 끝나는 칸도 포함해서 센다. 만약에 이동하는 도중에 한 개의 벽을 부수고 이동하는 것이 좀 더 경로가 짧아진다면, 벽을 한 개 까지 부수고 이동하여도 된다. 한 칸에서 이동할 수 있는 칸은 상하좌우로 인접한 칸이다. 맵이 주어졌을 때, 최단 경로를 구해 내는 프로그램을 작성하시오. 입력 첫째 줄에 N(1 ≤ N ≤ 1,000), M(1 ≤ M ≤ 1,000)이 주어..