분류 전체보기 329

22.03.10 - 캡슐화, 객체, 접근 제어자, Set/Get함수

추상화와 캡슐화 대상 객체의 수많은 정보 중에 필요한 정보만 추출해서 단순화시키고 추상화시켜서 컴퓨터에 입력! (건담 프라하 / 모델링 등) 컴퓨터가 알아들을 수 있는 정보로 입력 ( 데이터 타입 / 언어 (C++, java 등) ) 캡슐화 ( 단순화한 정보들 입력 – 클래스 데이터 타입과 클래스명 안에다가 입력 ) 멤버 변수는 속성 나타냄 (prosperity) ( attribute ) / 다른 객체와 구별되는 값! / a, b가 구별되는 값 객체 Son a; Son이라는 데이터 타입으로 a라는 변수를 만든 것이고 a 변수의 속성을 입력한 것 Son b; Son이라는 데이터 타입으로 b라는 변수를 만든 것이고 b 변수의 속성을 입력한 것 클래스형 데이터 타입으로 만들어진 변수를 객체라고 한다. ( 변수..

Back-end/C++ 2022.03.13

JAVA - 배열, 이차원배열

배열의 저장구조 arr 호출 => 배열은 논리형 배열로 => stack 공간에 위치 new로 불린 int 4개짜리 배열은 => 진짜 데이터 가지는 공간으로 => heap 메모리에 위치 ( 0x는 16진수라는것 표시해 주기 위해서 ) 배열이 0부터 시작하는이유 arr [0] 은 0x1234 로부터 0 떨어진 부분부터 시작 arr [1] 은 0x1234 로부터 1만큼 떨어진 부분부터 시작 배열의 초기화 for문을 이용한 초기화 1~10 사이의 랜덤 정수 뽑아내는 방법 배열 전체 출력하기 배열 전체 출력 Arrays.toString( ); Q1. Q2. 동그라미 친 부분 => arr은 123 번지 주소 값을 참조하고있고 => 123번지에는 행의 개수만큼 공간이 존재하고 => 그 공간들은 또다시 주소값을 가진다..

Back-end/JAVA 2022.03.13

22.3.8. - 기초 개념 정의

첫 번째 프로그래밍 언어를 배우는 목적은? - 컴퓨터 일 시키려고 / 사람의 언어를 컴파일시켜서 컴퓨터의 언어로 컴퓨터 장치들 연산장치 (CPU) 저장장치 (ram / HDD ) 입출력 장치 ( 모니터/스피커/키보드/마우스 등) OS - 운영체제 ( 윈도우/ 리눅스/ 안드로이드 등) 프로그램 작동 구조 프로그램 설치 시 하드디스크에 저장된다. 저장된 프로그램은 메모리에 올라간다. cpu가 메모리에 올라가 있는 프로그램 명령어 불러다가 읽어가면서 실행되는 것이다. 이때 cpu는 1초에 100만 HDD는 1초에 5만 읽을 수 있다고 한다면 모든 장치는 HDD 속도에 맞춰진다. 1:1로 작용한다고 하면 cpu의 95%가 노는 중이다. 이 시간을 cpu idle 타임이라고 한다. 이 시간을 줄이기 위해 cpu와..

Back-end/C++ 2022.03.13

JAVA - 조건문,반복문

1. 홀수 / 짝수 판별 출력 2. 문자열로 연산기호를 받아서 수행 결과 출력 3. 이중 for문으로 별 찍기 4. 문자열 합쳐서 출력하기 5. 카페 주문 프로그램 작성 1. 홀수 / 짝수 판별 출력 2. 문자열로 연산기호를 받아서 수행 결과 출력 3. 이중 for문으로 별 찍기 4. 문자열 합쳐서 출력하기 5. 카페 주문 프로그램 작성 review 국비교육 시작 전 예습할 수 있는 자료를 학원에서 제공해 주어서 예습 겸 복습 겸 강의를 보고 있다. 강의를 들으면서 기존에 알고 있던 내용에 추가되는 부분과 응용/변형되는 부분 위주로 정리하고 있다. 새로운 문제들 풀어보면서 체크포인트! ② - charAt(0)으로 입력받아 switch-case로 반복 ③ - 입력값 a를 a/2로 상단부와 하단부 나누어서 ..

Back-end/JAVA 2022.03.10

공부 계획 수정 및 최근 근황

최근 근황 정리 1. 국비교육받을 과정과 학원을 정했다. 학원을 정하기까지 강남의 4~5 곳의 학원에서 상담을 받았다. 내가 원하던 교육과정이 아니었던 곳도 있었고, 일정이 안 맞는 곳도 있었고, 학원이 마음에 안 드는 곳도 있었다. 최종적으로 선택한 학원은 교육과정도 내가 원했던 java와 spring 집중으로 다루어지는 과정이었고, 강의 수강 전에 테스트와 면접까지 이루어지는 곳이라서 보다 좋은 팀원들과 교육기간 끝까지 같이 마무리할 확률이 높아진다는 점에서 좋게 생각되었다. 다만 내가 3월 5일~3월 15일쯤 시작하는 과정을 생각하고 있었는데, 인원이 꽉 차서 4월 7일 시작으로 바뀌었다. 이 과정에서 짜 놓은 공부계획에 변경이 생겼지만, 이 부분도 상담을 통해서 잘 변경하였다. 2. 정보처리기사 ..

정렬 알고리즘 - O(logN) - 퀵 / 병합/ 힙

평균 수행 시간이 O(logN)인 알고리즘 한번 수행될 때마다 정렬되어야 하는 수의 범위가 1/2로 줄어드는 경우 퀵 정렬 이외의 다른 알고리즘은 추가적인 메모리가 필요함 퀵 정렬(Quick Sort), 병합 정렬(Merge Sort), 힙 정렬(Heap Sort) Merge Sort 병합 정렬은 메모리를 가지고 있다. 처음에 엘리먼트들을 분배. 다시 병합을 하면서 처음에는 2개짜리로 2개 2개를 - 4개짜리로 4개 4개를 8개짜리로 병합하면서 정렬 Heap Sort 실제 구현은 배열로 많이 한다. 추상적으로 나타낼 때는 밑에 이미지처럼 나타낸다. 가장 작은 값 맨 위로 하면 min heap 반대는 max heap EX) 우선순위 가장 높은 애 먼저 할 때 maxheap 우선순위 해서 사용 가능 Heap..

