분류 전체보기 347

[Java] 13. 예외 처리(Exception handling)(2) - try-catch 문

예외 처리(2): try-catch문try-catch문try { // 예외가 발생할 가능성이 있는 문장} catch (Exception1 e1) { // Exception1이 발생했을 경우, 이를 처리하기 위한 문장을 적는다.} catch (Exception2 e2) { // Exception2이 발생했을 경우, 이를 처리하기 위한 문장을 적는다....} catch (ExceptionN eN) { // ExceptionN이 발생했을 경우, 이를 처리하기 위한 문장을 적는다.}하나의 try블럭 다음에는 여러 종류의 예외를 처리할 수 있도록 하나 이상의 catch 블럭이 올 수 있다.이 중 발생한 예외의 종류와 일치하는 단 한 개의 catch블럭만 수행된다...

[Java] 12. 예외 처리(Exception handling)(1) - 예외 처리란?

예외 처리(exception handling) - 예외 처리란?프로그램 오류컴파일 에러 : 컴파일 시에 발생하는 에러런타임 에러 : 실행 시에 발생하는 에러논리적 에러 : 실행은 되지만, 의도와 다르게 동작하는 것그러면 에러와 예외의 차이점은 무엇인가요?에러 : 프로그램 코드에 의해서 수습될 수 없는 심각한 오류예외 : 프로그램 코드에 의해서 수습될 수 있는 다소 미약한 오류예외 클래스의 계층 구조자바는 실행 시 발생할 수 있는 오류(Exception, Error)를 클래스로 정의했다.모든 클래스의 조상은 Object이므로 Exception과 Error클래스 역시 Object 클래스의 자손이다.예외 클래스는 다음과 같이 두 개의 그룹으로 나눌 수 있다.RuntimeException 클래스와 그 자손클래스..

[HTTP] HTTP 메서드 활용 - HTTP API 설계 예시

HTTP 메서드 활용HTTP API 설계 예시HTTP API - 컬렉션POST 기반 등록예) 회원 관리용 API 제공하는 상황이라고 가정HTTP API - 스토어PUT 기반 등록예) 정적 컨텐츠 관리, 원격 파일 관리PUT과 POST 모두 데이터를 등록할 때 사용할 수 있지만, 약간 다른 특징이 존재한다PUT과 POST의 각각의 특징에 대해서 아래서 다룰 것이다.HTML FORM 사용웹 페이지 회원 관리GET, POST만 지원회원 관리 시스템API 설계 - POST 기반 등록회원 목록 /members -> GET정렬 등의 검색 옵션이 필요하면 query parameter를 사용하자회원 등록 /members -> POST컬렉션에, 회원을 관리하는 uri(/members)에 데이터를 넣으면 회원이 새로 등록..

WEB/HTTP 2024.07.08

[HTTP] HTTP 메서드 활용 - 클라이언트에서 서버로 데이터 전송

HTTP 메서드 활용클라이언트에서 서버로 데이터 전송HTTP API 설계 예시클라이언트에서 서버로 데이터 전송데이터 전달 방식은 크게 2가지가 있다.쿼리 파라미터를 통한 데이터 전송GET주로 정렬 필터(검색어)ex) ?q=hello메시지 바디를 통한 데이터 전송POST, PUT, PATCH회원 가입, 상품 주문, 리소스 등록, 리소스 변경4가지 상황 정적 데이터 조회이미지, 정적 텍스트 문서동적 데이터 조회주로 검색, 게시판 목록에서 정렬 필터(검색어)HTML Form을 통한 데이터 전송회원 가입, 상품 주문, 데이터 변경HTTP API를 통한 데이터 전송회원 가입, 상품 주문, 데이터 변경서버 to 서버, 앱 클라이언트, 웹 클라이언트(Ajax)정적 데이터 조회쿼리 파라미터를 사용하지 않는다 정리이미지..

WEB/HTTP 2024.07.08

[Java] 11. OOP - 내부 클래스(Inner Class), 익명 클래스

