Language/Java
객체지형 4대 패러다임(캡슐화, 추상화, 다형성, 상속)
1. 캡슐화(Encapsulation) 객체의 속성(data fields)과 행위(메서드, methods)를 하나로 묶고 실제 구현 내용 일부를 외부에 감추어 은닉한다 사용목적: 정보은닉 구현방법: 접근지정자(private, protected, public) 2. 추상화 공통의 속성이나 기능을 묶어 이름을 붙이는 것 사용 목적: 모델링 구현 방법: 클래스 3. 다형성(Polymorphism) 다형성이란 프로그램 언어 각 요소들(상수, 변수, 식, 객체, 메소드 등)이 다양한 자료형(type)에 속하는 것이 허가되는 성질 사용목적: 사용 편의 구현방법: 오버로딩(여러 종류의 타입을 받아들여 결국엔 같은 기능을 하도록 만들기 위한 작업), 오버라이딩(오버라이딩은 상위 클래스의 메서드를 하위 클래스에서 재정의..
해시, 스택/큐, 힙, 정렬, 완전탐색, DFS/BFS
해시 완주하지 못한 선수 import java.util.HashMap; class Solution { public String solution(String[] participant, String[] completion) { String answer = ""; HashMap hm = new HashMap(); for (String player : participant) hm.put(player, hm.getOrDefault(player, 0) + 1); for (String player : completion) hm.put(player, hm.get(player) - 1); for (String key : hm.keySet()) { if (hm.get(key) != 0){ answer = key; } } ..
구현 - 아이디어를 코드로 바꾸는 구현
상하좌우 문제 NxN정사각형 공간의 가장 왼쪽 위 좌표는 (1, 1), 가장 오른쪽 아래는 (N, N) 이다. 여행가 A는 상, 하, 좌, 우 방향으로 이동할 수 있으며, 시작 좌표는 항상 (1,1)이다. L(왼쪽 한칸) R(오른쪽 한칸) U(위로 한칸) D(아래로 한칸) 움직이는 의미이고, 이 4개의 문자로 된 문자열대로 움직였을때 최종 도착할 지점의 좌표를 구하라 단 NxN 공간을 벗어나 는 움직임은 무시됨( 입력예시 R R R U D D 출력예시 3 4 더보기 해결방법 ㅐㅐ public static void main(String[] args) { Scanner sc = new Scanner(System.in); // N을 입력받기 int n = sc.nextInt(); sc.nextLine(); /..
그리디 - 당장 좋은 것만 선택하는 그리디
거스름돈 문제 문제 N원을 여러 화폐단위로 거슬러주어라. 단, 가장 큰 화폐 단위부터 거슬러줘야할 때 해당 화폐로 거슬러주어야할 동전의 갯수는? 입력예시 : n=1260, 화폐단위들{500, 100, 50, 10} 출력예시 : 6 더보기 해결방법 큰 화폐 단위는 항상 작은 단위의 배수이므로 가장 큰 화폐 단위부터 가장 작은 화폐 단위까지 거슬러주는 작업만 하면된다. 거스름돈을 해당 화폐으로 나누면 몫 -> 해당 화폐로 거슬러줄 수 있는 돈, 나머지 -> 더 작은 단위로 거슬러주어야할 나머지 돈 static int n = 1260; static int cnt = 0; static int[] coinTypes = {500, 100, 50, 10}; public static void main(String[] ..
DFS/BFS - 탐색 알고리즘
스택 구현 예제 public static void main(String[] args) { Stack s = new Stack(); // 삽입(5) - 삽입(2) - 삽입(3) - 삽입(7) - 삭제() - 삽입(1) - 삽입(4) - 삭제() s.push(5); s.push(2); s.push(3); s.push(7); s.pop(); s.push(1); s.push(4); s.pop(); // 스택의 최상단 원소부터 출력 while (!s.empty()) { System.out.println(s.peek()); s.pop(); } } 큐 구현 예제 public static void main(String[] args) { Queue q = new LinkedList(); // 삽입(5) - 삽입(2) -..
[함수형 프로그래밍] lambda, functional interface, method reference
함수형 인터페이스 함수형 인터페이스는 말 그대로 Java의 interface이다. 함수형 인터페이스는 단 하나의 추상 메서드만 가지고 있는 인터페이스이다.(예외 : 디폴트 메서드는 포함할 수 있음) 함수형 인터페이스의 메서드를 람다 표현식으로 작성해서 다른 메서드의 파라미터로 전달할 수 있다. 즉, 람다 표현식 전체를 해당 함수형 인터페이스를 구현한 클래스의 인스턴스로 취급한다. Java 8에서 새롭게 추가된 함수형 인터페이스 외에 기존에 작성되어 있는 하나의 추상 메서드만 가지고 있는 Java의 interface 또한 함수형 인터페이스로 취급할 수 있다. 자바에서 기본적으로 제공하는 함수형 인터페이스는 다음과 같은 것들이 있습니다. Runnable Supplier Consumer Function Pre..