본문 바로가기

분류 전체보기262

[백준] 1806 부분합 (Java) [투포인터] 문제 https://www.acmicpc.net/problem/1806 1806번: 부분합 첫째 줄에 N (10 ≤ N < 100,000)과 S (0 < S ≤ 100,000,000)가 주어진다. 둘째 줄에는 수열이 주어진다. 수열의 각 원소는 공백으로 구분되어져 있으며, 10,000이하의 자연수이다. www.acmicpc.net 알고리즘 투포인터 풀이 1. start, end 위치 각각 정의 2. 합이 S이상 인 경우 현재까지 더한 sum에서 start 위치에 있는 값을 빼주고 start++ 처리한다. 또한, 합이 S이상인 경우일 때 최소 길이를 구해야 하기 떄문에 최소 길이를 구하는 로직도 포함시킨다. 3. 합이 S미만 인 경우 end 위치에 있는 값를 더하고 end++ 처리한다. 4. 최소 길이 출.. 2023. 7. 28.
[백준] 11404 플로이드 (Java) [FloydWashal] 문제 https://www.acmicpc.net/problem/11404 11404번: 플로이드 첫째 줄에 도시의 개수 n이 주어지고 둘째 줄에는 버스의 개수 m이 주어진다. 그리고 셋째 줄부터 m+2줄까지 다음과 같은 버스의 정보가 주어진다. 먼저 처음에는 그 버스의 출발 도시의 번호가 www.acmicpc.net 알고리즘 플로이드 와샬 풀이 전형적인 플로이드 와샬 알고리즘이다. "시작 도시와 도착 도시를 연결하는 노선은 하나가 아닐 수 있다." 조건이 있기 때문에, input 값 입력시 dist[from][to] = Math.min(dist[from][to], w); 처리를 해준다. 이것만 주의하면 되며, 플로이드 와샬을 통해 문제를 풀면 된다. 코드 package com.company; import.. 2023. 7. 28.
[백준] 2252. 줄세우기(Java) [위상정렬] 문제 https://www.acmicpc.net/problem/2252 2252번: 줄 세우기 첫째 줄에 N(1 ≤ N ≤ 32,000), M(1 ≤ M ≤ 100,000)이 주어진다. M은 키를 비교한 회수이다. 다음 M개의 줄에는 키를 비교한 두 학생의 번호 A, B가 주어진다. 이는 학생 A가 학생 B의 앞에 서야 한다는 의 www.acmicpc.net 알고리즘 위상정렬 풀이 1. 진입 차수가 0인 정점을 큐에 삽입한다. 2. 큐에서 원소를 꺼내 연결된 모든 간선을 제거한다. 3. 간선 제거 이후에 진입차수가 0이 된 정점을 큐에 삽입한다. 4. 큐가 빌 때 까지 2~3번 반복. 코드 package com.company; import java.io.*; import java.util.*; publi.. 2023. 7. 25.
[백준] 1922 (Java) [MST 알고리즘] 문제 https://www.acmicpc.net/problem/1922 알고리즘 크루스칼 알고리즘 풀이 가중치가 짧은 순으로 정렬을 해주고 UnionFind를 통해 그래프를 연결해준다. 그 과정에서 가중치를 더하며 정답을 구한다. 코드 package com.company; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.StringTokenizer; public class Test_Cruskal { static in.. 2023. 7. 25.
[백준] 1717 집합의 표현(Java) [Union-Find] 문제 https://www.acmicpc.net/problem/1717 알고리즘 Union-Find 풀이 대표적인 union-find 문제이다. parent를 얻어오는 함수, parent를 합치는 함수, parent가 동일한지 확인하는 함수를 구현한 후 입력 받는 flag에 따라 parent를 합치거나 출력한다. 코드 package com.company; import java.io.*; import java.util.StringTokenizer; public class Test_UnionFind { static int N, M; static int[] parent; public static void main(String args[]) throws IOException { BufferedReader bf .. 2023. 7. 24.
[Kotlin] 범위 지정 함수(apply, with, let, also, run) 범위 지정 함수(Scope function)란?범위 지정 함수는 특정 객체에 대한 작업을 블록 안에 넣어 실행할 수 있도록 하는 함수이다. 블록은 특정 객체에 대해 할 작업의 범위가 되며, 따라서 범위 지정 함수라 부른다. 특정 객체에 대한 작업을 블록안에 넣게 되면 가독성이 증가하여 유지 보수가 쉬워진다. 코틀린에서는 let, run, apply, also, with 총 5가지 기본적인 범위 지정함수를 지원한다.,코틀린의 범위 지정 함수1. apply2. run3. with4. let5. also 범위 지정함수와 수신객체 지정 람다(함수)범위 지정함수는 다른 말로 수신객체 지정 람다(함수)라고도 부른다. 이유는 수신객체를 명시하지 않거나 it을 호출하는 것만으로 람다 안에서 수신 객체의 메서드를 호출할.. 2023. 7. 22.