///////
Search

알고리즘,DB_김지수

알고리즘

1. 최대값1_CodeUp2081

문제설명

코드

2. 최댓값1_CodeUp4596

문제설명

코드

3. MIN, MAX_다형성 적용

템플릿 메서드란?

상속을 통해 슈퍼클래스의 기능을 확장할 때 사용하는 가장 대표적인 방법. 변하지 않는 기능은 슈퍼클래스에 만들어두고 자주 변경되며 확장할 기능은 서브클래스에서 만들도록 한다. – 토비의 스프링 3.1

콜백

피호출자가 호출자를 다시 호출하는 것
아래 코드의 함수 중 max함수의 호출과정은 max()→callback()→max()

인터페이스 적용

코드

4. 사칙연산

인터페이스 적용

코드

공공데이터 활용

1. 데이터 모델링

데이터 모델링

주어진 개념으로부터 논리적인 데이터 모델을 구성하는 작업을 말한다.

RDB(관계형 데이터 베이스)의 데이터 모델링

1.
요구사항 파악
데이터가 어떤 형태, 목적으로 사용될지 고려한다.
2.
개념적 모델링
개체와 개체들 간의 관계에서 ER다이어그램을 만드는 과정
3.
논리적 모델링
ER다이어그램을 사용하여 관계 스키마 모델을 만드는 과정
4.
물리적 모델링
관계 스키마 모델의 물리적 구조를 정의하고 구현하는 과정

2. 공공데이터 모델링 실습

데이터

요구사항 분석

1.
병원 분류명이 총 몇가지인는지?
2.
병원 분류별로 몇개씩 있는지? ex) 의원:x개 치과병원:y개 한방병원:z개 …
3.
병원 분류가 몇가지 인지?
4.
서울의 구별로 각 병원이 몇개 있는지 ex) 서울시 금천구 의원, 한방병원, 치과병원, .. 이 각 몇개인지?
5.
구별로 병원이 가장 많은 구는?
6.
이비인후과(0), 외과(1), 내과(2), 소아과(3), 피부과, 성형외과 는 각 몇개인지(category)
요구사항 분석 - 어떤 기능을 원하는지

개념적 설계

다이어그램

논리적 설계

컬럼명
설명
Type
ex
id(Pk)
VARCHAR(8)
A1120837
address
전체 주소
VARCHAR(90)
~~
district
서울특별시 00구
VARCHAR(15)
서울특별시 강남구
category
...나중에 추가 작성병원분류 c
VARCHAR(1)
A: 종합병원 B: 병원 C: 의원 D: 요양병원 E: 한방병원 G: 한의원 I: 기타 M: 치과병원 N: 치과의원 R: 보건소
emergency_room
응급실운영여부 1 운영 2 운영안함
INT
1 또는 2
name
해당 병원의 이름
VARCHAR(40)
가로수치과의원
컬럼명
설명
Type
병원id
varchar(8)
진료과목
세부분과
varchar(40)

물리적 설계

Entity(Table) seoul_hospital에 1개 Row(Record) Insert하기
sql 파일 읽어오기
Insert Into 작성할 때 팁

3. JAVA로 .sql 파일 만들기

과정 개요

1.
파일 만들기
2.
.csv에서 line별로 읽어오기 – 끊고
3.
JavaObject Hospital()
4.
line별로 읽어와서 필요한 정보만 뽑아서 Object에 담기- setSubdivision()
5.
생성자에서 setDistrict()호출 - address.split(“ “) → [0] + “ “ + [1] 서울특별시 금천구
6.
subdivision은 병원이름(name)을 기준 (, 등) - 이 단어가 포함 되어 있으면 ex) 피부과가 포함 되어 있으면 피부과

CSV 파일 읽어오기

코드
코드_리팩토링

코드 리팩토링한 이유

파일을 읽어오는 클래스인 LineReader는 다양한 곳에서 사용될 수 있다.
LineReader의 readLines메소드는 어떤 파일을 파싱하느냐에 따라 반환하는 리스트 타입이 달라질 수 있다.
다양한 종류의 파일을 파싱할때마다 readLines를 반복적으로 작성하는 것은 비효율적이다.
interface를 통해서 파일의 종류에 따라 다양한 List 타입을 반환할 수 있도록 코드를 리팩토링한다.