아카이브: 2018

0

하노이탑 알고리즘

하노이탑은 널리 알려져 있는 문제로 3개의 막대가 있고 첫번째 막대에 있는 모든 원판을 3번째 원판으로 최소의 횟수로 이동시키는 문제이다. 이 문제는 알고리즘의 재귀의 대표적 문제로 알려져 있으며 처음 이 방법을 모르면 매우 어려울 수 있으나 개념적 원리를 알고 알고리즘을 구현하면 생각보다 의외로 간단하고 깔끔한 코드가 나오는 문제이다. 원리는 간단한

0

가비지 컬렉션

가비지 컬렉션 가비지 컬렉션은 메모리 관리 기법 중의 하나로 사용자가 메모리를 관리하는 기법이 아닌 가비지 컬렉터에게 메모리 관리를 맡기는 방법이다. C언어 같은 경우 malloc으로 할당한 메모리의 경우 사용자가 사용하지 않을 때 free를 통해 임의적으로 할당 해주어야 하는데 이렇게 메모리 관리를 사용자에게 맡기는 경우 메모리 누수가 생기거나 해제한 메

0

백준 1654 랜선 자르기

백준 1654 랜선 자르기는 전형적인 이분 탐색 문제이다. 문제에서 1~ 2^31-1에 해당하는 랜선길이에 대해 필요한 랜선 개수를 만들 수 있는 최대 랜선 길이를 알아내 출력하는 문제이다. 2^31-1 까지 모든 길이에 대하여 해보면 답은 나오겠지만 이 방법은 너무 느려 시간초과가 뜰 것이다. 그렇다면 여기서 이분 탐색을 이용하여 문제를 풀어나갈

0

ARP란

ARP란 ARP(Address Resolution Protocol)이란 한글로 해석하면 주소 해석 프로토콜이라고 말한다. ARP는 IP 주소를 통해 MAC 주소를 얻어내기 위해 사용하는 것으로 상대방의 IP주소를 알고있으면 이를 브로드캐스트하여 상대방에게 MAC주소를 알아내는 방법이다. 위의 그림을 보자면 위의 IP 에서 141.23.56.23이라는 I

0

백준 9933 민균이의 비밀번호

백준 9933 민균이의 비밀번호는 주어지는 문자열이 주어진 문자열 집합에서 거꾸로 된 것과 같은 것이 있는지 확인하고 찾아 출력하는 문제이다. 너무 간단한 문제라고 생각하고 주어진 문자열에서 뒤집어서 같은 문자열이 있는지만 확인했는데 오답이 나와 무엇이 잘못됬는지 잘 몰랐다. 이 문제에는 예외가 존재하는데 길이가 1일 때와 여러개의 문자열이 있어도 문

0

백준 9935 문자열 폭발

백준 문자열 폭발은 문자열과 폭발 문자열이 주어지고 폭발 문자열을 입력받아 이 폭발문자열을 터뜨려 나온 최종 문자열을 구하는 문제이다. 폭발 문자열이 터져서 또한번 폭발문자열을 이룰 수 있으니 이점에 주의하여 풀어야 한다. 처음에는 단순히 str.find(“폭발문자열”)을 찾아 서브 스트링으로 조합한뒤 찾을 문자열이 없을때 까지 진행했는데 이 방법은

0

백준 14888 연산자 끼워넣기

백준 14888 연산자 끼워넣기는 아주 쉬운 dfs문제이다. 숫자 1 2 3 4 5 6 이 주어지고 사용할 수 있는 연산자 + - * / 의 갯수가 주어지면 이 연산을 사용하여 앞에서부터 차례대로 연산한 결과의 최대값, 최솟값을 구하는 문제이다. 연산자 우선순위를 고려해야 하는 문제이면 꽤나 까다로운 문제이겠지만 순서대로 계산하므로 어렵지 않은 문제

0

운영체제 메모리 관리

Logical vs Physical AddressLogical Address( = virtual address) 프로세스마다 독립적으로 가지는 주소 공간 각 프로세스마다 0번지부터 시작 CPU가 보는 주소는 Logical Adress 이다. Physical Address 메모리에 실제 올라가는 물리적 메모리 주소공간 논리적 메모리는 MMU에 의해 자

0

운영체제란

운영체제란? 운영체제란 컴퓨터 시스템의 하드웨어 자원을 관리하고 효율적으로 사용할 수 있도록 하는 소프트웨어를 말한다. 좁은 의미에서는 운영체제의 커널을 의미하며 넓은 의미에서는 시스템을 관리하는 시스템 유틸리티들을 포함한 개념을 말한다. 운영체제는 A 프로세스의 메모리가 B프로세스의 메모리 영역을 침범하지 않도록 관리하고 파일시스템, 네트워크,프로세스들

0

CPU 스케줄링

스케줄링 스케줄링이랑 CPU에서 어떠한 프로세스가 실행되어야 할지 결정하는 작업이다. 적절한 스케줄링을 해야만 컴퓨터 작업의 효율성이 향상되고 반환시간이 단축된다. 스케줄링을 하는데 고려해야 할 요소는 CPU 이용률 , 처리량, 반환시간,대기 시간, 응답시간이 있다. 스케줄링은 수행되고 있는 프로세스를 뺏을 수 있냐 없냐에 따라서 선점/비선점 스케줄링으로