From 406eddececd88c8ec2ade5ab18ac1cbeda2fea5c Mon Sep 17 00:00:00 2001 From: kwangyong <58154661+encoreKwang@users.noreply.github.com> Date: Sat, 4 Mar 2023 12:25:02 +0900 Subject: [PATCH 1/3] =?UTF-8?q?Solution=5F=EC=A0=84=ED=99=94=EB=B2=88?= =?UTF-8?q?=ED=98=B8=EB=AA=A9=EB=A1=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...2\210\355\230\270\353\252\251\353\241\235.java" | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 "\354\235\264\352\264\221\354\232\251/Solution_\354\240\204\355\231\224\353\262\210\355\230\270\353\252\251\353\241\235.java" diff --git "a/\354\235\264\352\264\221\354\232\251/Solution_\354\240\204\355\231\224\353\262\210\355\230\270\353\252\251\353\241\235.java" "b/\354\235\264\352\264\221\354\232\251/Solution_\354\240\204\355\231\224\353\262\210\355\230\270\353\252\251\353\241\235.java" new file mode 100644 index 0000000..5bdb819 --- /dev/null +++ "b/\354\235\264\352\264\221\354\232\251/Solution_\354\240\204\355\231\224\353\262\210\355\230\270\353\252\251\353\241\235.java" @@ -0,0 +1,14 @@ +import java.util.*; +class Solution { + public boolean solution(String[] phone_book) { + boolean answer = true; + Arrays.sort(phone_book); + + for(int i = 0 ; i < phone_book.length-1; i++){ + if(phone_book[i+1].startsWith(phone_book[i])) + return false; + } + + return answer; + } +} \ No newline at end of file From 603c5f96a86e05a1cc2ffa9c0c489a6022937a56 Mon Sep 17 00:00:00 2001 From: kwangyong Date: Sun, 19 Mar 2023 02:27:45 +0900 Subject: [PATCH 2/3] =?UTF-8?q?boj-23309-=EC=B2=A0=EB=8F=84=EA=B3=B5?= =?UTF-8?q?=EC=82=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\353\217\204\352\263\265\354\202\254.java" | 74 +++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 "\354\235\264\352\264\221\354\232\251/Main_23309_\354\262\240\353\217\204\352\263\265\354\202\254.java" diff --git "a/\354\235\264\352\264\221\354\232\251/Main_23309_\354\262\240\353\217\204\352\263\265\354\202\254.java" "b/\354\235\264\352\264\221\354\232\251/Main_23309_\354\262\240\353\217\204\352\263\265\354\202\254.java" new file mode 100644 index 0000000..89b93e5 --- /dev/null +++ "b/\354\235\264\352\264\221\354\232\251/Main_23309_\354\262\240\353\217\204\352\263\265\354\202\254.java" @@ -0,0 +1,74 @@ +```java +package Baekjoon; + +import java.io.BufferedReader; +import java.io.InputStreamReader; +import java.util.StringTokenizer; + +public class Main_23309_철도공사 { + public static int[] preNodes = new int[1000001]; //인덱스를 "해당 역의 고유번호"로 하고 값으로 "직전 역의 고유번호"를 가진다. + public static int[] postNodes = new int[1000001]; ; //인덱스를 "해당 역의 고유번호"로 하고 값으로 "직후 역의 고유번호"를 가진다. + public static void add(int target, int node) { + if(target == -1) { + preNodes[node]= postNodes[node] = node; + return; + } + preNodes[node] = target;//새로 추가된 node의 직전 노드는 target으로 설정함 + postNodes[node] = postNodes[target]; //target이 가리키던 노드를 새로 추가된 node의 직후 노드로 설정함 + preNodes[postNodes[target]] = node;//target이 가리키고 있던 노드의 직전 노드를 새로 추가된 node로 설정 + postNodes[target] = node; //target이 가리키는 노드는 새로 추가된 노드로 설정함 + } + public static void delete(int targetNode) { + //target의 직전 노드가 가리키는 노드를 target이 가리키는 노드로 설정해야함 + postNodes[preNodes[targetNode]] = postNodes[targetNode]; + //target의 직후 노드의 직전 노드는 target의 직전 노드로 설정해야함 + preNodes[postNodes[targetNode]] = preNodes[targetNode]; + } + + public static void main(String[] args) throws Exception{ + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + StringTokenizer st = new StringTokenizer(br.readLine()); + int n = Integer.parseInt(st.nextToken()); + int m = Integer.parseInt(st.nextToken()); + st = new StringTokenizer(br.readLine()); + int target = -1; + for(int i = 0; i < n; i ++) { + int node = Integer.parseInt(st.nextToken()); + add(target, node); + target = node; + } + for(int w = 0; w < m; w++) { + st = new StringTokenizer(br.readLine()); + String type = st.nextToken(); + + int targetNode = Integer.parseInt(st.nextToken()); + int newNode = 0; + if(st.hasMoreTokens()) { + newNode = Integer.parseInt(st.nextToken()); + } + + switch (type) { + case "BN": + //고유 번호 i를 가진 역의 다음 역의 고유번호를 출력하고 그 사이에 고육번호 j를 설립한다. + System.out.println(postNodes[targetNode]); + add(targetNode, newNode); + break; + case "BP": + System.out.println(preNodes[targetNode]); + add(preNodes[targetNode], newNode); + break; + case "CN": + //고유 번호 i를 가진 역의 다음 역을 폐쇄하고 그 역의 고유 번호를 출력한다. + System.out.println(postNodes[targetNode]); + delete(postNodes[targetNode]); + break; + case "CP": + //고유 번호 i를 가진 역의 이전 역을 폐쇄하고 그 역의 고유 번호를 출력한다. + System.out.println(preNodes[targetNode]); + delete(preNodes[targetNode]); + break; + } + } + } + +} From 7f9acee784b45d0916ad4f66c516d30ef1aa0bd2 Mon Sep 17 00:00:00 2001 From: kwangyong Date: Sun, 19 Mar 2023 02:41:42 +0900 Subject: [PATCH 3/3] =?UTF-8?q?boj-=EC=B2=A0=EB=8F=84=EA=B3=B5=EC=82=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\353\217\204\352\263\265\354\202\254.java" | 66 +++++++++++-------- 1 file changed, 39 insertions(+), 27 deletions(-) diff --git "a/\354\235\264\352\264\221\354\232\251/Main_23309_\354\262\240\353\217\204\352\263\265\354\202\254.java" "b/\354\235\264\352\264\221\354\232\251/Main_23309_\354\262\240\353\217\204\352\263\265\354\202\254.java" index 89b93e5..232d4b1 100644 --- "a/\354\235\264\352\264\221\354\232\251/Main_23309_\354\262\240\353\217\204\352\263\265\354\202\254.java" +++ "b/\354\235\264\352\264\221\354\232\251/Main_23309_\354\262\240\353\217\204\352\263\265\354\202\254.java" @@ -1,4 +1,3 @@ -```java package Baekjoon; import java.io.BufferedReader; @@ -6,23 +5,34 @@ import java.util.StringTokenizer; public class Main_23309_철도공사 { - public static int[] preNodes = new int[1000001]; //인덱스를 "해당 역의 고유번호"로 하고 값으로 "직전 역의 고유번호"를 가진다. - public static int[] postNodes = new int[1000001]; ; //인덱스를 "해당 역의 고유번호"로 하고 값으로 "직후 역의 고유번호"를 가진다. - public static void add(int target, int node) { - if(target == -1) { - preNodes[node]= postNodes[node] = node; - return; + static StringBuilder sb = new StringBuilder(); + public static class Station{ + public int[] preNodes; //인덱스를 "해당 역의 고유번호"로 하고 값으로 "직전 역의 고유번호"를 가진다. + public int[] postNodes; //인덱스를 "해당 역의 고유번호"로 하고 값으로 "직후 역의 고유번호"를 가진다. + + Station() { + preNodes = new int[1000001]; + postNodes = new int[1000001]; + } + public void add(int target, int node) { + if(target == -1) { + preNodes[node] = postNodes[node] = node; + return; + } + preNodes[node] = target;//새로 추가된 node의 직전 노드는 target으로 설정함 + postNodes[node] = postNodes[target]; //target이 가리키던 노드를 새로 추가된 node의 직후 노드로 설정함 + preNodes[postNodes[target]] = node;//target이 가리키고 있던 노드의 직전 노드를 새로 추가된 node로 설정 + postNodes[target] = node; //target이 가리키는 노드는 새로 추가된 노드로 설정함 + } + public void delete(int targetNode) { + //target의 직전 노드가 가리키는 노드를 target이 가리키는 노드로 설정해야함 + postNodes[preNodes[targetNode]] = postNodes[targetNode]; + //target의 직후 노드의 직전 노드는 target의 직전 노드로 설정해야함 + preNodes[postNodes[targetNode]] = preNodes[targetNode]; + } + void print(int num) { + sb.append(num+"\n"); } - preNodes[node] = target;//새로 추가된 node의 직전 노드는 target으로 설정함 - postNodes[node] = postNodes[target]; //target이 가리키던 노드를 새로 추가된 node의 직후 노드로 설정함 - preNodes[postNodes[target]] = node;//target이 가리키고 있던 노드의 직전 노드를 새로 추가된 node로 설정 - postNodes[target] = node; //target이 가리키는 노드는 새로 추가된 노드로 설정함 - } - public static void delete(int targetNode) { - //target의 직전 노드가 가리키는 노드를 target이 가리키는 노드로 설정해야함 - postNodes[preNodes[targetNode]] = postNodes[targetNode]; - //target의 직후 노드의 직전 노드는 target의 직전 노드로 설정해야함 - preNodes[postNodes[targetNode]] = preNodes[targetNode]; } public static void main(String[] args) throws Exception{ @@ -30,11 +40,12 @@ public static void main(String[] args) throws Exception{ StringTokenizer st = new StringTokenizer(br.readLine()); int n = Integer.parseInt(st.nextToken()); int m = Integer.parseInt(st.nextToken()); + Station station = new Station(); st = new StringTokenizer(br.readLine()); int target = -1; for(int i = 0; i < n; i ++) { int node = Integer.parseInt(st.nextToken()); - add(target, node); + station.add(target, node); target = node; } for(int w = 0; w < m; w++) { @@ -50,25 +61,26 @@ public static void main(String[] args) throws Exception{ switch (type) { case "BN": //고유 번호 i를 가진 역의 다음 역의 고유번호를 출력하고 그 사이에 고육번호 j를 설립한다. - System.out.println(postNodes[targetNode]); - add(targetNode, newNode); + station.print(station.postNodes[targetNode]); + station.add(targetNode, newNode); break; case "BP": - System.out.println(preNodes[targetNode]); - add(preNodes[targetNode], newNode); + station.print(station.preNodes[targetNode]); + station.add(station.preNodes[targetNode], newNode); break; case "CN": //고유 번호 i를 가진 역의 다음 역을 폐쇄하고 그 역의 고유 번호를 출력한다. - System.out.println(postNodes[targetNode]); - delete(postNodes[targetNode]); + station.print(station.postNodes[targetNode]); + station.delete(station.postNodes[targetNode]); break; case "CP": //고유 번호 i를 가진 역의 이전 역을 폐쇄하고 그 역의 고유 번호를 출력한다. - System.out.println(preNodes[targetNode]); - delete(preNodes[targetNode]); + station.print(station.preNodes[targetNode]); + station.delete(station.preNodes[targetNode]); break; } } + System.out.println(sb.toString()); } -} +} \ No newline at end of file