문제 https://www.acmicpc.net/problem/2839 2839번: 설탕 배달 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그 www.acmicpc.net 풀이 크게 두가지 방법으로 풀 수 있다. 하나는 반복문과 재귀를 사용하여 나머지 하나는 DP를 사용하여 풀었다. 오히려 DP를 사용하는 것이 반복문보다 많은 시간이 걸렸다. 반복문 이용 public class BOJ_2839_Sol1 { public static void main(String[] args) throws NumberFormatException, IOException { BufferedRe..
전체 글
Software Developer who want to develop a customer-satisfying service문제 https://www.acmicpc.net/problem/2630 2630번: 색종이 만들기 첫째 줄에는 전체 종이의 한 변의 길이 N이 주어져 있다. N은 2, 4, 8, 16, 32, 64, 128 중 하나이다. 색종이의 각 가로줄의 정사각형칸들의 색이 윗줄부터 차례로 둘째 줄부터 마지막 줄까지 주어진다. www.acmicpc.net 풀이 분할정복 문제를 많이 풀어보지 않아 꽤 어려워 솔루션을 참고한 문제.. 핵심은 전체 N크기를 2등분씩 하면서 1,2,3,4 분면씩 나누어 분할 탐색하는 것이 포인트 처음에 해당 사분면의 r,c 값과 r+size, c+size까지 돌면서 흰색인지, 파란색인지 체크하면된다. 만약 size크기만큼 탐색하면서 처음 temp에 넣었던 값과 다른값이 나온다면 boolea..
문제 http://www.jungol.co.kr/bbs/board.php?bo_table=pbank&wr_id=1101&sca=99&sfl=wr_subject&stx=%EB%83%89%EC%9E%A5%EA%B3%A0 JUNGOL www.jungol.co.kr 풀이 전형적인 그리디 문제 N개씩 최저 보관 온도 xi와 최고 보관 온도 yi 가 입력된다. 문제에서는 모든 화학물질을 보관할 수 있는 냉장고의 수를 구하는 것이 목적이다. 문제 접근 방법은 다음과 같다. 최고온도 yi를 기준으로 오름차순 정렬한다. (xi, yi 배열 ) 첫번째 화학물질의 최고온도를 maxDegree라는 변수에 할당한다 두번째 화학물질 부터 최저온도와 maxDegree값을 비교한다. 만약 최고온도 maxDegree와 다음 화학물질 ..
0. 학습할 것 애노테이션 정의하는 방법 @retention @target @documented 애노테이션 프로세서 1. 어노테이션 이란? 자바를 개발한 사람들은 소스코드에 대한 문서를 따로 만들기보다 소스코드와 문서를 하나의 파일로 관리하는 것이 낫다고 생각했다. 그래서 소스코드의 주석 '/** ~ */' 에 소스코드에 대한 정보를 저장하고, 소스코드의 주석으로부터 HTML 문서를 생성해내는 프로그램(javadoc.exe)를 만들어 사용했다. 위와 같이 소스코드 안에 다른 프로그램(ex: javadoc.exe)을 위한 정보를 미리 약속된 형식으로 포함시킨 것이 바로 애노테이션이다. 어노테이션은 JEE5부터 추가된 요소로 사전적 의미로는 주석을 의미한다. 하지만 자바에서는 단순 주석이 아닌 클래스에 특수..
0. 학습할 것 enum 정의하는 방법 enum이 제공하는 메소드 (values()와 valueOf()) java.lang.Enum EnumSet 1. Enum 이란 enum이란 enumerated type의 줄임말로 멤버라 불리는 명명된 값의 집합을 이루는 자료형이다. 즉, 열거형에 사용될 수 있는 특정한 값들을 정의해서 해당 값들만 사용할 수 있게 한다. 참고로, 열거자 이름들은 일반적으로 해당 언어의 상수 역할을 하는 식별자이다. 열거형은 서로 관련된 상수를 편리하게 선언하기 위한 것으로 여러 상수를 정의할 때 사용하면 유용하다. 자바는 C언어와 다르게 열거형이라는 것이 존재하지 않았으나 JDK 1.5부터 새로 추가되었다. 자바의 열거형은 C언어의 열거형보다 더 향상된 것으로 열거형이 갖는 값뿐만 ..
1. 순열(Permutation) 서로 다른 것들 중 몇 개를 뽑아서 한 줄로 나열하는 것 서로 다른 n개 중 r개를 택하는 순열은 아래와 같이 표현할 수 있다. 수식으로 나타내면 다음과 같다. 위 식을 간략화 하면 다음과 같다 순열 만드는 방법으로 반복문과 재귀문을 활용한 방법이 있다. 먼저 반복문으로 순열을 구하는 방법은 다음과 같다. 기존 수와 중복되지 않게 숫자를 한 개씩 뽑는 일을 가능한 모든 수에 대해 반복해서 시도한다. 목표하는 횟수만큼 "1"을 반복 (뽑는 횟수가 고정되어 있다면 목표하는 횟수까지 돌아가는 반복문으로 해결할 수 있지만, 정해지지 않았다면 뽑는 횟수만큼 재귀적으로 호출하는 구조를 이용하는 것이 적합할 수 있다.) (여기를 참고) 아래 코드는 반복문을 이용해 배열의 원소를 sw..
0.학습할 것 Thread 클래스와 Runnable 인터페이스 Main 쓰레드 쓰레드의 우선순위 동기화 쓰레드의 상태 데드락 0-1. 용어(개념) 정리 프로세스(Process) 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램 메모리에 올라와 실행되고 있는 프로그램의 인스턴스(독립적인 개체) 운영체제로부터 시스템 자원을 할당받는 작업의 단위(동적인 개념으로는 실행된 프로그램을 의미) 특징 프로세스는 각각 독립된 메모리 영역(Code, Data, Stack, Heap의 구조)을 할당받는다. 기본적으로 프로세스당 최소 1개의 스레드(메인 스레드)를 가지고 있다. 각 프로세스는 별도의 주소 공간에서 실행되며, 한 프로세스는 다른 프로세스의 변수나 자료구조에 접근할 수 없다. 한 프로세스가 다른 프로세스의 자..
RAID Architecture Redundant Array of Inexpensive Disks (RAID) 여러 개의 물리 disk 를 하나의 논리 disk 로 사용 (OS support, RAID controller) Disk system 의 성능 향상을 위해 사용: Performance (access speed), Reliability의 측면에서 생각해 볼 수 있음 RAID 0 Disk striping 논리적인 한 block 을 일정한 크기로 나누어 각 disk에 나누어 저장 OS입장에서 하나의 disk안에 연속된 블록들의 집합이 존재 블록단위로 A, B, C, D를 분할해서 저장 예를들어 프로세스가 데이터를 읽는데 A,B,C,D를 거쳐서 읽는다고 가정하면 일반적인 읽는시간은 4 그러나 block..
Disk Scheduling Disk access 요청들의 처리 순서를 결정 Disk system의 성능을 향상함 - 평가기준 Throughput: 단위 시간당 처리량 Mean response time: 평균 응답 시간 Predictability: 응답 시간의 예측성, 요청이 무기한 연기(starvation) 되지 않도록 방지) Disk access time (디스크가 데이터를 읽어오는 시간) Seek time: 디스크 head 를 필요한 cylinder 로 이동하는 시간 Rotational delay: 1) 이후에서 부터 필요한 sector가 head 위치로 도착하는 시간 Data transmission time: 2) 이후에서 부터 해당 sector 를 읽어서 전송(or 기록) 하는 시간 Disk S..
1. 자동완성 환경설정 이클립스에서 인텔리제이 처럼 자동완성을 사용하고 싶을 것이다. 코드 상에서 . 을 치면 IDE가 코드를 추천해주는데 인텔리제이 처럼 코드를 작성할 때마다 추천 항목을 보고 싶을 것이다. 이클립스 환경설정에서 다음과 같이 설정하자 상단메뉴에서 Window > Preferece > Java > Editor > Content Assist 클릭 Auto activation triggers for java 에 아래 문자열 복사해서 붙여넣기 하자 Preferece > Java > Editor > Content Assist) Disable insertion triggers except 'Enter' 를 체크하면 문제가 발생하지 않는다. 2-2. 이클립스 2018-09 이하 해결법은 링크1, 링..