내부 클래스(inner class)내부 클래스는 AWT나 Swing같은 GUI Application 이벤트 처리를 제외하고는 잘 쓰이지 않는다.이런 게 이렇게 작동하는구나 정도만 이해하고 넘어가자내부 클래스란?내부 클래스: 클래스 내에 선언된 클래스클래스에 다른 클래스 선언하는 이유 : 두 클래스가 서로 긴밀한 관계에 있기 때문내부 클래스로 선언하면 두 클래스의 멤버들 간에 서로 쉽게 접근할 수 있다는 장점이 있고, 외부에는 불필요한 클래스를 감춰 코드 복잡성을 줄일 수 있다.class A { // class B { // }}class A는 외부 클래스, class B는 내부 클래스이다.이 때 내부 클래스인 B는 외부 클래스인 A를 제외하고..

[Java] 10. OOP - 인터페이스(Interface)

인터페이스(Interface)인터페이스란?일종의 추상 클래스추상 클래스처럼 추상 메서드를 갖지만 추상화 정도가 높아서 몸통을 갖춘 일반 메서드 또는 멤버변수를 구성원으로 가질 수 없다.오직 추상메서드와 상수만을 멤버변수로 가질 수 있다.추상 클래스를 '미완성 설계도'라고 하면, 인터페이스는 아무 것도 없고 밑그림만 그려져 있는 '기본 설계도' 라고 할 수 있다.인터페이스는 다른 클래스를 작성하는데 도움 줄 목적으로 작성된다.인터페이스의 작성class 대신 interfaceinterface에도 클래스와 같이 접근 제어자로 public 또는 default를 사용할 수 있다.interface 인터페이스이름 { public static final 타입 상수이름 = 값; public ab..

[Algorithm/Greedy] 동전 거스름돈 문제

동전 거스름돈(Coin Change) 문제란?동전 거스름돈의 최소 동전 수를 찾는 그리디 알고리즘달성 목표 : 최소 동전 수제한 조건 : 거스름돈의 가치가 같도록 한다 그리디 방식의 동전 거스름돈을 결정하는 해결 문제매 순간마다 남은 거스름돈의 총액을 초과하지 않는 조건하에 ‘greedy, 욕심내어’ 가장 큰 액면의 동전을 취함가장 큰 액면을 가진 동전부터 차례로 선택하여 남은 거스름돈 액수보다 작을 경우 해답에 포함시킨다슈도 코드동전의 액면은 500원, 100원, 50원, 10원, 1원이라고 할 때입력 : 거스름돈 액수 W출력 : 거스름돈 액수에 대한 최소 동전수1. change=W, n500=n100=n50=n10=n1=0 // n500, n100, n50, n10, n1은 각각의 동전 카운트2. w..

Algorithm/Greedy 2024.07.04

[Algorithm/Greedy] 웰시-포웰 알고리즘(Welsh-Powell algorithm)

웰시-포웰 알고리즘이란앞에서 봤던 그리디 그래프 컬러링 알고리즘은 1번 정점부터 그래프 컬러링을 시작했다.시작한 정점에 따라 사용한 색상의 수가 달라질 수 있다. 이를 조금 향상시키는 방법은 차수(degree, 정점에 연결된 에지의 개수)가 높은 정점부터 차례대로 그래프 컬러링을 수행하는 것이다.이를 웰시-포웰 알고리즘이라고 한다.모든 정점을 차수에 대한 내림차순으로 정렬하고 배열에 저장한다정렬된 배열에서 색상이 지정되지 않은 첫 번재 정점을 선택하고(배열에서 색상이 지정되지 않은 것들 중에서 차수가 제일 높은 것), 이 정점과 연결된 모든 정점을 조사하여, 아직 사용되지 않은 색상을 해당 정점(아까 말한 차수가 제일 높은 정점)에 지정한다. 이 색상을 C라고 지칭하자.정렬된 배열에서 색상이 지정되지 않..

Algorithm/Greedy 2024.07.04

[Algorithm/Greedy] 그래프 컬러링

그래프 컬러링 문제란?정의: "주어진 그래프 G에서 서로 인접한 정점끼리 같은 색을 가지지 않도록 모든 정점에 색상을 지정해야 한다"그래프 컬러링의 평가는 얼머나 적은 수의 색상을 사용했는가에 의해 결정된다.택시 예약 스케줄 작성, 스도쿠 퍼즐 풀기 문제 등을 그래프로 모델링 한 후 컬러링 문제로 해결할 수 있다.그래프 컬러링에 필요한 최소 개수의 색상 수를 찾는 것은 NP-완전 문제로 알려져 있다.문제를 조금 변경함으로써 시간 복잡도를 크게 변경할 수 있다.그리디 방식이 유용한 근사치를 제공한다.ex) 컴파일러 설계에서 사용 EX) 스도쿠 퍼즐을 그래프 컬러링 문제로 모델링하기각각의 셀(cell)을 그래프 정점으로 표현한다같은 행, 같은 열, 3X3 블록 안에 있는 모든 정점기리 에지를 연결한다생성된 ..

Algorithm/Greedy 2024.07.04

[Algorithm/Greedy] 최소 신장 트리(Minimum Spanning Tree, MST) 문제 (크루스칼)

최소 신장 트리 문제란?정의"정점(vertex)의 집합 V와 가중치를 갖는 에지(edge)의 집합 E로 구성된 그래프 G = (V, E)가 주어질 때, 모든 정점을 연결하고 연결된 에지의 가중치 합이 최소인 트리 T를 구하시오"신장 트리 :  주어진 연결 그래프에서 사이클을 형성하는 간선을 제거하여 만든 트리정점의 수가 n 개이면 신장 트리의 간선 수는 n-1 개최소 신장 트리(MST): 주어진 가중치 그래프에서 사이클이 없이 모든 점들을 연결시킨 트리들 중 선분(간선)들의 가중치 합이 최소인 트리ex) 상수도관 네트워크, 도로 네트워크 설계Example)지도상에 여덟 개의 마을이 있고, 모든 마을이 서로 연결될 수 있도록 도로를 설계한다고 해보자. 연결된 도로는 사이클을 구성하면 안 된다.연결된 도로의..

Algorithm/Greedy 2024.07.04