Problem Solving/BOJ

    [백준, BOJ 10999] 구간 합 구하기 2 (java)

    https://www.acmicpc.net/problem/10999메모리: 148,184 KB , 시간: 676 ms사용 알고리즘: 세그먼트 트리, 느리게 갱신되는 세그먼트 트리, 자료 구조 세그먼트 트리 중에서도 Lazy Propagation을 적용하여 풀어야 하는 문제이다.Lazy Propagation을 적용한 세그먼트 트리의 개념은 여기에 자세히 나와있다.import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.StringTokenizer;public class Main { private static class SegmentTree { long[] tree; long[] lazy; ..

    [백준, BOJ 2170] 선 긋기 (java)

    https://www.acmicpc.net/problem/2170메모리: 371,304 KB , 시간: 2,936 ms사용 알고리즘: 정렬, 스위핑 HashMap의 key들을 리스트에 담아 정렬하는 과정 대신 TreeMap을 사용했었는데 시간 초과가 났다. TreeMap에서 매번 key를 찾고 새로운 key를 정렬해서 넣고 하는 것보다HashMap에서 $O(1)$로 key를 찾고 새로운 key를 넣은 후, 한 번에 keySet을 정렬하는 것이 더 빠르다.import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.*;public class Main { public static void main(String[] args..

    [백준, BOJ 1517] 버블 소트 (java)

    https://www.acmicpc.net/problem/1517메모리: 19,4524 KB , 시간: 536 ms사용 알고리즘: 분할 정복, 정렬버블 소트로 문제를 해결하면 $O(N^2)$머지 소트로 문제를 해결하면 $O(NlogN)$따라서, 문제 제목은 버블 소트이지만 머지 소트로 답을 구해야 한다. 분할 정복 과정에서정렬된 두 배열 left와 right가 있고, 두 배열을 정렬하며 합쳐야 한다.left[idxL]과 right[idxR]을 비교하며 ret 배열에 담다가left[idxL] > right[idxR]인 지점에서버블 소트였다면 right[idxR]을 left[idxL] ~ left[left.length - 1]들과 swap해주는 과정이 일어났을 것이다.따라서 answer에 left.lengt..

    [백준, BOJ 1080] 행렬 (java)

    https://www.acmicpc.net/problem/1080메모리: 11,620 KB , 시간: 68 ms사용 알고리즘: 그리디 알고리즘 import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.StringTokenizer;public class Main { public static void main(String[] args) throws Exception{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine()..

    [백준, BOJ 11375] 열혈강호 (java)

    https://www.acmicpc.net/problem/11375메모리: 139,832 KB , 시간: 796 ms사용 알고리즘: 그리디 알고리즘, 이분 매칭처음 풀이는직원 객체인 Person의 size에 본인이 담당할 수 있는 작업(list) 중 아직 담당 직원이 정해지지 않은 작업의 개수를 저장하도록 하였다.그리고 매번 size가 가장 작은 직원이 담당할 수 있는 작업 중 아직 담당 직원이 정해지지 않은 아무 작업에 해당 직원을 할당해 주는 방식을 사용했다.import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.*;public class Main { static class Person implements C..

    [백준, BOJ 1708] 볼록 껍질 (java)

    https://www.acmicpc.net/problem/1708메모리: 45,696 KB , 시간: 556 ms사용 알고리즘: 볼록 껍질, 기하학, Convex Hull 알고리즘, 그라함 스캔 알고리즘, ccw 알고리즘블록 껍질 알고리즘을 처음 접해서 여기서 개념을 학습하고 풀어봤다.import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.*;public class Main { static class Point{ long x; long y; Point(long x, long y) { this.x = x; this.y = y; ..

    [백준, BOJ 1254] 팰린드롬 만들기 (java)

    https://www.acmicpc.net/problem/1254메모리: 11,488 KB , 시간: 68 ms사용 알고리즘: 브루트포스 알고리즘, 문자열 import java.io.BufferedReader;import java.io.InputStreamReader;public class Main { public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String S = br.readLine(); boolean flag; for(int i = 0; i

    [백준, BOJ 1347] 미로 만들기 (java)

    https://www.acmicpc.net/problem/1347메모리: 11,588 KB , 시간: 72 ms사용 알고리즘: 구현, 시뮬레이션 import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.ArrayList;import java.util.List;public class Main { public static void main(String[] args) throws Exception{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int length = Integer.parseInt(br.read..

    [백준, BOJ 1138] 한 줄로 서기 (java)

    https://www.acmicpc.net/problem/1138메모리: 11,648 KB , 시간: 68 ms사용 알고리즘: 위상정렬, 그리디 알고리즘, 구현 import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.ArrayList;import java.util.List;import java.util.PriorityQueue;import java.util.StringTokenizer;public class Main { public static void main(String[] args) throws Exception{ BufferedReader br = new BufferedReader(new In..

    [백준, BOJ 1459] 걷기 (java)

    https://www.acmicpc.net/problem/1459메모리: 11,516 KB , 시간: 68 ms사용 알고리즘: 많은 조건 분기, 수학 import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.StringTokenizer;public class Main { public static void main(String[] args) throws Exception{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLi..