일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- bubble-sort
- 자료구조
- 백준 알고리즘
- 현대암호
- 공개키 암호
- 프로그래밍
- 암호론
- try&catch
- 객체지향
- 재귀호출기본
- JSP
- LANG
- lang package
- class
- 디렉티브
- 연결된 예외
- OOP
- jvm
- 자동 형변환
- 알고리즘
- 2884
- 클래스 패스
- BufferedWrite
- 형변환 연산자
- 예외처리
- HTML
- 객체
- 소수판정
- java
- 백준
- Today
- Total
목록컴퓨터 과학 (11)
코드일기장

배열은 데이터를 묶어 놓은 것으로 구조가 간단하고 데이터가 연속적으로 존재한다. 사용하기도 쉽고 데이터를 읽어 올 때는 걸리는 시간이 가장 빠르다는 장점도 가지고 있다. 배열은 장점만 가지고 있는 것은 아니다. 단점으로는 1. 크기를 변경할 수 없다. 크기를 변경할 수 없으므로 만약 배열 저장공간이 부족할 시 더 큰 배열을 생성하고 공간이 부족한 배열의 값들을 복사하고 참조를 변경해야 한다. 이런 과정으로 프로그램 동작 시간이 오래 걸린다. 충분히 큰 크기의 배열을 미리 생성시켜도 메모리가 낭비된다. 2. 비순차적인 데이터의 추가 또는 삭제에 시간이 많이 걸린다. (추가&삭제에 단점이 많음) 차례대로 데이터를 추가하고 배열의 마지막 위치에 있는 데이터들은 삭제하기 쉽고 빠르지만, 배열의 중간에 데이터를 ..

유클리드 호제법은 Euclidean Algorithm 은 두 개의 수에서 최대공약수를 구하는 알고리즘이다. 최대공약수를 간단하게 말하자면 두 수 사이의 소인수들의 곱이 최대공약수이다. 우리가 흔히 수기로 최대공약수를 구할 때 소인수분해를 프로그래밍 코드 작성하면 시간 복잡도가 매우 큰 프로그램이 될 것이다. 그 이유는 간단하다. 소인수분해를 하기 위해 소수를 찾아야 하고 그 소수가 두 개의 수에 공통적으로 나눌 수 있는지 여부를 확인해야 하기 때문이다. 코딩으로 최대공약수를 구한다면 시간 복잡도를 줄이기 위해 유클리드 호제법을 사용한다. 유클리드 호제법은 아주 간단하다. 예로 바로 들자면 정수 A = 24 정수 B = 18 두 수의 최대 공약수를 유클리드 호제법으로 구한다고 치자. 24%18 = 6 나머..

ArrayList는 컬렉션 프레임웍에서 가장 많이 사용되는 컬렉션 클래스일 것이다. ArrayList는 List인터페이스를 상속받은 클래스이다. List인터페이스로부터 상속받았기 때문에 데이터의 저장 순서가 있고 중복을 허용한다는 특징이 있다. ArrayList는 Vetor를 개선해서 만든 것으로 Vector와 구현원리와 기능적인 측면이 매우 흡사하다. ArratyList는 Object배열을 이용해서 데이터를 순차적으로 저장한다. 흔히 사용하는 배열과 똑같다고 생각하면 된다. 예를 들어 Integer 5를 저장하면 Object배열 index0에 저장되고 다음 숫자는 index1... 이런 식으로 순서대로 쭉 저장된다. 배열과 ArrayList의 차이점은 배열은 한번 크기를 지정하면 크기를 다시 수정을 못..

2진 디지트, 논리 레벨, 디지털 파형 2진 시스템에서 두 개의 디지트는 1과 0이다. 이는 비트라고 불린다. 디지털 회로에서는 두 개의 다른 전압 레벨은 두 개의 비트를 표시한다. 일반적으로, 전압이 높은 쪽이 1 HIGH 전압이 낮은 쪽이 0 LOW로 표시한다. HIGH=1, LOW=0 논리레벨 전압은 논리 레벨이라고 불리는 1 과 0을 표시하는 데 사용된다. 실제 디지털 회로에서 HIGH는 정해진 최소치와 최대치 사이의 임의 값이면 HIGH이고, LOW도 정해진 최소치와 최대치 사이의 임의 값이면 LOW이다. 예를 들어 0V~2.3V의 값이 LOW 3.5V~5V가 HIGH라고 하자, 전압이 2.2V가 들어오면 LOW(2진 0)이고 전압이 4.5V 들어오면 HGH(2진 1)가 될 것이다. 그리고 2...

ListInterface(리스트 인터페이스)는 대표적인 선형 자료구조로 순서가 있고 중복을 허용한다. List는 우리가 흔히 사용하는 배열과 매우 유사하다. 배열을 쓸 때 배열의 길이를 10으로 선언하고 10 이상의 인덱스에 값을 넣으면 IndexOutofBoundsException이 발생한다. 이런 단점을 보완하여 List를 통해 '동적 크기'를 갖는다. 마치 배열처럼 사용할 수 있다. 배열과 List 인터페이스의 공통점과 차이점은 무엇일까? [공통점] 1. 동일한 특성의 데이터를 묶는다. 2. 반복문내에 변수를 이용하여 하나의 묶음 데이터들을 접근할 수 있다. [차이점-배열] 1. 처음 선언한 배열의 크기(길이)는 변경할 수 없다. 이것을 정적 할당(static allocation)이라고 한다. 2...

'자료구조' 자료구조는 Data Structure라고 한다. 보통 알고리즘 문제를 푸는데 많이 사용되며 알고리즘과 뗄 수 없는 관계이다. 어떤 알고리즘 문제를 풀기 위해 문제를 해석하고 다음으로 자료구조를 선택한다. 선택한 자료구조에 따라 더욱 효율적으로 알고리즘 문제를 풀 수 있다. 많은 프로그래밍 언어들은 기본적인 자료구조들을 라이브러리로 제공해준다. 자바에서의 대표적인 자료구조는 Collection이다. 컬렉션 (collection) - 여러 객체(데이터)를 모아 놓은 것 프레임웍(framework) - 표준화, 정형화된 체계적인 프로그래밍 방식 컬렉션 프레임웍(collections framework) - 컬렉션(다수의 객체)을 다루기 위한 표준화된 프로그래밍 방식 - 컬렉션을 쉽고 편리하게 다룰 ..

에라토스테네스의 체는 소수를 구하는 알고리즘으로 유명하다. "소수가 되는 수의 배수를 지우면 남은 건 소수가 된다는 알고리즘이다." 2부터 소수를 구하고자 하는 구간의 모든 수를 나열한다. 소수가 되는 수의 배수를 지우면 남은 건 소수이다. 2로 예를 들면 자기 자신을 제외한 2의 배수를 지운다. 3도 2처럼 3 자기 자신을 제외한 3의 배수들을 지운다. 특정 숫자만큼 이 과정을 반복한다. 에라토스테네스의 소수 찾기를 다시 간단히 정리해서 설명하면 i=2 일 때, 2를 제외한 2의 배수는 모두 2로 나뉘니 소수가 아니다. import java.io.*; public class PrimeNumber { public static void main(String[] args) throws IOException ..