본문 바로가기

분류 전체보기176

[Java] Comparable, Comparator 알아보기 본 게시물에서는 Comparable과 Comparator에 대해 알아보려 한다. Comparable과 Comparator는 모두 인터페이스(Interface)이며 객체를 비교하기 위해 사용한다. 이 둘 모두 인터페이스인 관계로, 사용하기 위해서는 각각에 선언된 메소드를 반드시 구현해야한다. 어떤 메서드를 구현해야 하는지, 어떤 차이가 있는지, 사용하는 방법은 무엇인지 자세히 알아보자. 1. Comparable 주로 객체의 자연스러운 순서를 정의할 때 사용된다. 따라서 객체의 비교를 구현하고 싶을 때(객체 자체가 정렬 가능해지도록 하고 싶을 때)나 클래스를 수정할 수 있는 경우에 사용한다. 그럼 Java 공식 API문서에 Comparable을 찾아보자. https://docs.oracle.com/en/ja.. 2023. 3. 23.
백준(Java) - 2304 창고다각형 1. 문제 조건 - 입력 기둥 수 N ( 1이상 1000이하) 각 기둥의 왼쪽 면의 위치를 나타내는 정수 L & 높이 H - 문제 설명 주어진 막대기둥을 포함하는 다각형의 가장 작은 면적을 구해야 한다. 창고다각형은 아래 조건을 충족시켜야 한다. 2. 아이디어 3. 구현 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Stack; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws NumberFormatException, IOExce.. 2023. 3. 20.
(Java) SWEA 7964. 부먹왕국의 차원관문 알고리즘 스터디에서 푼 지는 꽤 됐지만 알고리즘과 백엔드 공부에 정신없이 치여 살다가 이제야 기록하는 문제풀이 ..! 오늘부터 1일 최소 1문제풀이 글 작성 꼭꼭 하자 :) 1. 문제 조건 분석하기 - 입력 테스트 케이스 수 T N : N개의 부먹왕국 도시수 / D: 이동제한 거리 각 도시에 차원관문이 남아있는지를 표현하는 수(1은 연결, 0은 파괴) - 문제 설명 부먹왕국 도시들이 이동제한 거리 내에서 관문에서 다른 관문으로 이동 가능하며, 모든 도시들이 이동 가능하도록 관문을 얼마나 추가로 설치해야 하는지를 계산해야 한다. ** 주의 ** 모든 차원 관문 사이와 직접적으로 이동 가능하도록 해야한다는 조건이 있음을 주의해야 한다. 예를 들어 D=1 일 때는, 모든 도시에 관문이 설치되어야 관문에서 관문.. 2023. 3. 20.
비즈니스 요구사항 정리 - 아직 DB가 선정되지 않은 상황 : 성능이 중요한 데이터베이스를 쓸지 등등이 정해지지 않은 상황 가정 - 일반적인 웹 애플리케이션의 계층 구조 컨트롤러 - 서비스 - 리포진토리 - DB 도메인 - 컨트롤러 : 웹MVC의 컨트롤러 역할, API만들거나 할 때 컨트롤러 역할 - 서비스 : 핵심 비즈니스 로직 구현 - 리포지토리 : 데이터베이스에 접근, 도메인 객체를 DB에 저장,관리 - 도메인 : 데이터베이스에 주로 저장하고 관리되는 비즈니스 도메인 객체 아직 데이터베이스가 지정되지 않은 상황으로 인해, 회원을 저장할 수 있는 리포지토리는 인터페이스로 만들고 구현체를 메모리 구현체로 만들 것. Memory에 넣었다 뺐다 할 수 있는 단순한 구현체를 만들어 추후 데이터베이스가 정해지면 이를 바꿔끼울 것. .. 2023. 3. 20.
MVC와 템플릿 엔진 / API 1. MVC(Model, View, Controller) - 예전에는 view에 모든 걸 다 하고 controller가 따로 있지 않았음. - view 란 : 화면을 그리는 데에 모든 역량을 집중 - controller : 비즈니스 로직과 관련있거나 내부적인걸 처리하는데에 관심 있음 - 요즘엔 컨트롤러와 뷰를 쪼개는게 기본 ! - 비즈니스 로직, 서버와 관련된건 컨트롤러 쪽에서 다 처리하고 model에다 관련된 화면에 필요한 것을 담아서 view에 넘겨주는 패턴 많이 활용 - controller - 웹브라우저에서 localhost:8080/hello-mvc를 보내면 스프링 부트가 띄울 때 같이 띄우는 내장 톰켓서버를 먼저 거쳐. helloController에 저 메서드에 매핑이 돼있는 걸 확인하고 ret.. 2023. 3. 9.
(Java) SWEA 1860. 진기의 최고급 붕어빵 풀이(2023-02-24) 1. 문제 조건 분석하기 진기가 M초마다 K개씩 만드는 붕어빵을 N명에게 판매. N명은 입력된 숫자의 시간에 도착하며 기다리지 않고 받아갈 수 있다면 Possible, 불가능하면 Impossible 출력할 것. 2. 아이디어 1) 카운팅 배열을 만든 후 사람이 들어오는 시간을 index로 하여 max시간까지 만든 붕어빵을 값으로 더한다. 그리고 누적합 시킨다. 그 후, 입력값을 돌며 해당 시간에 들어온 사람만큼 붕어빵을 빼준다.( 이 때, 배열에서 끝까지 빼주지 않으면 앞에서 사간 붕어빵이 그 시간 이후에 반영되지 않으므로 주의해야 한다.) => 사람이 들어온 시간을 정렬시켜 시간 순으로 빼주고 뺄 때마다 붕어빵 개수가 0보다 작아졌는지 확인후 작아졌으면 Impossible을 다 돌고도 문제가 없었으면 .. 2023. 2. 26.