분류 전체보기
-
OSI 7 계층네트워크/네트워크 정리 2020. 1. 16. 01:36
OSI 7 계층 OSI(Open Systems Interconnection Reference Model)란 국제표준화기구(ISO)에서 개발한 모델로, 컴퓨터 네트워크 프로토콜 디자인과 통신을 계층으로 나누어 설명한 것이다. 이 모델은 프로토콜을 기능별로 나눈 것이다. 각 계층은 하위 계층의 기능만을 이용하고, 상위 계층에게 기능을 제공한다. '프로토콜 스택' 혹은 '스택'은 이러한 계층들로 구성되는 프로토콜 시스템이 구현된 시스템을 가리키는데, 프로토콜 스택은 하드웨어나 소프트웨어 혹은 둘의 혼합으로 구현될 수 있다. 일반적으로 하위 계층들은 하드웨어로, 상위 계층들은 소프트웨어로 구현된다. 물리 계층(Physical layer) 네트워크의 기본 네트워크 하드웨어 전송 기술을 이룬다. 네트워크의 높은 수..
-
백준(BOJ) 17088번 등차수열 변환알고리즘 풀이/백준(Boj) 2020. 1. 12. 13:47
문제 : https://www.acmicpc.net/problem/17088 17088번: 등차수열 변환 크기가 N인 수열 A = [A1, A2, ..., AN]이 있을 때, 모든 1 ≤ i < N에 대해서, Ai+1-Ai가 모두 일치하면 등차수열이라고 한다. 예를 들어, [3], [6, 6, 6], [2, 8, 14, 20], [6, 4, 2]는 등차수열이고, [4, 5, 4], [6, 3, 1]은 등차수열이 아니다. 수열 B = [B1, B2, ..., BN]을 등차수열로 변환하려고 한다. 각각의 수에는 연산을 최대 한 번 적용할 수 있다. 연산은 두 가 www.acmicpc.net 풀이 : 모든 경우를 다해 보기에는 N이 10만이기 때문에 3^10만으로 도저히 불가능하다. 따라서 등차수열의 성질을 ..
-
백준(BOJ) 16964번 DFS 스페셜알고리즘 풀이/백준(Boj) 2020. 1. 11. 13:49
문제 : https://www.acmicpc.net/problem/16964 16964번: DFS 스페셜 저지 첫째 줄에 정점의 수 N(2 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N-1개의 줄에는 트리의 간선 정보가 주어진다. 마지막 줄에는 DFS 방문 순서가 주어진다. DFS 방문 순서는 항상 N개의 정수로 이루어져 있으며, 1부터 N까지 자연수가 한 번씩 등장한다. www.acmicpc.net 풀이 : order배열을 통해 각 정점에 순서를 구해준다. 각각의 a안에 배열들을 order 순서에 맞게 정렬한다. 이후 바뀐 a로 dfs 방문을 실제로 해보고 picked배열에 저장한다. picked와 cand가 같지 않으면 0을 같다면 1을 출력한다. ex) 두번째 예제에서는 a[0]은 1 2 ..
-
Gradle 과 Maven 차이?JAVA/Java 2020. 1. 10. 08:50
Maven 과 Gradle 은 모두 빌드 관리 툴이다. 웹/앱 등 프로그래밍 개발이 발전되고 그에 필요한 라이브러리도 점차 증가했다. 이런 각각의 라이브러리들을 직접 다운받아 추가하는 방법은 너무 번거로워 졌다. 따라서 빌드 관리 툴이 등장하는데 프로젝트를 진행하며 라이브 러리의 버전을 동기화하기 위해 등장하였다. 초기 JAVA의 빌드 도구는 Ant라는 빌드 툴이였고 그 이 후 Ant의 불편함등을 해소 하기 위해 Maven이 등장하게 되고 이런 Ant와 Maven의 장점을 모아 등장한 것이 Gradle 이다. Maven 이란? 빌드를 쉽게해주고 pom.xml을 이용한 정형화된 빌드 시스템을 제공한다. 뛰어난 프로젝트 정보를 제공한다. 개발 가이드 라인을 제공한다.. 새로운 기능을 쉽게 설치할 수 있고 업..
-
String과 StringBuffer, StringBuilder 클래스 차이JAVA/Java 2020. 1. 10. 02:45
우선 String과 StringBuffer, StringBuilder의 차이를 알아보자. String은 문자를 수정하려면 지우고 다시 새로운 문자열을 리턴한다. 문자열 연산이 많아질수록 기능이 떨어진다. 따라서 문자열을 변경하는 작업이 많을 경우 String 클래스보다는 java.lang에 StringBuffer or StringBuilder 클래스를 사용하자. 이 두 클래스는 내부 버퍼에 문자열을 저장해 두고, 그 안에서 추가,수정,삭제 작업을 하도록 설계되어있다. 따라서 String 처럼 새로운 객체를 만들지 않고도 문자열을 조작할 수 있다. 그렇다면 StringBuffer와 StringBuilder의 차이는 뭘까? 둘의 사용 방법은 동일하지만 차이는 멀티 스레드 환경에서 사용할 수 있도록 동기화가 ..
-
16. 외부 단편화와 페이징운영체제/운영체제 정리 2020. 1. 10. 02:15
연속 메모리 할당 부팅 후에 OS가 먼저 메인 메모리로 올라온 상황을 생각해보자. 이때 메인 메모리 올라온 프로그램은 없는 상태임으로 하나의 큰 Hole이라고 생각하자. 이후 프로그램을 실행할 텐데 p1 p2 p3 p4 등 프로세스들이 메인 메모리에 올라올 것 이고 이 후 p2가 끝났다고 가정하면 다음과 같은 상태가 된다. 이처럼 프로세스가 생성되고 종료되면서 많은 Hole들이 흩어지게 될 것이다. 이런 식으로 쪼개져있는 것을 메모리 단편화(fragment)라고 한다. 이렇게 Hole 들이 많아지면 문제가 뭘까? 예를 들어 130 Kbyte에 프로그램을 메모리에 올리려고 한다. 홀에 있는 공간은 합치면 170 Kbyte ( 110 + 40 + 20 )으로 충분히 들어갈 수 있지만 흩어져 있기 때문에 13..
-
백준(BOJ) 16954번 움직이는 미로 탈출알고리즘 풀이/백준(Boj) 2020. 1. 7. 14:33
문제 : https://www.acmicpc.net/problem/16954 16954번: 움직이는 미로 탈출 욱제는 학교 숙제로 크기가 8×8인 체스판에서 탈출하는 게임을 만들었다. 체스판의 모든 칸은 빈 칸 또는 벽 중 하나이다. 욱제의 캐릭터는 가장 왼쪽 아랫 칸에 있고, 이 캐릭터는 가장 오른쪽 윗 칸으로 이동해야 한다. 이 게임의 특징은 벽이 움직인다는 점이다. 1초마다 모든 벽이 아래에 있는 행으로 한 칸씩 내려가고, 가장 아래에 있어서 아래에 행이 없다면 벽이 사라지게 된다. 욱제의 캐릭터는 1초에 인접한 한 칸 또는 대각선 방향으로 인접한 한 칸으로 www.acmicpc.net 풀이 : 시간이 8초부터는 벽은 모두 내려간 상태고.(점)만 남은 상태가 된다. 이 상태에서는 무조건 목표지점(0..
-
15. 메모리 낭비 방지운영체제/운영체제 정리 2020. 1. 5. 00:23
보조기억장치 안에는 OS 및 다른 실행 파일들이 들어있다. 처음에 power On을 하면 OS는 메인 메모리로 올라간다. 그 후 다른 실행 파일들인 프로그램들이 메인 메모리로 올라오게 된다. OS에서 가장 중요한 점은 CPU를 관리해야 하는 점이었다. 즉 이제 까지 우리는 OS의 Process management를 살펴보면서 CPu scheduling과 동기화 문제들을 다루었었고 이제는 OS에 memory management를 다루어 보려고 한다. H/W들 즉 자원들을 적절히 관리하여 Application들에게 나누어 주는 게 OS였고 이제는 두 번째로 중요한 메인 메모리 관리에 대해서 얘기해보자. 시간이 지나면서 처리하는 데이터가 커지고 프로그램 크기가 증가하면서 메모리에 용량은 커졌지만 여전히 메모리..