오브젝트 (4)
·
Book/DEV
이 포스팅은 오브젝트(조영호)를 읽으면서 정리한 글입니다이전 포스팅오브젝트 (1)오브젝트 (2)오브젝트 (3)상속과 코드 재사용상속기존 클래스를 확장해 새로운 클래스를 만듬is-a 관계기존 클래스의 기능을 물려받는다.부모와의 결합도 ⬆️자식이 부모에 대해 아주 잘! 알아야함언제 상속을 사용할까?상속 관계가 is-a 관계인가?부모 클래스 타입으로 자식 클래스를 사용해도 무방한가? (행동호환성)합성클래스 인스턴스 안에 기존의 인스턴스를 추가has-a 관계합성 객체들의 인터페이스를 명확하게 정의해야 함믹스인객체 생성시 코드 일부를 클래스 내에 섞어 넣는다(컴파일 시점 주입)스칼라의 트레이트가 이를 활용다형성런타임 시점에 결합되는 동적인 문맥을 사용한다.self런타임 시점에 자기 자신 / 혹은 자식 인스턴스를 ..
[백준] 1239 - 차트(Java)
·
Algorithm
문제 파악https://www.acmicpc.net/problem/1239풀이주어진 N이 [1,8]로 작은 편에 속한다.따라서 재귀로 풀이해도 문제가 없을 것으로 판단했다.핵심 구현 사항은 다음과 같다순열 배열 생성 (재귀)누적 퍼센트 저장10%, 40%, 50%의 경우, [10, 50, 100] 이 저장될 것누적 퍼센트를 순환하며 반대 방향의 누적 퍼센트가 있는지 탐색ex. 30% -> 80%가 있는지 검사 (즉 50%를 더한 값이 존재하는지 확인)참고) 퍼센트를 각도로 변환하게 될 시 소수점 문제가 있어서, 자연수인 퍼센트를 활용해야 한다 😅조금 더 코드를 보완하기 위해서는 50%를 초과하는 값들은 탐색에서 제외하는 방법을 추가할 수도 있겠다.(그 값들은 (0, 50) 구간에서 이미 판별했을 것이기..
[백준] 1563 - 개근상(Java)
·
Algorithm
문제 파악https://www.acmicpc.net/problem/1563풀이지각을 두 번 이상 했거나, 결석을 세 번 연속으로 하면 안 된다.다시 말하면 지각은 모든 일정에서 1번까지만 허용되고, 결석은 연속으로 2회까지만 허용되는 것이다.허용되는 출결 상태는 6개로 나눌 수 있다.지각 총 0회, 결석 누적 0회지각 총 0회, 결석 누적 1회지각 총 0회, 결석 누적 2회지각 총 1회, 결석 누적 0회지각 총 1회, 결석 누적 1회지각 총 1회, 결석 누적 2회그렇다면 이전 날의 상태에 출석 / 지각 / 결석 을 수행하면 현재 날까지의 출결 상태를 결정할 수 있겠다.지각 총 0회, 결석 누적 0회[지각 총 0회, 결석 누적 0회] (1) + 출석[지각 총 0회, 결석 누적 1회] (2) + 출석[지각 ..
Spring Batch - 개념, 구성요소
·
Spring
Spring BatchDefinition유저 상호작용이 덜한 대용량 데이터 처리를 위한 경량, 포괄적인 배치 프레임워크Pros주기적인 배치 커밋잡의 병렬적인 수행Cons역할을 분리함으로써 관심사의 분리도 이루어진다.Archtiecture LayerApplication직접 작성하는 비즈니스 로직 부분Job 구성Job, Step, Reader, Processor, Writer, ListenerBatch CoreJob, Step 실행 제어 (JobLauncher, JobRepository 등)Chunk, Step, Flow 등 배치 실행 구조 정의Batch Infrastructure데이터 저장과 관리, 트랜잭션 처리 담당TransactionManager (트랜잭션 관리)JobRepository 테이블 (배치 ..
[백준] 1379 - 강의실 2 (Java)
·
Algorithm
문제 파악https://www.acmicpc.net/problem/1379풀이우선순위 큐를 써야겠다!보통 이런 문제들은 큐를 많이 써 큐의 크기를 반환해주는 경우가 경험상 많다.[강의실 번호, 강의가 끝나는 시간] 으로 구성된 우선순위 큐를 만들어 주자.이 때 강의가 끝나는 시간을 오름차순으로 정렬해주도록 설정한다.주어진 강의를 강의 시작 시간 오름차순으로 정렬한다.정렬된 강의를 돌며 우선순위 큐에 넣어주기를 반복하면 된다.큐를 업데이트하는 과정은 다음과 같다.들어갈 수 있는 강의실이 없는 경우 큐에 원소를 추가한다.수업을 마치고 재활용할 수 있는 방이 있다면 업데이트 해 큐에 다시 넣어준다.추가로 예시에 주어진 답안과 똑같지 않아도 통과되기에 너무 겁먹지 않고 제출해도 된다.. 허허다만 문제가 살짝 불..
오브젝트 (3)
·
Book/DEV
이 포스팅은 오브젝트(조영호)를 읽으면서 정리한 글입니다이전 포스팅오브젝트 (1)오브젝트 (2) 객체 분해하기추상화프로시저 추상화"소프트웨어가 무엇을 해야 하는지"기능 분해 (알고리즘분해)데이터 추상화"소프트웨어가 무엇을 알아야 하는지"데이터 중심 타입 추상화(type abstraction), 데이터 중심 프로시저 추상화(procedure abstraction)프로그래밍 언어 관점의 객체지향이라고 볼 수 있음데이터 중심 데이터 추상화, 프로시저 추상화 통합 객체를 사용하여 시스템을 분해.이 때 클래스를 사용한다.기능 분해기능을 중심으로 데이터를 결정한다.top-down(하향식) 접근 - 기능분해의 전통 방식Top-down example)직원정보입력 → 소득세율 가져오기 → 급여계산위처럼 실행순서가 고정되..