전체 글 682

[CODE UP 기초 종합 100제] 1095, 1099 with JAVA

​ 지난 포스팅에 이어 코드업 100제를 풀면서 난해했던 문제들을 정리해볼까 한다. 문제 1097 [기초-2차원배열] 바둑알 십자 뒤집기(설명) C언어기초100제v1.2 : @컴퓨터과학사랑, 전국 정보(컴퓨터)교사 커뮤니티/연구회 - 학교 정보(컴퓨터)선생님들과 함께 수업/방과후학습/동아리활동 등을 통해 재미있게 배워보세요. - 모든 내용 codeup.kr import java.util.Scanner; public class Main { public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc = new Scanner(System.in); int[][] arr = new int[19][19]; int n; ..

문제풀이 2021.06.27

[CODE UP 기초 종합 100제] 1023, 1082 with JAVA

코드업 100제를 풀어보았다. 풀면서 난해했던 문제들을 정리해볼까 한다. 문제 1023 [기초-입출력] 실수 1개 입력받아 부분별로 출력하기(설명) C언어기초100제v1.2 : @컴퓨터과학사랑, 전국 정보(컴퓨터)교사 커뮤니티/연구회 - 학교 정보(컴퓨터)선생님들과 함께 수업/방과후학습/동아리활동 등을 통해 재미있게 배워보세요. - 모든 내용 codeup.kr import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String id; double input; input = sc.nextDouble(); String tmp = input+""..

문제풀이 2021.06.25

[알고리즘] 레드-블랙 트리의 시간복잡도가 O(log n)인 이유

우리는 좀 더 빠른 성능의 탐색을 위해 이진탐색트리를 사용한다. 배열은 탐색시, n개의 데이터를 최대 n번 비교한다. 하지만 이진탐색트리는 다르다. 탐색하려는 값과 기준이 되는 노드를 비교하여, 크면 오른쪽으로 작으면 왼쪽으로 가서 매 비교때 마다 탐색할 노드의 수가 반씩 줄어든다. 데이터의 수가 8개가 있다면 배열은 최악의 경우, 8번의 탐색을 해야하지만, 하지만 이진트리는 log 8 즉, 단 3번 만에 원하는 데이터를 찾을 수 있다. 그러므로 이진탐색트리에서 높이(h)의 개념은 중요하다. 트리의 높이는 곧 탐색 횟수를 의미한다. 그러므로 높이(h) = log n 이다. 그러나 이는 균형잡힌 이진트리에서만 적용되는 개념이다. 만약 이진탐색트리가 이렇게 되어 있다면, 배열처럼 n개의 데이터를 최대 n번 ..

[자료구조] HashMap 파헤치기 2 ( keySet(), values(), iterator() )

지난 포스팅에서는 HashMap의 기본 개념에 대해서 다루었다. HashMap은 key와 value로 구성된 Map 데이터를 해싱함수를 통해 산출된 인덱스 위치의 버킷(배열)안에 저장하는 자료구조이다. 해싱함수(function)는 key 값(X)을 받아 인덱스(Y)를 산출한다. 그래서 key값을 알면, 버킷의 위치를 바로 알 수 있어 HashMap은 시간 복잡도가 O(1)인 빠른 성능을 자랑한다. 그러나 key는 무한하지만 인덱스는 한정되어 있어 key들 간의 인덱스를 향한 충돌은 불가피하다. 그래서 충돌이 일어나는 인덱스에 또 다른 자료구조가 만들어 지는데 충돌 초기에는 Linked List 방식으로 Map 데이터가 저장된다. 그러다가 충돌횟수가 어느 임계점을 넘으면 Linked List 방식의 시간복..

[자료구조] HashMap 파헤치기 1 (Linked List + Red Black Tree)

나는 HashMap이 잘 이해되지 않았다. 인덱스가 없으니 배열이나 List에 비해 확실히 더 어렵고 직관적으로 이해하기가 힘들었다. 그래서 오늘 HashMap 자료구조가 어떤 원리로 돌아가는지 파헤쳐볼까 한다. Map Map 자료구조의 특징은 키(Key)와 값(Value)이다. 키를 통하여 값에 접근할 수 있는 구조이다. List나 배열은 인덱스로 접근한다. 인덱스는 단순히 순서만 나타낸다. 그러나 Map의 키는 개발자가 의미를 부여할 수 있다. 현재 내가 포스팅하고 있는 글의 글쓰기 창의 주소이다. Redirect = Write & categoryNo = 6 Redirect와 categoryNo는 Key이다. 그리고 Write와 6은 Value이다. 이런 원리로 key는 개발자가 부여한 의미를 갖고 ..

[자료구조] 컬렉션 프레임워크 - List

컬렉션 프레임 워크란 표준 API로 제공하는 자료구조 라이브러리를 의미한다. 데이터를 저장할 때, 어떤 방식으로 저장하느냐에 따라 프로그램의 성능이 바뀐다. 그래서 상황에 맞는 적절한 자료구조를 선택해야한다. 그래서 JAVA는 자료구조를 만드는데 필요한 다양한 인터페이스를 제공하는데 이를 JAVA 컬렉션 프레임워크라고 부른다. 컬렉션 프레임워크와 관련된 클래스들은 java.util 패키지 안에 들어가 있다. List, Map, Set, Queue 같이 기본적인 자료구조 인터페이스가 java.util 패키지 안에 담겨져 있다. 그러므로 우리는 자료구조를 직접 만들지 않고 API를 갖다가 쓰면 된다. 그럼 이제부터 하나씩 자료구조들을 사용해보자. List 배열이 공간이 한정되어 있는 상자라면 리스트는 구슬을..

[DB] 논리적 설계 모델

지난 포스팅에서 개념적 설계 모델을 알아보았다. 개념적 설계 모델은 인간이 이해하기 쉽도록 DB를 설계하는 방법이다. 그럼 이를 DBMS에 맞는 논리적인 설계로 변환해야한다. 관계형 데이터 모델에 맞게 DB를 설계해보자. 종속적 관계 개념적 설계 모델에서 종속적 관계는 약성 개체 집합이 강성 개체 집합에 종속됨을 표현했다. 그럼 이를 테이블로 나타내어 보자. 개체 집합 => 테이블 개체 집합의 속성 => 필드 기본키 => 기본키 약성 개체 집합은 강성 개체 집합에 종속된 관계로 독자적인 기본키를 갖지 못한다. 종속된 강성 개체에 따라 기본키가 달라진다. 기본키는 강성 개체를 특정 지을 수 있는 여러 속성을 묶은 부분키와 종속된 개체의 기본키를 묶어 만들어 진다. 강성 개체 집합 : 강좌 ( course_..

CS/DB 2021.06.25

[DB] 시스템 권한 및 뷰(View) [Oracle]

Oracle DBMS 기준으로 권한은 시스템 권한과 객체권한으로 나뉜다. 지난 두 개의 포스팅에서 객체 권한과 관련된 내용을 다루어 보았다. 이번 포스팅에서는 시스템 권한을 다루어 볼까 한다. 시스테권한(System Privileges)은 '조작'보다는 '생성'과 '삭제'와 같이 시스템 구성에 영향을 끼치는 명령을 다루는 권한이다. 그러므로 데이터 관리자 권한이 있는 계정이 아니면 접근할 수 없는 중요한 권한이다. (SYS, SYSTEM) 사용자의 생성,삭제 (CREATE user, DROP user) 세션 생성 (CREATE session) (DB 로그인 권한) 테이블 생성, 삭제, 읽기 권한 (CREATE, DROP, SELECT) 뷰 생성 삭제 권한(CREATE, DROP) 테이블 스페이스 생성 삭..

CS/DB 2021.06.25

[DB] 개념적 설계 모델

데이터베이스의 개념적 설계는 사람이 이해할 수 있는 설계이다. 데이터베이스의 구조를 사람의 관점에서 접근해보자. 개념적 설계의 핵심 요소 출처 입력 개념적 설계 모델의 핵심요소 3가지는 아래와 같다. 1. 개체( Entity ) 2. 속성 ( Attribute ) 3. 관계 ( Relation ) 개체는 현실에서 물리적으로 추상적으로 존재하는 실체이다. 속성은 개체가 가지고 있는 특성을 의미한다. 동일한 특성을 가진 개체들이 모이면 개체 집합(Entity Set)이 된다. 관계형 데이터 모델에서 개체 집합을 '테이블'이라 부르고 '속성'을 필드라 부른다. 같은 대상을 지목하지만 관점이 다르므로 특징도 다르다. 사용자 관점에서 보면 '속성'은 다중값이나 복합적인 특성을 가질 수 있지만 데이터베이스 관점의 ..

CS/DB 2021.06.25