전체 글

깃허브 https://github.com/kimtaesoo99 알고리즘 전용 블로그 https://javajoha.tistory.com/
CS

컴퓨터 시스템의 구성

컴퓨터의 기본 구성 하드웨어: 컴퓨터에서 각종 정보를 입력하여 처리하고 저장하는 동작이 실제 일어나게 해 주는 물리적인 실체 소프트웨어: 정보 처리의 종류를 지정하고 정보의 이동 방향을 결정하는 동작이 일어나는 시간을 지정해 주는 명령들의 집합 하드웨어 컴퓨터 하드웨어는 중앙 처리 장치, 주기억 장치, 보조 기억 장치, 입출력장치, 시스템 버스로 구성된다. 컴퓨터의 기능을 수행하기 위해 각 구성 요소들은 시스템 버스를 통해 상호 연결되어 있다. 버스: 컴퓨터 안의 부품들 간에, 또는 컴퓨터 간에 데이터와 정보를 전송하는 통로이다. 이러한 표현에는 관련된 모든 하드웨어 부품들 및 통신 프로토콜을 포함한 소프트웨어를 아우른다. 필요에 따라서 세분화된 버스가 존재한다. 중앙 처리 장치(Central Proce..

좋은 개발자가 되기

객체지향 생활 체조 원칙

객체지향의 중요성을 알게 되고 이러한 객체지향을 잘 적용하기 위해 중요한 9가지 원칙을 정리하기 위해 글을 작성하였다. 객체지향 생활 체조 원칙 9가지 한 메서드에 오직 한 단계의 들여 쓰기만 한다. else 예약어를 사용하지 않는다. 모든 원시 값과 문자열을 포장한다. 한 줄에 점을 하나만 찍는다. 줄여 쓰지 않는다. 모든 엔티티는 작게 유지한다. 3개 이상의 인스턴스 변수를 가진 클래스를 사용하지 않는다. 일급 컬렉션을 쓴다. getter/setter/프로퍼티를 사용하지 않는다. 1. 한 메서드에 오직 한 단계의 들여 쓰기만 한다. (One level of indentation per method) 아래 예시를 보자. public class Map { public String map() { Strin..

CS

데이터베이스 언어 SQL

SQL(Structured Query Language) 관계 데이터베이스를 위한 표준 질의어 비절차적 데이터 언어 SQL의 분류 데이터 정의어(DDL) - 테이블을 생성하고 변경, 제거하는 기능을 제공 데이터 조작어(DML) - 테이블에 새 데이터를 삽입하거나, 테이블에 저장된 데이터를 수정, 삭제, 검색하는 기능을 제공 데이터 제어어(DCL) - 보안을 위해 데이터에 접근 및 사용 권한을 사용자별로 부여하거나 취소하는 기능을 제공 SQL의 데이터 정의 기능 테이블 생성 : CREATE TABLE 테이블 변경 : ALTER TABLE 테이블 삭제 : DROP TABLE 테이블 생성 []의 내용은 생략 가능 SQL 질의문은 세미콜론(;)으로 문장의 끝을 표시 SQL 질의문은 대소문자를 구분하지 않음 속성의..

CS

관계 데이터 연산

데이터 모델(data model) 데이터 모델링의 결과물을 표현하는 도구 개념적 데이터 모델 - 사람의 머리로 이해할 수 있도록 현실 세계를 개념적 모델링하여 데이터베이스의 개념적 구조로 표현하는 도구 논리적 데이터 모델 - 개념적 구조를 논리적 모델링하여 데이터베이스의 논리적 구조로 표현하는 도구 데이터 모델 = 데이터 구조 + 연산 + 제약조건 관계 데이터 연산 관계 데이터 모델의 연산 원하는 데이터를 얻기 위해 릴레이션에 필요한 처리 요구를 수행하는 것 관계 대수와 관계 해석이 있음 관계 대수와 관계 해석의 역할 데이터 언어의 유용성을 검증하는 기준 관계 대수나 관계 해석으로 기술할 수 있는 모든 질의를 기술할 수 있는 데이터 언어를 관계적으로 완전하다고 판단함 관계 대수의 개념 원하는 결과를 얻기..

CS

관계 데이터 모델

관계 데이터 모델의 기본 개념 개념적 구조를 논리적 구조로 표현하는 논리적 데이터 모델 하나의 개체에 대한 데이터를 하나의 릴레이션에 저장 관계 데이터 모델의 기본 용어 속성(attribute) 릴레이션의 열, 애트리뷰트 파일 관리 시스템 관점에서 필드(field)에 대응 투플(tuple) 릴레이션의 행 파일 관리 시스템 관점에서 레코드(record)에 대응 도메인(domain) 하나의 속성이 가질 수 있는 모든 값의 집합 속성 값을 입력 및 수정할 때 적합성 판단의 기준이 됨 일반적으로 속성의 특성을 고려한 데이터 타입으로 정의 널(null) 속성 값을 아직 모르거나 해당되는 값이 없음을 표현 차수 하나의 릴레이션에서 속성의 전체 개수 카디널리티(cardicality) 하나의 릴레이션에서 투플의 전체 ..

CS

데이터베이스 시스템(DBS)

데이터베이스 시스템 DBS(DataBase System)이라고 한다. 데이터베이스에 데이터를 저장하고, 이를 관리하여 조직에 필요한 정보를 생성해 주는 시스템 데이터베이스의 구조 스키마 - 데이터베이스에 저장되는 데이터 구조와 제약조건을 정의한 것 인스턴스- 스키마에 따라 데이터베이스에 실제로 저장된 값 3단계 데이터베이스 구조 미국 표준화 기관인 ANSI/SPARC에서 제안 데이터베이스를 쉽게 이해하고 이용할 수 있도록 하나의 데이터베이스를 관점에 따라 3단계로 나눔 외부 단계 - 개별 사용자 관점 개념 단계 - 조직 전체의 관점 내부 단계 - 물리적인 저장 장치의 관점 각 단계별로 다른 추상화 제공 - 내부 -> 외부 단계로 갈수록 추상화 레벨이 높아짐 외부 단계 데이터베이스를 개별 사용자 관점에서 ..

CS

데이터베이스의 기본 개념

데이터베이스에 대한 중요성을 알게 되고 이를 정리하기 위해 글을 작성한다. 데이터와 정보 데이터: 현실 세계에서 단순히 관찰하거나 측정하여 수집한 사실이나 값(실제 값 그 자체) 정보: 의사 결정에 유용하게 활용할 수 있도록 데이터를 처리한 결과물(가공한 값) 정보시스템: 조직 운영에 필요한 데이터를 수집하여 저장해 두었다 필요할 때 유용한 정보를 만들어 주는 수단 데이터베이스: 정보 시스템 안에 데이터를 저장하고 있다 필요할 때 제공하는 역할 데이터베이스 정의 특정 조직의 여러 사용자가 공유하여 사용할 수 있도록 통합해서 저장한 운영 데이터의 집합 특징 실시간 접근 계속 변화 동시 공유 내용 기반 참조 형태에 따른 데이터의 분류 정형 데이터- 구조화된 데이터(엑셀의 스프레드 시트) 반정형 데이터- 구조..

좋은 개발자가 되기

객체지향의 사실과 오해(2장)

오늘은 2장의 내용을 정리하려고 한다. 앞서 진행한 1장과 같은 방법으로 정리할 것이다. 이상한 나라의 객체 객체지향 패러다임은 지식을 추상화하고 추상화한 지식을 객체 안에 캡슐화함으로써 실세계 문제에 내재된 복잡성을 관리하려고 한다. 객체를 발견하고 창조하는 것은 지식과 행동을 구조화하는 문제다. - 레베카 워프스브룩 객체지향과 인지능력 소프트웨어 세계는 인간이 인지할 수 있는 다양한 객체들이 모여 이루어져 있다는 믿음으로 시작된다. 객체지향은 현실 세계를 모방하는 것이 아닌 창조하는 일이다. 현실세계와는 다르게 사람의 손길 없이 동작할 수 있다. (스스로 움직이는 자동차, 스스로 불을 껐다 키는 전등) 객체, 그리고 이상한 나라 엘리스는 토끼를 따라가 굴속으로 들어가며 작은 문을 발견한다. 이후 이 ..

좋은 개발자가 되기

객체지향의 사실과 오해 (1장)

이번에 객체지향의 사실과 오해를 읽고, 내용이 너무 좋고 중요하다는 생각이 들었다. 따라서 좋은 동료들과 함께 객체지향의 사실과 오해를 스터디하며 중요한 부분을 복습하기로 하였다. 또한 이를 기록할 예정이다. 오늘의 1장의 내용 중 중요하다고 생각되는 부분을 정리하고 코드로 구현해 보자. 객체지향 프로그래밍이란? 우리는 흔히 현실 세계에 존재하는 사물에 대한 추상화를 객체라고 생각한다. 하지만 객체지향의 목표는 실세계를 모방하는 것이 아니다. 소프트웨어 개발자의 역할은 단순히 실세계를 소프트웨어 안으로 옮겨 담는 것이 아니다. 오히려 새로운 세계를 창조하는 것이다. 단순히 우리가 이해를 쉽게 하기 위해 이러한 비유를 계속해서 사용하는 것이다. 협력하는 사람들 커피 공화국의 아침 첫 비유는 한 개발자가 일..

PS/알고리즘 문제풀이

[백준] 4485번 녹색 옷 입은 애가 젤다지?

https://www.acmicpc.net/problem/4485 4485번: 녹색 옷 입은 애가 젤다지? 젤다의 전설 게임에서 화폐의 단위는 루피(rupee)다. 그런데 간혹 '도둑루피'라 불리는 검정색 루피도 존재하는데, 이걸 획득하면 오히려 소지한 루피가 감소하게 된다! 젤다의 전설 시리즈의 주 www.acmicpc.net 핵심 (0,0)에서 시작하여 (n-1, n-1)로 갈 때 가장 최소의 코인을 잃은 상태로 가야 한다. 즉 다익스트라를 사용해야 한다. 정답 코드 import java.util.ArrayList; import java.util.List; import java.util.PriorityQueue; import java.util.Scanner; class Main { static Lis..

javajoha
기록하는 개발자가 되자