전체 글

전체 글

    찾기 - 1786번

    찾기 - 1786번

    KMP 알고리즘 문제 내 코드 package com.company; import java.io.*; import java.util.*; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String T = br.readLine(); String P = br.readLine(); int lenT = T.length(); int lenP = P.length(); int[] arr = new int[P.length()]; // 부분일치 테이블 (접미사, 접두사가 같은 최대 크기) int ..

    문자열 패턴 매칭 알고리즘

    문자열 패턴 매칭 알고리즘

    고지식한 알고리즘 문자열을 처음부터 끝까지 차례대로 순회하면서 패턴 내의 문자들을 일일이 비교하는 방식 시간 복잡도 O(MN) 라빈-카프 알고리즘 문자열 검색을 위해 해시 값 함수를 이용 패턴 내의 문자들을 일일이 비교하는 대신 패턴의 해시 값과 본문 안에 있는 하위 문자열의 해시값만을 비교 최악의 시간 복잡도 O(MN), 평균적으로 선형에 가까운 빠른 속도 ,대략 O(M+N) 숫자 문자열 : 6843212431 찾으려는 패턴 : 4321 패턴의 해쉬값을 계산 -> 각 자리의 숫자에 자리값을 곱하여 더함 ("4321"은 정수 4321이 됨) 찾고자 하는 문자열에서 4자리씩 해쉬값을 계산 -> (6843, 8432...) 새로 추가되는 문자와 그전에 읽었던 값을 이용해서 해쉬값을 구함 ((6843 % 10..

    치킨 배달 - 15686번

    치킨 배달 - 15686번

    내 코드 import java.io.*; import java.util.*; public class Main { static int N, M, min; static ArrayList home, chicken; static int[] distance; public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine()); N = Integer.parseInt(st.nextToken()); M = Integer.parseInt(st.nextT..

    아기 상어 - 16236번

    아기 상어 - 16236번

    내 코드 import java.io.*; import java.util.*; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = null; int N = Integer.parseInt(br.readLine()); int[][] d = { { 1, 0 }, { -1, 0 }, { 0, 1 }, { 0, -1 } }; int[][] arr = new int[N][N]; PriorityQueue pq = new PriorityQueue(); boolea..

    타임리프 - 기본 기능

    타임리프 - 기본 기능

    목차 프로젝트 생성 타임리프 소개 텍스트 - text, utext 변수 - SpringEL 기본 객체들 유틸리티 객체와 날짜 URL 링크 리터럴 연산 속성 값 설정 반복 조건부 평가 주석 블록 자바스크립트 인라인 템플릿 조각 템플릿 레이아웃1 템플릿 레이아웃2 정리 프로젝트 생성 사전 준비물 Java 11 설치 IDE: IntelliJ 또는 Eclipse 설치 스프링 부트 스타터 사이트로 이동해서 스프링 프로젝트 생성 https://start.spring.io 프로젝트 선택 Project: Gradle Project Language: Java Spring Boot: 2.5.x Project Metadata Group: hello Artifact: thymeleaf-basic Name: thymeleaf-..

    감시 - 15683번

    감시 - 15683번

    내 코드 package com.company; import java.io.*; import java.util.*; public class Main { static int[][] arr; static int N, M, max, size; static int[][] direct = {{0, 1}, {1, 0}, {0, -1}, {-1, 0}}; static ArrayList cctv; public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readL..

    빵집 - 3109번

    빵집 - 3109번

    풀이 방법 최단 경로를 찾는 문제가 아닌 겹치지 않는 모든 경로를 찾는 문제이다. 위에서부터 탐색해서 경로를 찾으면 return 시켜주는 방식으로 풀이했고 경로를 찾지 못하게 되면 visited를 false로 바꾸는 것이 아니라 그 길로 가게되면 경로를 찾을 수 없기 때문에 true 상태로 남겨두었습니다. 내 코드 import java.io.*; import java.util.*; public class Main { static char[][] arr; static int R, C, count; static int[] direct = { -1, 0, 1 }; static boolean[][] visited; static boolean check; public static void main(String[]..

    스트림 활용

    스트림 활용

    필터링 filter 메서드 boolean을 반환하는 함수를 인수로 받아서 일치하는 모든 요소를 포함하는 스트림 반환 distinct 메서드 고유 요소로 이루어진 스트림을 반환 (중복 제거) 스트림 슬라이싱 자바 9 는 스트림의 요소를 효과적으로 선택할 수 있도록 takeWhile, dropWhile 새로운 메서드 지원 takeWhile filter 와 달리 참이 아닐경우 거기서 멈춤 (filter는 참인 요소 모두 확인해서 가져옴) dropWhile 거짓이 되는 지점까지 발견된 요소를 버린다. (takeWhile과 반대) List sliceMenu1 = menu.stream() .filter(dish -> dish.getCalories() < 320) .collect(Collectors.toList())..

    스트림

    자바 8 스트림 API 특징 선언형 : 더 간결하고 가독성이 좋아진다. 조립할 수 있음 : 유연성이 좋아진다. 병렬화 : 성능이 좋아진다. 학습에 사용할 클래스 package com.company; public class Dish { private final String name; private final boolean vegetarian; private final int calories; private final Type type; public Dish(String name, boolean vegetarian, int calories, Type type) { this.name = name; this.vegetarian = vegetarian; this.calories = calories; this.ty..

    가장 가까운 공통 조상 - 3584번

    가장 가까운 공통 조상 - 3584번

    풀이 방법 각 노드의 부모노드를 저장해주고 루트 노드는 그대로 0으로 두었다. findHeight 메서드를 이용해서 두 노드의 높이를 구해주면서 루트 노드까지 가는 과정에서 만난 노드들의 높이도 저장해 주었다. 가까운 공통 조상을 구하기 위해 먼저 높이를 낮은 쪽으로 맞춰주고 한 칸씩 부모로 가면서 구해주었다. 내 코드 package com.company; import java.io.*; import java.util.*; public class Main { static int[] tree, height; static int T, N, a, b; public static void main(String args[]) throws IOException { BufferedReader br = new Buffe..