From 1f8878455df7493fef937015bcb25c7827c08c8e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=A1=B0=EC=98=81=EC=A7=84?= Date: Tue, 10 Mar 2026 16:58:42 +0900 Subject: [PATCH] =?UTF-8?q?FEAT:=20BOJ=5F11053=5F=EA=B0=80=EC=9E=A5=20?= =?UTF-8?q?=EA=B8=B4=20=EC=A6=9D=EA=B0=80=ED=95=98=EB=8A=94=20=EB=B6=80?= =?UTF-8?q?=EB=B6=84=EC=88=98=EC=97=B4=20-=20PASS?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BOJ_11053_YoungJin.java" | 63 +++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 "0305/basic_B11053_\352\260\200\354\236\245\352\270\264\354\246\235\352\260\200\355\225\230\353\212\224\353\266\200\353\266\204\354\210\230\354\227\264/BOJ_11053_YoungJin.java" diff --git "a/0305/basic_B11053_\352\260\200\354\236\245\352\270\264\354\246\235\352\260\200\355\225\230\353\212\224\353\266\200\353\266\204\354\210\230\354\227\264/BOJ_11053_YoungJin.java" "b/0305/basic_B11053_\352\260\200\354\236\245\352\270\264\354\246\235\352\260\200\355\225\230\353\212\224\353\266\200\353\266\204\354\210\230\354\227\264/BOJ_11053_YoungJin.java" new file mode 100644 index 0000000..c921ef5 --- /dev/null +++ "b/0305/basic_B11053_\352\260\200\354\236\245\352\270\264\354\246\235\352\260\200\355\225\230\353\212\224\353\266\200\353\266\204\354\210\230\354\227\264/BOJ_11053_YoungJin.java" @@ -0,0 +1,63 @@ +import java.io.*; +import java.util.*; + +public class Main { + + public static class SegmentTree { + private int[] tree; + private int n; + + public SegmentTree(int n) { + this.n = n; + this.tree = new int[n * 4]; + } + + public int query(int left, int right) { + return query(1, 0, n - 1, left, right); + } + + private int query(int node, int start, int end, int left, int right) { + if(right < start || end < left) { + return 0; + } + if(left <= start & end <= right) { + return tree[node]; + } + int mid = (start + end) / 2; + int leftQuery = query(node * 2, start, mid, left, right); + int rightQuery = query(node * 2 + 1, mid + 1, end, left, right); + return Math.max(leftQuery, rightQuery); + } + + public int update(int index, int value) { + return update(1, 0, n - 1, index, value); + } + + private int update(int node, int start, int end, int index, int value) { + if(index < start || end < index) { + return tree[node]; + } + if(start == end) { + return tree[node] = value; + } + int mid = (start + end) / 2; + int leftUpdate = update(node * 2, start, mid, index, value); + int rightUpdate = update(node * 2 + 1, mid + 1, end, index, value); + return tree[node] = Math.max(leftUpdate, rightUpdate); + } + + } + + public static void main(String[] args) throws IOException { + Scanner sc = new Scanner(System.in); + int n = sc.nextInt(); + SegmentTree st = new SegmentTree(1001); + for(int i = 0; i < n; i++) { + int input = sc.nextInt(); + int q = st.query(0, input - 1); + st.update(input, q + 1); + } + System.out.println(st.query(0, 1000)); + + } +} \ No newline at end of file