분류 전체보기 (186) 썸네일형 리스트형 스택(Stack) Stack 겹겹이 쌓음이라는 의미 데이터를 일시적으로 저장 Last in First Out 형식 접근은 언제나 목록의 끝에서 발생 push - 데이터를 넣는 작업 pop - 데이터를 꺼내는 작업 top - 푸쉬와 팝을 하는 위치 bottom - 스택의 가장 아랫부분 사용법 ex) Stack을 import해서 사용하기 import java.util.Stack; Stack stack = new Stack(); Stack stack = new Stack(); //값추가 stack.push(); //값삭제 stack.pop(); //값 초기화 stack.clear(); ex) Stack 클래스 만들기 public class IntStack { private int max; // 스택 용량 private int .. JAVA(2022.06.08) - 람다식 람다(lamda) 익명 함수(Anonymous functions)를 지칭한다 함수를 단순하게 표현하기 위해 사용된다 사용방법 (매개변수목록) -> {함수몸체 } 타입을 추론할 수 있을 경우, 타입 생략 가능 매개변수가 하나일때 괄호 생략 가능 하나의 명령문으로 이루어졌을 때 중괄호 생략 가능 return문으로 이루어졌을 때 중괄호 생략 불가 ex1) 람다식을 통해 간단하게 표현하기 //기존코드 new Object() int min(int x, int y) { return x x < y ? x:y; ex2) return문은 중괄호 생략불가 //기존코드 int add(int x, int y) { return x+y; } //람다식(return문이기 때문에.. JAVA(2022.06.07) - 데몬 쓰레드 일반 쓰레드의 작업을 돕는 보조적인 쓰레드 일반 쓰레드가 모두 종료되면 데몬 쓰레드는 강제종료가 아닌, Runnable 상태로 돌아간다 > 매우 중요함 가비지 컬렉션, 워드 프로세서 자동저장, 화면 자동갱신 등에서 사용됨 setDaemon(true) 메소드를 사용하여야 하고, 스레드가 실행되기 전에만 호출해야 예외가 발생하지 않는다 무한루프와 조건문을 통해 대기하도록 만들고 조건 충족 시 작업 후 다시 대기하도록 만든다 코드예시 // Runnable을 구현하는 DaemonThread클래스를 작성 public class DaemonThread implements Runnable { // 무한루프안에서 0.5초씩 쉬면서 데몬쓰레드가 실행중입니다를 출력하도록 run()메소드를 작성 @Override publi.. JAVA(2022.06.06) - 쓰레드와 상태제어(wait, notify) wait와 notify는 동기화된 블록 안에서 사용해야 한다 wait()를 만나게 되면 MonitoringLock을 가지고 있는 경우 권한을 놓고 대기한다 ex) public class ThreadB extends Thread{ // 해당 쓰레드가 실행되면 자기 자신의 모니터링 락을 획득 // 5번 반복하면서 0.5초씩 쉬면서 total에 값을 누적 // 그후에 notify()메소드를 호출하여 wiat하고 있는 쓰레드를 깨움 int total; @Override public void run(){ synchronized(this){ for(int i=0; i Arrays.binarySearch - java는 배열에서 이진 검색을 하는 메소드를 표준 라이브러리로 제공한다 - java.util.Arrays 클래스의 binarySearch메소드가 있다 import java.util.Arrays; import java.util.Scanner; public class BinarySearchTester { public static void main(String[] args) { Scanner stdIn = new Scanner(System.in); System.out.print("요솟수 : "); int num = stdIn.nextInt(); int[] x = new int[num]; //배열생성 System.out.println("오름차순으로 입력하세요."); System.out.print("x[0].. 검색(선형 검색, 보초법,이진 검색 선형 검색 - 요소가 직선 모양으로 늘어선 배열에서 원하는 키 값을 갖는 요소를 만날 때까지 앞부터 순서대로 요소를 검색하는 방식 ex) import java.util.Scanner; public class SeqSearch { static int seqSearch(int[] a, int n, int key) { for (int i = 0; i 다차원배열과 확장 for문의 장점 다차원배열 다차원 배열의 복제는 최상위 1레벨만 수행된다 ex) int[][] a ={{1,2,3,4},{5,6,7}}; int[][] b = a.clone(); 일때, a[0]과 a[1]만 복제되고 그 아래 레벨의 배열은 복제되지 않고 공유된다 . 즉, 1과5만 복제된다는 것이다. 확장 for문 ex) for (int i =0; i>>>>>>>> sum = sum+i; } } 장점 - 배열의 요솟수(길이)를 조사하는 수고를 덜 수 있다 - iterator와 같은 방법으로 스캔할 수 있다 - 스캔은 확장 for문에 의해 구현하는 것이 좋다 에라토스테네스의 체 자바 소수판별 알고리즘을 공부하다보니 에라토스테네스의 체에 관련된 알고리즘을 보고 공부를 하게 되었다. 코딩테스트를 위해 클린코드를 지향하는 나로서 매우 중요한 부분인거 같아서 정리해보고자 한다. 에라토스테네스의 체는 N이하의 수들이 소수인지 아닌지 판별할 때, n(임의의 수)의 배수들을 모두 지움으로써 시간복잡도를 저하시킨다는 장점을 가지고 있다. 아래의 코드를 직접 살펴보며 공부하도록 하자 예시로 N을 16이라고 해보자. 배열은 index값이 0,1,2....16까지 있는 17의 크기를 가진 Boolean타입의 배열이 생성되었을 것이다. 16의 제곱근 값은 4가 되고, i=2, i 이전 1 ··· 13 14 15 16 17 18 19 ··· 24 다음