본문 바로가기

분류 전체보기104

[JAVA] Functional Interface, Stream, String, StringBuffer 1. Functional Interface(함수적 인터페이스) 1) 개요 - java.util.function - JDK 1.8부터 지원 - 모두 인터페이스이므로 람다식 이용 2) 종류 종류 params / return 비고 consumer O / X supplier X / O function O / O data type을 바꾸어 return하는데 사용 operator 연산해서 값을 return하는데 사용 predicate boolean return value // Function // T : param type, R : return type Function f = t->t.length(); // Operator // T : params & return type Operator o = (t,u) -> t.. 2021. 1. 14.
[JAVA] Collection API 0. API란 다양한 정의가 있겠지만 "프로그램이 제공하는 함수"정도로 넓게 생각하자 1. JAVA의 data 저장 방법 3가지 변수 배열 Collection API - 하나의 data - 기본형&참조형 - 여러 개의 data - 참조형 - 동일한 type만 저장가능(다형성 고려X) - 크기변경 불가 - Index를 통한 element 접근 - 배열과 관련된 method 없음(Arrays 제외) - 여러 개의 data - 참조형 변수 - 여러 type data 저장가능(generics) - 크기변경 가능 - method를 통한 element 접근 - 다양한 method 2. Collection API 계층구조 Set 계열 List 계열 Map 계열 - 순서 X - 중복저장 X - value만 저장 - 순.. 2021. 1. 14.
[JAVA] Anonymous class, Lambda Expression, Generics 1. Anonymous class(익명 클래스) - 말 그대로 이름 없는 class - Interface 사용 시 주로 익명 클래스가 사용됨 : 가독성 증가 Interface_name variable_name = new Interface_name(params...) { @Override // abstract method } 2. Lambda Expression(람다식) 1) 목적 - Method는 Class 안에 존재할 수 있고 JAVA의 최소 단위는 Class이다. - 따라서 Method를 만들기 위해 불필요한 Class 생성이 유발될 수 있다. - 하지만 람다식을 이용하면 Class를 표현하지 않고 Method만 만들 수 있다.(Method 즉, 기능에 더 집중할 수 있다.) - 이러한 형태의 프로그.. 2021. 1. 14.
[JAVA] Abstract, Interface 1. Abstract 1) 목적 : 다른 class간에 공통적으로 사용하는 기능 효율적으로 재사용하기 위해 2) 형태 : public abstract return_type method_name(); 3) abstract class 구성요소 - 일반 variable(instance varible) - 일반 method(instance method) - 생성자 - abstract method * 4가지 다 있어도 되고 없어도 된다. cf) abstract method를 포함하는 class는 abstract 선언을 해주어야 한다. 4) 특징 - 자식 class에서 반드시 abstract method를 override 해야한다. 이를 통해 자식 class에서 특정 method를 강제하면서 통일성과 일관성을 갖는.. 2021. 1. 12.
[JAVA] 상속, 다형성, 캡슐화 1. 상속 1) 특징 - 부모의 private변수, 생성자는 상속이 안됨 - 모든 class의 최상위 부모는 Object // extends Object는 생략되어 있음 - class가 생성될 때 상속이 있다면 최상위 부모부터 생성됨 // 부모의 변수를 자식이 상속받아 사용해야하기 때문 2) 생성자 호출 형태 // 다른 class에서 객체 생성 시 new class(); // 자식 class에서 부모생성자 호출 시 // 반드시 자식 생성자 첫 줄에 쓴다 super(); // 같은 class의 특정 생성자에서 다른 생성자 호출 this(); * overloading된 생성자들은 params로 구분되어 호출된다. 3) 활용 형태 - Object의 toString() 참조변수를 print할 때 자동으로 toS.. 2021. 1. 12.
[JAVA] 데이터의 메모리 할당 순서 1. 일반변수 2. 배열 3. 클래스 * main 함수는 프로그램 실행 시 JVM이 자동으로 첫번째 함수로 호출 * 순서정리 method area static 영역 load : main > method area class 정보 load : student.java, testStudent.java (class) > stack 영역 load : 변수 s > heap 영역 load : Student instance (new Student()) 2021. 1. 12.
웹 개발 환경 1. Apache Tomcat 1) Apache 아파치 소프트웨어 재단의 웹 서버 오픈소스, 클라이언트의 요청이 왔을 때만 응답하는 정적인 웹 페이지에 이용된다. HTTP 요청을 처리하는 웹 서버 * port 80을 이용 * HTML, CSS, 이미지 등 정적인 데이터만 처리 2) Tomcat WAS(Web Application Server)로써 동적인 웹을 만들기 위해 사용된다. 컨테이너, 웹 컨테이너, Survlet 컨테이너라고도 한다. 웹 서버에서 정적으로 처리해야할 데이터를 제외한 JSP, ASP, PHP 등은 웹 컨테이너(Tomcat)에게 전달된다. * 주로 port 8080을 이용 * JSP(Java Server Page) - HTML 코드에 JAVA 코드를 넣어 동적웹페이지를 생성하는 웹어플.. 2021. 1. 6.
[C++]백준 1774번 : 우주신과의 교감 www.acmicpc.net/problem/1774 1774번: 우주신과의 교감 (1,1) (3,1) (2,3) (4,3) 이렇게 우주신들과 황선자씨의 좌표가 주어졌고 1번하고 4번이 연결되어 있다. 그렇다면 1번하고 2번을 잇는 통로를 만들고 3번하고 4번을 잇는 통로를 만들면 신들과 선자씨끼 www.acmicpc.net 1. 접근 크루스칼 알고리즘으로 입력이 조금 특이해서 2가지 처리를 해서 기반을 만들어주어야 한다. 1) 이미 연결되어 있는 edge 정보를 저장 2) 좌표만 주어지기 때문에 각각의 좌표 간 거리 정보를 구해서 저장 2. 개선 edge의 최소 거리 순으로 MST를 찾아야하기 때문에 관성적으로 pq를 썼는데 그냥 edge를 기본 배열에 넣고 처음에 오름차순으로 정렬 후 순차적으로 탐색하.. 2020. 12. 6.
[C++]백준 1992번 : 네트워크연결 www.acmicpc.net/problem/1922 1922번: 네트워크 연결 이 경우에 1-3, 2-3, 3-4, 4-5, 4-6을 연결하면 주어진 output이 나오게 된다. www.acmicpc.net 1. 접근, 풀이 모든 node를 대상으로 최소스패닝트리를 구하는 문제로 edge의 정보가 주어진다. 따라서 edge 기준으로 그래프의 최소스패닝트리를 구할 수 있는 크루스칼 알고리즘을 적용했다. union&find에서 더 작은 node를 parent로 선택했다. #include #include #include #include #include #include #include #include using namespace std; struct state{ int a, b, c; }; struct comp.. 2020. 12. 6.