[트리] 트리의 리프노드 개수 구하기
·
Computer Science/Algorithms
https://www.acmicpc.net/problem/1068 1068번: 트리첫째 줄에 트리의 노드의 개수 N이 주어진다. N은 50보다 작거나 같은 자연수이다. 둘째 줄에는 0번 노드부터 N-1번 노드까지, 각 노드의 부모가 주어진다. 만약 부모가 없다면 (루트) -1이 주어진다www.acmicpc.net import syssi = lambda : sys.stdin.readline().rstrip()l = lambda : list(map(int, si().split()))def dfs(root) : # x의 subtree에 대해 leaf[x]를 계산해주는 함수 if not child[root] : # 아무것도 없다면 리프노드 leaf[root] = 1 for node in ..
[트리] 트리의 지름 구하기
·
Computer Science/Algorithms
https://www.acmicpc.net/problem/1967 1967번: 트리의 지름파일의 첫 번째 줄은 노드의 개수 n(1 ≤ n ≤ 10,000)이다. 둘째 줄부터 n-1개의 줄에 각 간선에 대한 정보가 들어온다. 간선에 대한 정보는 세 개의 정수로 이루어져 있다. 첫 번째 정수는 간선이 연www.acmicpc.net 트리의 지름은 DFS 두 번으로 O(N)의 시간 복잡도로 구현이 가능하다.트리에서 아무 노드나 잡고 그 노드에 대한 먼 노드를 구하고 이 노드를 n1이라고 하자.n1에 대한 가장 먼 노드를 한번 더 구한다. 이 노드를 n2라고 하자.이제 n1과 n2의 거리가 트리의 지름이 된다.import sys, heapqfrom collections import dequesi = sys.std..
[링크드 리스트] 링크드 리스트 뒤집기
·
Computer Science/Algorithms
https://leetcode.com/problems/reverse-linked-list-ii/description/ LeetCode - The World's Leading Online Programming Learning PlatformLevel up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.leetcode.com /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * Li..
[MST] BOJ 1197번: 최소 스패닝 트리
·
Computer Science/Algorithms
https://www.acmicpc.net/problem/1197 1197번: 최소 스패닝 트리 첫째 줄에 정점의 개수 V(1 ≤ V ≤ 10,000)와 간선의 개수 E(1 ≤ E ≤ 100,000)가 주어진다. 다음 E개의 줄에는 각 간선에 대한 정보를 나타내는 세 정수 A, B, C가 주어진다. 이는 A번 정점과 B번 정점이 www.acmicpc.net package Data_Structure.union_find; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Scanner; class Edge implements Comparable { int v1; int v2; int ..
spring에 swagger 적용하면서 겪은 3가지 에러 해결하기
·
Backend/Spring Boot
스프링 2.X.X 특정 버전 이후로 Swagger2:2.X.X 버전 실행 에러 발생 해결 -> build.gradle파일의 springfox ~ 버전들을 모두 3.0.0 으로 바꿔준다. // Swagger Lib implementation 'io.springfox:springfox-swagger2:3.0.0' implementation 'io.springfox:springfox-swagger-ui:3.0.0' implementation 'io.springfox:springfox-boot-starter:3.0.0' org.springframework.context.ApplicationContextException: Failed to start bean 'documentationPluginsBootstrap..
org.apache.ibatis.binding.BindingException: Parameter 'offset' not found. Available parameters are [arg1, arg0, param1, param2]
·
Backend/Mybatis
페이지네이션 구현 중 mapper 쪽에서 에러가 발생했다. Board Mapper에서 넘겨받은 인자들이 변수들을 찾아가지 못해서 발생한 오류라고 한다. @Param 어노테이션을 통해 넘겨줄 인자를 정확히 명시해 에러를 해결할 수 있었다. 출처 : https://dblee.tistory.com/145
자바 컬렉션 프레임워크 - Java Collections Framework
·
Backend/Java
자료구조의 분류대표적으로 선형 자료구조와 비선형 자료구조 나눌 수 있는데 이러한 분류를 보통 형태에 따른 자료구조라고 보며, 각 자료구조에 알맞게 구체화된 것들을 구현된 자료구조라고 한다. 선형 자료구조(Linear Data Structure): 리스트(List), 큐(Queue), 덱(Deque) 비선형 자료구조(NonLinear Data Structure): 그래프(Graph), 트리(Tree) 집합 자료구조: 집합(Set) Java Collection Framework일정 타입의 데이터이 모여 쉽게 가공할 수 있도록 지원하는 자료구조의 뼈대(기본 구조)라는 의미 자바에서 제공하는 Collection은 크게 3가지 인터페이스로 나뉜다. (List, Queue, Set)앞서 설명한 형태에 따른 자료구조..
HTTP 메서드 활용
·
Computer Science/Network
[클라이언트에서 서버로 데이터 전송] 1. 쿼리 파라미터를 통한 데이터 - GET - 주로 정렬 필터(검색어) 2. 메시지 바디를 통한 데이터 전송 - POST, PUT, PATCH - 회원 가입, 상품 주문, 리소스 등록, 리소스 변경 4가지 상황 1.정적 데이터 조회 * 이미지, 정적 텍스트 문서 → 조회는 GET 사용, 일반적으로 쿼리 파라미터 없이 리소스 경로로 단순하게 조회 가능 2. 동적 데이터 조회 → 쿼리 파라미터 사용 * 주로 검색, 게시판 목록에서 정렬 필터(검색어) → 조회는 GET 사용, GET은 쿼리 파라미터를 사용해서 데이터를 전달 3. HTML Form을 통한 데이터 전송 - 회원 가입, 상품 주문, 데이터 변경 - HTML Form submit 시 POST전송 : 회원가입, ..
제네릭(Generic) - 1
·
Backend/Java
제네릭 - 클래스 내부에서 지정하는 것이 아닌 외부에서 사용자에 의해 지정되는 것 - 한마디로 특정(specific) 타입을 미리 지정해주는 것이 아닌 필요에 의해 지정할 수 있도록 하는 일반(Generic) 타입이라는 것 - JDK 1.5 이전에서는 여러 타입을 사용하는 대부분의 클래스나 메서드에서 인수나 반환값으로 Object를 사용하였다. 하지만 이 경우에는 반환된 Object 객체를 다시 원하는 타입으로 변환해야 하며, 이때 오류가 발생할 가능성도 존재한다. JDK 1.5부터 도입된 제네릭을 사용하면 컴파일 시 미리 타입이 정해지므로, 타입 검사나 타입 변환과 같은 번거로운 과정을 생략할 수 있게 된다. 제네릭의 제거 시기 - 자바 코드에서 선언되고 사용된 제네릭 타입은 컴파일 시 컴파일러에 의해..
JDK, JRE 그리고 JVM
·
Backend/Java
JDK Java Development kit JDK = JRE + 개발을 위한 도구 컴파일러, 디버그 도구 등이 포함 JRE Java Runtime Environment JRE = JVM + 자바 프로그램 실행에 필요한 라이브러리 파일 등 JVM의 실행환경 구현 JVM : 자바 프로그램을 구동해주는 프로세서(엔진) OS마다 다른 컴파일러가 필요하지만 JAVA는 JVM이 똑같은 바이트 코드를 OS마다 다르게 번역해준다. (⇒ 해당 OS가 이해할 수 있도록 번역해준다) 그렇기 때문에 플랫폼에 독립적인 개발이 가능하다. 동작 과정 자바 실행 파일을 실행하면 JVM은 OS로부터 메모리를 할당한다. .java(자바 소스코드)를 컴파일러가 .class(바이트 코드)로 컴파일해준다. 컴파일된 바이트 코드는 Java ..
mvnrepository 사용법
·
Backend/Spring Boot
1. https://mvnrepository.com/ 접속 2. 필요한 API 또는 라이브러리 검색 3. 사용할 버전 선택 4. Maven에 있는 코드 복사 후 스프링 프로젝트의 pom.xml에 추가 5. 끝 ! 간단합니다.
[LeetCode] 152. Maximum Product Subarray
·
Problem Solving/LeetCode
출처 : https://leetcode.com/problems/maximum-product-subarray/description/ Maximum Product Subarray - LeetCode Can you solve this real interview question? Maximum Product Subarray - Given an integer array nums, find a subarray that has the largest product, and return the product. The test cases are generated so that the answer will fit in a 32-bit integer. Examp leetcode.com 아래 코드는 브루트포스로 스스로 해결하였..