[백준] 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)직원정보입력 → 소득세율 가져오기 → 급여계산위처럼 실행순서가 고정되..
오브젝트 (2)
·
Book/DEV
이 포스팅은 오브젝트(조영호)를 읽으면서 정리한 글입니다이전 포스팅오브젝트 (1)메시지와 인터페이스클래스가 아닌 객체(객체가 수행하는 책임)를 지향하라메시지애플리케이션은 객체가 주고 받는 메시지로 구성된다.객체 사이의 협력을 가능케 하려면 메시지를 전송해야 한다.클라이언트 - 서버 모델객체 사이의 협력을 나타내는 전통메타포클라이언트 : 메시지를 전송서버 : 메시지를 수신ex)Movie가 할인을 적용받고자 하면 Discount policy가 필요해 메시지를 전송하게 된다.즉 Movie는 클라이언트, Discount policy는 서버라고 볼수있다메시지 전송(패싱)객체 → 객체로 도움 요청- 메시지 전송자 : 메시지 전송 객체- 메시지 수신자 : 메시지 수신 객체- operation(오퍼레이션명), argu..