File tree Expand file tree Collapse file tree 1 file changed +53
-0
lines changed
Expand file tree Collapse file tree 1 file changed +53
-0
lines changed Original file line number Diff line number Diff line change 1+ ``` java
2+ import java.io.BufferedReader ;
3+ import java.io.IOException ;
4+ import java.io.InputStreamReader ;
5+ import java.util.* ;
6+
7+ public class Main {
8+ private static BufferedReader br;
9+ private static StringTokenizer st;
10+
11+ public static void main (String [] args ) throws IOException {
12+ br = new BufferedReader (new InputStreamReader (System . in));
13+ st = new StringTokenizer (br. readLine());
14+ int n = Integer . parseInt(st. nextToken());
15+ int k = Integer . parseInt(st. nextToken());
16+ Queue<Integer > q = new LinkedList<> ();
17+ HashSet<Integer > visited = new HashSet<> ();
18+ st = new StringTokenizer (br. readLine());
19+ for (int i = 0 ; i < n; i++ ) {
20+ int x = Integer . parseInt(st. nextToken());
21+ q. offer(x);
22+ visited. add(x);
23+ }
24+
25+ long answer = 0 ;
26+ int distance = 1 ;
27+ int builtCount = 0 ;
28+ int [] dxs = { - 1 , 1 };
29+
30+ outer: // naming가능한 break문
31+ while (! q. isEmpty()) {
32+ int size = q. size();
33+ for (int t = 0 ; t < size; t++ ) {
34+ int x = q. poll();
35+ for (int d : dxs) {
36+ int nx = x + d;
37+ if (visited. contains(nx))
38+ continue ;
39+ visited. add(nx);
40+ q. offer(nx);
41+ answer += distance;
42+ builtCount++ ;
43+ if (builtCount == k)
44+ break outer;
45+ }
46+ }
47+ distance++ ;
48+ }
49+ System . out. println(answer);
50+ br. close();
51+ }
52+ }
53+ ```
You can’t perform that action at this time.
0 commit comments