반응형

전체 글 218

[ C++ ] #1074 Z

찾으려는 값이 들어간 2*2 박스의 첫 칸만 안다면 찾으려는 값도 쉽게 찾을 수 있다 순서가 필요하기 때문에 고민이 되는 문제이다 먼저 제일먼저 생각나는건! 재귀로 배열을 채우고 주어진 배열의 값을 출력하는것이다! 하지만 이런 방법은 너무 비효율적일 것 같다. 2의 15승까지 될 수 있는데..이는너무 오래걸린다. 그래서 생각해본건 4개로 나누고 찾으려는 숫자가 있는 범위를 4칸 중에 한 칸를 선택하고, 또 그 한 칸을 4개로 나누고 범위를 찾고 하면서 구체화 시키면 될 것 같다. 정리하자면 전체 칸을 4칸으로 나누고 각 칸은 그 칸의 제일 앞에있는 수로 관리하는 것이다. 각 칸의 맨 앞에 있는 수의 좌표와 값을 알아야하는데, 규칙을 찾아보면 다음과 같이 된다는 것을 알 수 있다. Z함수는 a,b점이 대표..

BOJ/[ BOJ ] C++ 2023.02.28

[ TCP/IP ] 라우팅

라우팅 서로 다른 네트워크 간의 통신에서 패킷은 여러개의 라우터를 경유하여 수신처에 도달한다. 이 때 라우터가 수신처까지의 경로 결정을 라우팅이라고 한다. 라우팅을 수행하기 위해서는 라우팅 테이블이라는 정보를 갖고있다. 회수한 패킷의 수신 IP주소를 보고 라우팅 테이블을 참고로 다음에 어떤 라우터에게 전송할지 결정한다. 라우팅 테이블에는 다음과 같이 구성되어있다. 수신 네트워크 : 최종 네트워크의 주소와 서브넷 마스크가 들어간다. 다음 홉 주소 : 다음 라우터의 IP주소와 서브넷 마스크가 들어간다. 매트릭 : 경로의 최적도를 나탄는 수치가 들어간다. 값이 적을수록 뛰어난 경로라는 의미이다. 출력 인터페이스 : 다음 전송처에서 데이터링크 층의 어떤 프로토콜을 사용할지 결정하기 위한 데이터링크 정보가 들어간..

공부/TCP IP 2023.02.27

[ C++ ] #11729 하노이 탑 이동 순서

하노이탑은 재귀로 아주 유명한 문제이다! 이 문제는 아주 복잡하기 때문에 절차지향적으로 하나하나 생각하면 답이 전혀 안나온다... n개일떄 어떻게 해야하나? 를 생각해야 답이 나온다. hanoi(int a,int b, int n) 이라는 함수는 a에서 b까지 n개의 칸을 옮긴다고 해보자 n칸의 탑을 a에서 b까지로 옮긴다면 6-a-b칸을 이용해야한다. 6-a-b칸에 n-1개의 칸을 옮겨놓고 → hanoi(a,6-a-b,n-1) 맨 밑에 있던 n칸을 b로 옮기고 6-a-b칸에 있는 n-1개의 탑을 b칸으로 옮기면 된다! → hanoi(6-a-b,b,n-1) 이동한 횟수를 매번 세는 것은 어렵다. 점화식을 이용하여 식을 구해보자! n번째 옮기는 식이 k번이라면 n+1번째는 2*k +1 이 된다. n개를 옮기..

BOJ/[ BOJ ] C++ 2023.02.24

[ Spring ] 스프링 부트란?

스프링 프레임워크는 자바 기반의 애플리케이션 프레임워크로 애플리케이션을 개발하기 위한 다양한 기능을 제공한다. 스프링은 목적에 따라 다양한 프로젝트를 제공하는데, 그중 하나가 스프링부트이다. 1. 스프링 프레임워크 스프링은 자바에서 가장 많이 사용하는 프레임워크이다. 스프링의 핵심가치는 다음과같다. "애플리케이션 개발에 필요한 기반을 제공해서 개발자가 비지니스 로직 구현에만 집중할 수 있게끔 하는것" 스프링을 효율적으로 사용할 수 있도록 스프링의 특징과 구조등을 알아보자! 제어역전 (IoC, Inversion of Control) 일반적인 자바 개발의 경우 사용하려는 객체를 선언하고 해당 객체의 의존성을 생성한 후 객체에서 제공한다. 하지만 제어역전을 특징으로 하는 스프링은 사용할 객체를 직접 생성하지 ..

공부/Spring 2023.02.23

[ TCP/IP ] 데이터링크층과 물리층

데이터링크층 기기들을 연결하는데에는 몇가지 방법이 있다. 이 중 동일한 방법으로 연결된 한 덩어리의 기기를 데이터링크라고 한다. 데이터링크층은 데이터링크간의 차이를 흡수하여 네트워크층 이상의 층들이 차이를 의식하지 못하게 한다. 데이터링크층에서는 데이터에 헤더를 붙인 것을 프레임이라고 한다. 프레임은 보통 비트열로 구성되어있다. 데이터링크의 프로토콜은 데이터를 어덯게 주고받을지 결정한다. 기기를 식별할 필요가 있을 때는 MAC(Media Access Control) 주소를 사용한다. 물리층 데이터링크 안에서 신호가 흐르고 있는 부분을 물리층이라고 한다. 여기서 비트열이 신호로 변환된다. 물리층은 성질이 다르기 때문에 데이터링크층의 일부라고 생각하거나 TCP/IP계층에 포함시키지 않기도한다. 데이터링크 데..

