본문 바로가기

분류 전체보기116

객체 지향 프로그래밍 객체 지향 프로그래밍(OOP: Object Oriented Programming)이란 현실 세계에서 어떤 제품을 만들 때, 부품을 먼저 개발하고 이 부품들을 하나씩 조립해서 완성된 제품을 만들 듯, 소프트웨어를 개발할 때도 부품에 해당하는 객체들을 먼저 만들고, 이것들을 하나씩 조립해서 완성된 프로그램을 만드는 기법이다. - 객체(Object): 물리적으로 존재하거나 추상적으로 생각할 수 있는 것 중 자신의 속성을 가지고 있고 다른 것과 식별 가능한 것 객체는 속성과 동작으로 구성 되어 있다. (ex. 사람 - (속성)이름, 나이 등 / (동작)웃다, 먹다 등) 자바는 이 속성과 동작들을 각각 필드(field)와 메소드(method)라고 부른다. - 객체 지향 프로그래밍의 특징 : 캡슐화, 상속, 다형성.. 2022. 8. 26.
12. 그룹 알고리즘 (Group Algorithm) //[?] 컬렉션 형태의 데이터를 특정 키 값으로 크룹화 import java.util.Arrays; import java.util.ArrayList; import java.util.List; public class GroupAlgorithm2 { /** * 테스트용 레코드 클래스 */ public static class Record { private final String name; // 상품명 private final int quantity; // (int: 상수) 수량 public Record (String name, int quantity) { this.name = name; this.quantity = quantity; // 초기화 } // name, quantity의 속성 만들기 => get .. 2022. 8. 8.
11. 최빈값 알고리즘(Mode Algorithm) //[?] 주어진 데이터에서 가장 많이 나타난(중복된) 값 /** * 최빈값 알고리즘(Mode Algorithm): 점수 인덱스(0점~100점)의 개수(COUNT)의 최댓값(MAX) */ public class ModeAlgorithm { public static void main(String[] args) { //[1] Input int[] scores = { 1, 3, 4, 3, 5 }; // 0~5까지만 들어온다고 가정 int[] indexes = new int[5 + 1]; // 0~5까지: 점수 인덱스의 카운터 int max = Integer.MIN_VALUE; // MAX int mode = 0; // 최빈값이 담길 그릇 //[2] Process for (int i = 0; i < scores.. 2022. 8. 8.
10. 병합 알고리즘(Merge Algorithm) //[?] 2개의 정수 배열 합치기: 단, 2개의 배열은 오름차순으로 정렬 되어 있다고 가정 /** * 병합 알고리즘(Merge Algorithm): 오름차순으로 정렬되어 있는 정수 배열을 하나로 병합 */ public class MergeAlgorithm2 { public static void main(String[] args) { int[] first = { 1, 3, 5 }; int[] second = { 2, 4 }; int M = first.length; int N = second.length; // M:N 관행 int i = 0; int j = 0; int k = 0; // i, j, k 관행 int[] merge = new int[M + N]; // 병합된 배열 while (i 2022. 8. 8.
9. 검색 알고리즘(Search Algorithm) //[?] 정렬 되어 있는 데이터를 이진 검색(이분 탐색)을 사용하여 반씩 나눠서 검색 /** * 검색 알고리즘(Search Algorithm): 주어진 데이터에서 특정 데이터 찾기 */ public class SearchAlgorithm2 { public static void main(String[] args) { int[] data = { 1, 3, 5, 7, 9 }; // 오름차순으로 정렬 되어 있다고 가정 int N = data.length; // 의사코드 int search = 3; // 검색할 데이터 boolean flag = false; // 찾았으면 true 그렇지 않으면 false int index = -1; // 찾은 위치(인덱스) //이진 검색(Binary search): Full s.. 2022. 8. 8.
8. 정렬 알고리즘(Sort Algorithm) //[?] 무작위 데이터를 순서대로 [오름차순|내림차순] 정렬 /** * 정렬 알고리즘: 가장 [작은|큰] 데이터를 왼쪽으로 순서대로 이동 */ public class SortAlgorithm2 { public static void main(String[] args) { int[] data = { 3, 2, 1, 5, 4 }; int N = data.length; // 의사코드(슈도코드) 형태로 알고리즘을 표현하기 위함 for (int i = 0; i data[j]) { int temp = data[i]; //a data[i].. 2022. 8. 8.