본문 바로가기

java29

알고리즘 - 이분탐색(Binary Search)과 매개변수 탐색(Parameter Search) (Java, Python) 1. 이분탐색1) 개념 원하는 데이터를  찾기 위해 정렬되어 있는 배열에서 탐색 범위를 절반씩 좁혀가며 데이터를 탐색하는 방법이다.이를 위해 반드시 데이터가 정렬되어 있어야 한다. 2) 알고리즘 단계1. 배열을 정렬한다. ( 기존에 배열이 정렬되어서 주어진다면 이 과정은 생략한다.)<p data-ke-size="s.. 2023. 4. 20.
(Java) SWEA 5650. 핀볼 게임 1. 문제 조건 어릴 때 하던 핀볼 게임을 코드로 구현해야 하는 문제. 핀볼 게임 판이 테스트케이스로 주어지며, 각 번호마다 핀볼 판의 상태를 나타내준다. 0번은 아무 블록도, 홀도 없는 상태 1번 ~ 5번은 각 번호에 해당되는 블록이 존재하며 블록에 모양에 따라 핀볼이 꺾이는 방향이 달라진다.(대각선 부분은 90도로, 아닌 부분은 반대방향으로 핀볼이 튕겨나가게 됨) 6번 ~ 10번은 나온다면 웜홀로 항상 두 개씩 나오며 같은 번호인 웜홀로 핀볼의 방향은 유지한 채 이동하게 된다. -1번은 블랙홀이며 블랙홀을 지나가면 핀볼이 빨려들어감으로써 게임이 끝나게 된다. 게임이 끝나는 조건은 처음 위치에 핀볼이 되돌아오거나 핀볼이 빨려들어가거나 두가지이다. (명심할 것) 또한, 핀볼은 상하좌우 이렇게 네 방향으로.. 2023. 4. 5.
패키지, import, 캡슐화, 접근제한자, 접근자, 설정자, static, JVM 메모리 구조 (Java) 접근 제한자접근제한을 할 때 패키지로도 접근제한 가능 패키지프로그램의 많은 클래스를 관리하기 위해 패키지 이용(컴퓨터의 폴더와 비슷)패키지는 클래스와 관련있는 인터페이스를 모아두기 위한 이름 공간(Name Space)패키지 구분은 .(dot) 연산자 이용 (컴퓨터에서 하위폴더 나타낼 때 \쓰는 것과 유사)패키지 이름은 시중에 나와 있는 패키지들과 구분되게 지어야함why ? 수백만개의 회사의 수많은 프로젝트들의 클래스 이름이 중복될 수 있기 때문에 패키지로 구분일반적으로 도메인.프로젝트이름.모듈이름ex. com.ssafy.project_이름.module_이름일반적으로 소속이나 회사의 도메인 사용중첩 가능(마치 컴퓨터의 하위폴더가 있듯이!)ex. List 사용 시 java.awt 안에 들어가 있는 것과 ja.. 2023. 4. 1.
[Java] 상속과 다형성 상속부모에서 private으로 막아놓은걸 자식이 오픈할 순 없음새로운 설계도를 만들 때 맨땅에서 새로 시작하는게 아니라 기존에 만들어둔 class에 플러스해서 새로운 걸 만들 수 있지 않을까? ⇒ 상속이란, 기존의 설계도를 재사용하기 위해 등장상속 : 어떤 클래스의 특성을 그대로 갖는 새로운 클래스를 정의한 것기존 클래스 : 상위 클래스, 부모클래스, super class상속받은 클래스 : 하위 클래스, 자식클래스, sub class⇒ 상속을 받은 자식 클래스를 호출하면 부모클래스를 먼저 호출. 부모클래스 도장 꽝 찍은 후 나머지 자식 클래스로도 도장 꽝!⇒ 그래서! 자식 클래스에서 부모클래스 내에 있던 메소드나 변수 볼 수 있는 거상속 안 받은 경우 : → 자동완성 창에 클래스 자기 자신의 이름이 뜸상.. 2023. 4. 1.
알고리즘 - 퀵정렬 - 호어 파티션 방식 import java.util.Arrays; public class 퀵정렬_호어파티션 { static int[] arr; static boolean[] flag; public static void main(String[] args) { arr = new int[] {3, 1, 4, 6, 9, 2, 8, 7, 5}; flag = new boolean[arr.length]; hoare(arr, 0, arr.length-1); System.out.println(Arrays.toString(arr)); } public static void hoare(int[]arr, int left, int right) { //피봇 정하기(이 경우 제일 왼쪽값으로 정한 것.) int pivot = arr[.. 2023. 3. 27.
알고리즘 - 병합정렬 - 자바코드로 구현한 병합정렬 package day0322_분할정복; import java.util.Arrays; public class 병합정렬 { static int[] arr; static int[] result; public static void main(String[] args) { arr = new int[] {3, 1, 4, 6, 9, 2, 8, 7, 5}; result = new int[arr.length]; sort(arr, 0, arr.length-1); System.out.println(Arrays.toString(result)); } public static void sort(int[]arr, int left, int right) { if(left>=right) return; //분.. 2023. 3. 27.