본문 바로가기

ALGORITHM/개념들6

[JAVA] 알고리즘을 최적화 해보자 1. Scanner 입력 대신 BufferedReader를 사용하자 왜? 효율면에서 훨씬 굳 (입력값이 많을수록) BufferedReader는 데이터를 사용자가 요청할 때마다 '매번' 읽어오기 (X) 일정량 사이즈로 '한 번에' 읽어온 후 버퍼에 보관. 사용자가 요구할 때 버퍼에서 읽어오게 한다. (O) -> 속도 향상, 시간 부하 줄일 수 있다 (Scanner의 버퍼 사이즈는 1024 chars VS BufferedReader의 버퍼 사이즈는 8192 chars) 얼마나 빠른지 밑에 사진 참고. (출처: 알고스팟) 깨알 지식: BufferedReader 나오고 난 뒤에 Scanner 나옴 각각 특징: Scanner: space를 모두 경계로 인식. 가공하기 쉽다. 효율 낮음 BufferedReader:.. 2019. 6. 24.
[Computational Thinking Skills] 프로그래밍과 논리/수학 SW Expert Academy - computational thinking skills 1. 프로그래밍과 논리/수학 문제 1: 사실-카드는 한 면은 알파벳, 다른 한 면은 숫자 주장-D 뒷면에는 숫자 3이 있다 문제-카드 [D, F, 3, 7]이 있을 때 어떤 카드를 뒤집어서 주장을 증명할 것인가? 문제 1 답: D, 7 F뒤에 3 이 있던 없던 주장과 상관 없음 3뒤에 꼭 d가 있어야 한다고 생각하기에 3을 뒤집어봐야한다고 생각하지만, 3뒤에 A가 있더라도 주장이 모순되지 않음 7을 뒤집어서 D가 있으면 주장이 깨지는 것이 증명되는 것이기에 7을 뒤집어봐야 함 문제 2: 규칙-20세 이하 맥주 마실 수 없음 문제-나이 혹은 마시고 있는 것을 표시한 다음 4명 중 확인이 필요한 사람은 몇 명이고 누구인.. 2019. 4. 27.
[JAVA] Stack 스택 자바 스택 기본 이론 출처: 스택 특징 java.util 패키지에 있다 벡터를 상속받고 있다 LIFO(Last-In-First-Out) 총 5가지 메소드 = 비어있는지 확인, 안에 특정요소가 잇는지 살펴보기, 요소를 넣고 빼고, 뭐가 있는지 살짝 보기 boolean empty() int search(Object o) int size(Object o) E push(E item) E pop() E peek() 5가지 메소드를 이용한 예제 코드 import java.util.*; public class Main { public static void main(String[] args){ Stack s = new Stack(); int[] num ={17, 5, 123, 252, 12}; System.out.pr.. 2019. 3. 31.
[JAVA] HashMap 해쉬 맵 HashMap 출처: 기본 지식 Hashing : 해시함수를 이용해서 데이터를 해시테이블에 저장하고 검색하는 기법을 말한다. HashMap vs TreeMap HashMap: 저장은 느리지만 많은 양의 데이터를 검색하는데 뛰어난 성능을 보인다. TreeMap: HashMap에 비해 저장이 빠르지만 데이터를 가져올 때 약간 느리다. Map 인터페이스 : 키(key)와 값(value)을 하나의 세트로 묶어서 저장하는 컬렉션 클래스를 구현하는 데 사용 키: 중복 가능 값: 중복 불가 아이디는 중복 불가능하나 1234를 비밀번호로 설정하는 것은 가능한 것처럼 또한, Key와 Value값에 null값을 허용하기 때문에 데이터가 빠져있어도 문제되지 않는다. void clear() : Map의 모든 객체를 삭제 bo.. 2019. 3. 31.
[JAVA] QUEUE 큐 출처: Queue 특징 : FIFO(First In First Out) 구조의 자료. 배드민턴 공 통을 생각하자 : Queue(큐) 클래스 인스턴스를 생성하기 위해선 아래와 같이 'LinkedList()' 생성자를 호출해야 함. Queue q = new LinkedList(); :push() 메소드만을 이용하여 데이터를 입력하면 스택처럼 동작 가능. 반대로, offer만을 이용하여 데이터를 입력하면 큐로 동작. 데이터 입력할 때 메소드를 잘 선택하여 입력 boolean add(E e) 해당 큐의 맨 뒤에 전달된 요소를 삽입함. 만약 삽입에 성공하면 true를 반환하고, 큐에 여유 공간이 없어 삽입에 실패하면 IllegalStateException을 발생시킴. boolean isEmpty() 큐가 비어있는.. 2019. 3. 31.
알고리즘 Pseudo-code 모음 ■ 순차검색 알고리즘 (Pseudo-code) void seqsearch(int n, // 입력(1) const keytype S[], // (2) keytype x, // (3) index& location) { // 출력 location = 1; while (location n) location = 0; } ■ 이분검색 알고리즘 void binsearch(int n, // 입력(1) const keytype S[], // (2) keytype x, // (3) index& location) // 출력 { index low, high, mid; low = 1; high = n; location = 0; while (low 2018. 12. 17.