정렬 알고리즘 - O(n^2) - 버블 / 삽입 / 선택

평균 수행 시간이 O(n^2)인 알고리즘 버블 정렬(Bubble Sort), 삽입 정렬(Insertion Sort), 선택 정렬(Selection Sort) 각 요소가 다른 요소와 평균 한번 이상씩 비교를 하여 정렬됨 min 정렬 기준 선택 정렬 -> 배열 요소 중에 가장 작은 값 선택해서 뽑아와서 정렬 버블 정렬 -> index 0-1 자리 비교 - 큰 값 1 자리로 -> 1-2 비교 - 큰 값 2로 -> 1번 수행할 때마다 가장 큰 값 맨 뒤로 정렬 삽입 정렬 -> 0-1 자리 비교해서 정렬된 상태에서, 추가로 하나하나 삽입해서 정렬하는 방식 -> 삽입 방법 : 이전 요소들과 비교 - 작으면 앞으로 - 크면 비교한 요소 뒤에 위치하도록 정렬 3개의 정렬 방식 모두 수행 속도가 요소 n개에 의존하고, ..

정렬된 수에서 하나의 수의 위치 찾기

문제 정의 여러 개의 수가 정렬된 순서로 있을 때 특정한 수를 찾는 방법 단순 반복문을 이용하면 수의 개수에 따라 비교 횟수가 증가하는 O(n)의 수행이 이루어짐 수가 정렬된 상태에서는 이진 탐색(binary search)을 활용하면 매번 비교되는 요소의 수가 절반으로 감소될 수 있으므로 O(logN)의 수행으로 원하는 수를 찾을 수 있음 수의 예 : [12, 25, 31, 48, 54, 66, 70, 83, 95, 108] 83의 위치를 찾아보세요 88의 위치를 찾아보세요 해결 방법 수가 정렬된 상태이므로 중간의 값을 하나 선택한다. 찾으려는 값이 그보다 크면 범위를 오른쪽으로 그보다 작으면 범위를 왼쪽으로 좁힐 수 있다. 한번 비교 할때 마다 1/2씩 범위가 좁혀진다. 나의 시도... 실패. whil..

나열된 수에서 최솟값 최댓값 구하기

문제 정의 여러 개의 수가 배열에 있을 때 그중 가장 큰 값과 가장 작은 값을 찾는다. 배열의 몇 번째에 있는지 순서를 찾는다. 반복문을 한번만 사용하여 문제를 해결한다. 수의 예 : [10, 55, 23, 2, 79, 101, 16, 82, 30, 45] 해결하기 배열에 있는 수 중 맨 처음에 있는 값을 max와 min으로 가정하고, 배열의 마지막 숫자까지 비교하면서 더 큰 수나 더 작은 수가 나올 때 max와 min의 값을 바꾸도록 한다. 그때의 위치를 변수에 저장한다. 변수 선언 나열된 수의 배열 가장 큰 값 max 가장 작은 값 min 위치 표시 해줄 maxPos / minPos -> 0번째부터 반복문 선택 for - if - if 포인트! 배열의 끝까지 확인 numbers.length ( len..

wait( ) / notify( ) 메서드

wait( ) / notify( ) 메서드를 활용한 동기화 프로그래밍 리소스가 어떤 조건에서 더 이상 유효하지 않은 경우 리소스를 기다리기 위해 Thread 가 wait() 상태가 된다. wait() 상태가 된 Thread은 notify()가 호출될 때까지 기다린다. 유효한 자원이 생기면 notify()가 호출되고 wait() 하고 있는 Thread 중 무작위로 하나의 Thread를 재시작하도록 한다. 오래 기다렸거나, 우선순위 높은 Thread가 먼저 재시작되는 것이 아닌 무작위 - 영원히 선택되지 못하는 Thread 있을 가능성 존재 - notifyAll() 호출 권장 notifyAll()이 호출되는 경우 wait() 하고 있는 모든 Thread가 재시작 된다. 이 경우 유효한 리소스만큼의 Threa..