공부/TCP IP 2023.02.23

[ C++ ] #1629 곱셈

처음에는 그냥 문제 그대로 a를 b번 곱해준 뒤 c로 나눠서 출력해줬다. 이렇게 쉬울리가 없는데 하면서 실행시켜보니 음수값이 나왔다... 코드를 보면 음수값이 나올 이유가 전혀 없었는데...곰곰히 생각해보니 overflow가 일어났다는 것을 알 수 있었다. 그래서 곱해주는 것과 동시에 C로 계속 나눠주었다. 하지만 이렇게 하니 A,B,C가 커질수로 시간이 너무 오래 걸렸다. 이 문제의 핵심은 재귀이다 결국 a의 b승을 c로 나눴을 때 나머지를 구하는 것이다. b가 짝수이면 : a^b = a^(b/2) x a^(b/2) b가 홀수이면 : a^b = a^(b/2) x a^(b/2 + 1) 위 식을 이용하여 분할정복 해야한다. 분명 맞는데...왜 자꾸 틀리지 했더니 곱셈과정에서 int의 범위를 넘어가는 것 같..

BOJ/[ BOJ ] C++ 2023.02.17

[ 머신러닝 프로그램 ] 선형 회귀 알고리즘, 다항 회귀 알고리즘

k-최근접 이웃의 한계 k-최근접 이웃 알고리즘은 가장 가까운 샘플을 찾아 타깃을 구한다. 그렇기 때문에 새로운 샘플이 훈련 범위를 벗어나면 기대하는 값이 안나올 수도 있다. 아래 코드는 k-최근접 이웃 회귀 알고리즘 코드이다. 실제로 여기에 100kg에 농어를 넣어도, 200kg의 농어를 넣어도 가까운 농어의 종류는 똑같기 떄문에 똑같은 값이 나온다. #k최근접 이웃 회귀 알고리즘 ver1 import matplotlib.pyplot as plt import numpy as np from sklearn.model_selection import train_test_split from sklearn.neighbors import KNeighborsRegressor perch_length = np.array..

공부/머신러닝 2023.02.17

[ 운영체제 ] 가상 메모리

1. 연속메모리 할당 1.1 스와핑 메모리에 적재된 프로세스 중에서 현재 실행되지 않는 프로세스들을 임시로 보조기억장치에 쫒아내고 빈공간에 새로운 프로세스를 적재하여 실행하는 방식을 스와핑이라고 한다. 스왑 영역 : 프로세스들이 쫒겨나는 보조기억장치의 영역 스왑 아웃 : 실행되지 않는 프로세스가 메모리에서 스왑영역으로 옮겨지는 것 스왑 인 : 스왑 영역에 있던 프로세스가 다시 메모리로 옮겨 오는 것 1.2 메모리할당 메모리 내에 빈공간이 여러개 있다면 프로세스가 어디에 저장되어야할까? 최초적합 (first fit) : 메모리 내의 빈 공간을 순서대로 검색하다가 첫번째 발견할 공간에 저장하는 방식 최적적합 (best fir) : 검색해 본 후, 프로세스가 적재될 수 있는 공간중 가장 작은 공간에 저장하는 ..

공부/운영체제 2023.02.15

[ 컴퓨터구조 ] 보조기억장치

1. 다양한 보조기억장치 1.1 하드디스크 하드디스크는 자기적인 방식으로 데이터를 저장하는 보조기억장치이다. 그러기에 자기 디스크의 일종으로 지칭하기도한다. 하드디스크는 CD와 비슷하게 생긴 동그란 원판에 데이터를 저장한다. 이를 플래터(platter)라고 한다. 플래터는 자기 물질로 덮여있어 수많은 0과 1의 역할을 하는 N극과 S극을 저장한다. 이는 양면다 사용가능하고 여러개가 붙어있는 상태이다. 이 플래터를 회전시키는 구성요소를 스핀들(spindle)이라고 한다. 스핀들이 플래터를 돌리는 속도는 분당 회전수를 나타내는 RPM이라는 단위로 표현된다. 이런 플러터의 데이터를 읽는 구성요소는 헤드(head)이다. 이런 헤드를 이동시키는 것은 디스크 암(disk arm)이다. 플래터의 한 면당 헤드가 달려..

[ TCP/IP ] 네트워크층

네트워크층 네트워크층은 다른 층과 달리 주된 프로토콜이 IP 하나밖에 없다. 네트워크는 통신방법의 차이를 흡수하는 기능이 있다. 가장 중요한 임무는 누가 누구에게 전달할지와 어떤 경로로 데이터를 전달할지를 결정하는 것이다. IP 프로토콜 송신측에서는 IP주소 등을 기록한 IP주소 등을 기록한 IP헤더를 붙여 IP데이터그램을 만들어 데이터링크층에 전달한다. 만약 데이터링크층에서 다룰 수 있는 크기보다 크다면 분할한 후 헤더를 붙인다. IP데이터 전송은 Best Effort 방식이다. 헤더가 깨지지 않았는지 확인하고, 수신처의 주소가 존재하는지 정도는 판단하지만 재전송 처리는 하지 않는 방식이다. 송신처에서 IP프로토콜은 수신처까지의 경로와 통신상태를 보고 최적의 경로는 판단하여 전송한다. 수신처에서는 IP..

공부/TCP IP 2023.02.14
반응형