분류 전체보기(39)
-
[BOJ] 모노미노도미노::알고리즘
출처 : https://www.acmicpc.net/problem/19235 19235번: 모노미노도미노 모노미노도미노는 아래와 같이 생긴 보드에서 진행되는 게임이다. 보드는 빨간색 보드, 파란색 보드, 초록색 보드가 그림과 같이 붙어있는 형태이다. 게임에서 사용하는 좌표 (x, y)에서 x는 행, www.acmicpc.net 해당 문제는 빨간색 보드에서 파란색 보드와 초록색 보드로 좌표에 따라 블록이 이동하는 게임입니다. 블록의 종류는 1x1, 1x2, 2x1이 있습니다. 해당 문제의 마지막 테스트케이스인 예제 7번을 수행하게 되면 다음 그림과 같이 배치됩니다. 파란색 보드에서 열 부분이 모두 채워지거나 초록색 보드에서 행 부분이 모두 채워지면 점수를 획득합니다. 열이나 행 부분이 모두 채워지지 않은 ..
2020.07.19 -
컴파일 에러와 런타임 에러::에러
에러의 종류로는 크게 컴파일 에러와 런타임 에러가 있습니다. 1. 컴파일 에러(Compile Error) 문법을 잘못 작성해 프로그램을 컴파일할 수 없는 에러입니다. 에러 메시지를 통해 에러가 발생한 부분을 확인해 비교적 쉽게 해결할 수 있습니다. ex) ';'(세미클론)이 누락된 문법 에러 괄호가 맞지 않는 구문 에러 interface 사용 시 함수의 구체적인 내용을 적지 않은 에러 2. 런타임 에러(Runtime Error) 프로그래머의 설계 미숙으로 프로그램 실행 중 발생하는 에러입니다. 에러 발생 시 프로그래머가 역추적해 원인을 확인해야 합니다. ex) NullPointerException(생성되지 않은 객체를 참조할 때 발생) Infinite Loop(무한 루프) ArithmeticExcepti..
2020.07.07 -
페이지 교체 알고리즘(LRU, LFU, MFU)::운영체제
프로세스가 특정 페이지를 요구할 때 해당 페이지를 물리 메모리에 load합니다. 메모리에 필요한 페이지가 있을 경우 바로 사용할 수 있지만, 페이지가 없을 경우(page-fault) 하드디스크에서 페이지를 찾아야 하기 때문에 많은 시간이 소비됩니다. 페이지를 교체하는 가장 단순한 방법으로 FIFO(First In First Out) 알고리즘이 있습니다. 메모리에 load된 페이지 중 가장 오래된 페이지를 교체합니다. 페이지가 올라온 순서를 큐(Queue)에 저장해 순서대로 교체합니다. 하지만, 활발하게 사용하고 있는 페이지를 계속해서 교체될 경우, 페이지 부재율이 높아 성능이 낮습니다. 따라서 한정된 메모리에서 교체할 희생 프레임을 찾고, 적절한 페이지로 교체해 성능을 높일 수 있는 페이지 교체 알고리즘..
2020.07.07 -
가비지 컬렉션(GC) 알고리즘과 여러 방법::자바
가비지 컬렉션(Garbage Collection)이란? Java 애플리케이션에서 사용하지 않는 메모리를 자동으로 해제하는 기능입니다. 전통적인 C언어에서는 malloc(), free() 등을 이용해 메모리를 할당하고, 수동으로 메모리를 해제해야 했습니다. 하지만 Java에서는 GC 기술을 이용해 자동으로 메모리를 해제하여 개발자에게 메모리 관리로부터 자유롭게 해 주었습니다. 우선, 애플리케이션에서 사용하는 영역은 New/Young(Eden, Survivor1, Survivor2)과 Old가 있습니다. Eden 영역은 자바 객체가 생성되자마자 저장되는 장소입니다. New/Young 영역의 GC를 Minor GC라고 하고, Old 영역의 GC는 Full FC라고 합니다. Full GC가 발생하면 순간적으로 ..
2020.07.07 -
[BOJ] 최단경로(with Java, C++ code)::알고리즘
문제 출처 : BOJ(https://www.acmicpc.net/problem/1753) 보통 그래프에서 정점끼리의 최단경로를 구하는 문제는 4가지가 있습니다. 1) 하나의 정점에서 다른 하나의 정점까지의 최단경로를 구하는 문제 2) 하나의 정점에서 모든 정점까지의 최단경로를 구하는 문제(다익스트라 알고리즘) 3) 모든 정점에서 하나의 정점까지의 최단경로를 구하는 문제 4) 모든 정점에서 모든 정점까지의 최단경로를 구하는 문제(플로이드 와샬 알고리즘) 추가로 모든 정점을 최소비용으로 연결하는 문제(MST: Minimum Spanning Tree, 최소 신장 트리)는 2가지가 있습니다. 5) 모든 정점까지의 최소비용을 오름차순으로 정렬해 연결하는 문제(크루스칼 알고리즘) 6) 하나의 정점에서 모든 정점까지..
2020.07.07 -
[프로그래머스] 하노이의 탑::알고리즘
문제 출처 : Programmers(https://programmers.co.kr/learn/courses/30/lessons/12946) 하노이의 탑(Tower of Hanoi)은 퍼즐의 일종입니다. 세 개의 기둥과 이 기둥에 꽂을 수 있는 크기가 다양한 원판들이 있고, 퍼즐을 시작하기 전에는 한 기둥에 원판들이 작은 것이 위에 있도록 순서대로 쌓여 있습니다. 게임의 목적은 두 가지 조건을 만족시키면서 한 기둥에 꽂힌 원판들을 그 순서 그대로 다른 기둥으로 옮겨서 다시 쌓는 것입니다. 1) 한 번에 하나의 원판을 옮길 수 있습니다. 2) 큰 원판이 작은 원판 위에 있어서는 안됩니다. 하노이의 탑 문제는 재귀 호출을 이용해 풀 수 있는 가장 유명한 예제 중 하나입니다. 출처 위키백과(https://ko...
2020.07.06