자바 6

이진검색[binary search]

이진 검색(binary search) 이진 검색은 선형 검색보다 좀 더 빠르게 검색할 수 있다는 장점이 있다. 요소가 오름차순 또는 내림차순으로 정렬된 배열에서 검색하는 알고리즘이다. 검색을 반복할 때마다 범위가 절반이 되므로 검색에 필요한 비교 횟수의 평균값은 log n이다. 실패할 경우는 log(n+1)회, 검색에 성공한 경우는 log(n-1)회이다 n개의 요소가 오름차순으로 늘어선 배열 a에서 키를 검색하는 과정을 일반적인 방법으로 표현하면 검색 범위 맨 앞 인덱스를 pl, 맨 끝 인덱스를 pr, 중앙 인덱스를 pc라고 지정 검색을 시작할 때는 pl은 0으로, pr은 n-1로, pc는 (n-1)/2로 초기화된다. public class BinSearch { //요솟수가 n인 배열 a에서 key와 같..

ALGORITHM 2022.01.26

[기술면접] JAVA 프로그래밍 면접 예상 질문과 답변

기술면접 준비 Programming 프로그램이란? 컴퓨터가 사람 일을 할 수 있도록 해 주는 것 컴퓨터에 처리되는 작업의 순서를 논리적으로 명령어로 작성하는 것 JAVA언어의 장점은? 객체지향형 프로그래밍 언어 독립적인 플랫폼 높은 이식성과 바이트 코드 라이브러리 지향성과 보안성 멀티 스레드와 가상머신 객체지향 언어(Object Oriented Language)의 장점과 등장한 배경 코드의 재사용성이 높다 코드의 관리가 용이하다 제어자와 메서드를 이용해 데이터를 보호하고, 올바른 값을 유지하며, 코드의 중복을 제거해 오작동을 방지 Primitive Type과 Reference Type이란? Primitive Type은 변수에 값 자체를 저장하며, Reference Type은 메모리상에 객체가 있는 위치를..

JAVA 2022.01.06

[ALGORITHM] 다차원 배열(한 해의 경과 일 수 계산)

# 다차원 배열 > 배열을 구성 요소로 하는 것이 2차원 배열, 2차원 배열을 구성 요소로 하는 것이 3차원 배열이고, > 이런 배열을 보통의 배열(1차원 배열)과 구별하기 위해 다차원 배열이라고 한다. ## 한 해의 경과 일 수를 계산하는 프로그램 예를 들어 4월 15일의 경과 일 수를 구하면 -> 1월의 일 수 + 2월의 일 수 + 3월의 일 수 + 15 일반적으로 나타내면 m월 d일의 그 해의 경과 일 수는 ->1월,2월....m-1월일 일 수의 합 + d public class DayOfYear { // 각 달의 일수 static int[][] mdays = { {31,28,31,30,31,30,31,31,30,31,30,31}, //평년 {31,28,31,30,31,30,31,31,30,31,3..

ALGORITHM 2022.01.04

[자바의 정석] 6장 연습문제 풀이

- 내가 적은 답 - iv = 인스턴스 변수 -> 인스턴스가 생성될 때 생성된다. - cv = 클래스 변수 -> 클래스가 생성될 때 생성된다. - 라인 A/B/D - 인스턴스 변수(메서드)는 인스턴스가 생성될 때 만들어지고, 클래스 변수(메서드)는 클래스가 메모리에 올라갈 때 만들어진다. - 클래스변수에 인스턴스 변수를 저장하는것은, 인스턴스 변수가 생성되었는지 모르기 때문에 불가. - 마찬가치로 인스턴스 변수(메서드)가 생성되었는지 확인할 수 없는데, 스태틱메서드에서 사용불가. - 정답 - ㅇㄹㄴ - 오답노트 - - 내가적은답 - - 정답 - ㄹㅇㄴ - 오답노트 - ㄹㄴㅇ - 정답 public class Practice_6_20 { public static int[] shuffle(int[] arr) ..

JAVA 2022.01.04

[ALGORITHM] 소수의 나열

소수의 나열 소수는 자신과 1 이외의 정수로 나누어떨어지지 않는 정수 ex) 1,3,5..... 2부터 n-1까지의 어떤 정수로도 나누어떨어지지 않음 package ch2; public class PrimeNumber1 { public static void main(String[] args) { int counter = 0; for (int n = 2; n < 1000; n++) { int i; for (i = 2; i < n; i++) { counter++; if (n % i == 0) // 나누어 떨어지면 소수가 아님 break; // 더 이상의 반복은 불필요 } if (n == i) // 마지막까지 나누어떨어지지 않음 System.out.println(n); } System.out.println("..

ALGORITHM 2021.12.31