-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathjava-data.js
More file actions
1 lines (1 loc) · 425 KB
/
Copy pathjava-data.js
File metadata and controls
1 lines (1 loc) · 425 KB
1
function a2_0x40e8(){const _0x2ba85b=['get','static','\x20\x20\x20\x20q.offer(next);','BFS에서\x20이웃\x20노드의\x20거리를\x20계산하는\x20코드를\x20완성하세요.','int\x20v\x20=\x20matrix[___][___];\x20\x20//\x202행\x203열','int\x20n\x20=\x20Integer.parseInt(s);','public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20String\x20s\x20=\x20\x22I\x20love\x20Java\x22;\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(s.contains(\x22Java\x22))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(\x22Java\x20포함\x22);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a}','int[]\x20arr\x20=\x20{1,\x202,\x202,\x203,\x203,\x203};','\x20\x20\x20\x20for\x20(int\x20j\x20=\x20i\x20+\x201;\x20j\x20<\x20nums.length;\x20j++)\x20{','String\x20sub\x20=\x20s.___(7);','드릴\x202\x20—\x20Comparator\x20람다\x20정렬','방문하지\x20않은\x20노드만\x20dfs()를\x20호출합니다.\x20visited\x20배열로\x20재방문을\x20방지합니다.','int\x20i\x20=\x200;','입력\x20문자열\x20앞뒤\x20공백을\x20제거하는\x20메서드를\x20완성하세요.','System.out.println(list);','\x20\x20\x20\x20System.out.println(\x22일치\x20(대소문자\x20무시)\x22);','break는\x20반복문을\x20즉시\x20종료합니다.\x20while(true)와\x20break를\x20함께\x20쓰는\x20패턴이\x20자주\x20쓰입니다.','break를\x20빠뜨리면\x20다음\x20case까지\x20실행됩니다(fall-through).\x20의도하지\x20않은\x20동작이므로\x20주의하세요.','int\x20n\x20=\x20Integer.parseInt(br.readLine().trim());','int\x20day\x20=\x201;','return\x20n\x20*\x20factorial(n\x20-\x201);','Java의\x20모든\x20코드는\x20클래스\x20안에\x20있습니다.\x20main\x20메서드\x20구조를\x20완전히\x20외워야\x20하며,\x20static의\x20개념을\x20이해해야\x20합니다.','2060XWFYNM','s.replaceAll(\x22___\x22,\x20\x22\x22)','드릴\x204\x20—\x20isEmpty\x20종료\x20조건','Arrays.fill(dp,\x20Integer.MAX_VALUE);','break','System.out.println(max);','ArrayList<Integer>[]\x20g\x20=\x20new\x20ArrayList[n+1];\x0afor(int\x20i=1;i<=n;i++)\x20g[i]\x20=\x20new\x20ArrayList<>();\x0ag[u].add(v);\x20g[v].add(u);\x0afor(int\x20next\x20:\x20g[cur])\x20{\x20}','return\x20memo[n];','split(\x22;\x22\x20)','void\x20main()\x20{\x20}\x20→\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x20}','double\x20x\x20=\x203.14159;','c.increment();\x20c.increment();','empty','hasMore','Point\x20p\x20=\x20___\x20Point(3,\x204);','long','재귀는\x20메서드가\x20자기\x20자신을\x20호출하는\x20방식입니다.\x20DFS는\x20재귀를\x20이용해\x20그래프를\x20깊이\x20방향으로\x20탐색합니다.\x20백트래킹도\x20재귀\x20기반으로\x20구현합니다.','int[]\x20arr\x20=\x20new\x20int[5];','Java\x20배열은\x20선언할\x20때\x20타입과\x20크기를\x20지정합니다.\x20크기는\x20한\x20번\x20정해지면\x20변경할\x20수\x20없습니다.\x20인덱스는\x200부터\x20시작하며,\x20범위를\x20벗어나면\x20ArrayIndexOutOfBoundsException이\x20발생합니다.','yield','while\x20(true)\x20{','1을\x203번\x20왼쪽으로\x20시프트해\x208(=2^3)을\x20구하는\x20코드를\x20완성하세요.','sb.append(\x22Java\x22);','sum','<div\x20style=\x22line-height:1.7\x22>\x0a<b>🗂️\x20Stack\x20/\x20Queue\x20/\x20Deque\x20—\x20DFS/BFS\x20핵심\x20자료구조</b><br><br>\x0a<b>Stack\x20(LIFO)</b>:\x20<code>push\x20→\x20pop\x20→\x20peek</code><br>\x0a<b>Queue\x20(FIFO)</b>:\x20<code>offer\x20→\x20poll\x20→\x20peek</code><br>\x0a<b>Deque\x20(양방향)</b>:\x20앞/뒤\x20모두\x20추가·삭제\x20가능<br><br>\x0a<b>📌\x20사용\x20권장\x20구현체</b><br>\x0a•\x20Stack\x20대신\x20→\x20<code>ArrayDeque</code>\x20(더\x20빠름)<br>\x0a•\x20BFS\x20→\x20<code>Queue<int[]></code>,\x20DFS\x20→\x20<code>Deque</code>\x20또는\x20재귀\x0a</div>','i+=2','자료형과\x20형변환','push','System.out.println(n\x20+\x201);\x20\x20//\x2043','\x20\x20\x20\x20if\x20(a[0]\x20!=\x20b[0])\x20return\x20a[0]\x20-\x20b[0];','170zrfYse','public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20static\x20boolean\x20isPalindrome(String\x20s)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20String\x20rev\x20=\x20new\x20StringBuilder(s).reverse().toString();\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20s.equals(rev);\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(isPalindrome(\x22racecar\x22));\x20//\x20true\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(isPalindrome(\x22hello\x22));\x20\x20\x20//\x20false\x0a\x20\x20\x20\x20}\x0a}','return','&\x201은\x20최하위\x20비트를\x20확인합니다.\x20홀수는\x20마지막\x20비트가\x201입니다.','Arrays.sort(words,\x20(a,\x20b)\x20->\x20a.length()\x20-\x20b.length());','int\x20pow8\x20=\x201\x20<<\x203;','vZXYn','드릴\x203\x20—\x20Arrays.sort\x20정렬','Java의\x20<code>Arrays.sort()</code>로\x20배열을\x20정렬하는\x20방법을\x20익힙니다.','public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20int\x20i\x20=\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20do\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(i);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20i++;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x20while\x20(i\x20<\x203);\x0a\x20\x20\x20\x20}\x0a}','ArrayList<Integer>\x20list\x20=\x20new\x20ArrayList<>();','<code>5\x20/\x202</code>의\x20결과를\x20실수로\x20얻으려면\x20다음과\x20같이\x20캐스팅합니다.\x20빈칸을\x20채우세요.<br><code>double\x20result\x20=\x20(___)5\x20/\x202;</code>','String\x20비교\x20—\x20equals()','static\x20int\x20f(int\x20a)\x20→\x20static\x20동일\x0areturn\x20동일\x0avoid\x20반환\x20없음\x20동일','getOrDefault(key,\x200)은\x20key가\x20없으면\x200을\x20반환합니다.\x20빈도\x20카운팅의\x20핵심\x20패턴입니다.','sb.___(\x20\x22Hello\x22\x20);','public\x20String\x20toString()\x20{','BFS에서\x20중복\x20방문\x20방지를\x20위해\x20방문\x20체크를\x20하는\x20올바른\x20시점을\x20선택하세요.','Stack','타입\x20명시:\x20int,\x20double\x20동일\x0a(int)\x20캐스팅\x20→\x20.toInt()\x0adouble\x20→\x20int:\x20d.toInt()\x0aString\x20→\x20int:\x20int.parse(s)','int\x20min\x20=\x20arr[0];','import\x20java.util.*;\x0apublic\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20ArrayList<Integer>\x20list\x20=\x20new\x20ArrayList<>(Arrays.asList(3,\x201,\x204,\x201,\x205));\x0a\x20\x20\x20\x20\x20\x20\x20\x20Collections.sort(list,\x20Collections.reverseOrder());\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(list);\x20\x20//\x20[5,\x204,\x203,\x201,\x201]\x0a\x20\x20\x20\x20}\x0a}','public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20String\x20s\x20=\x20\x22Hello,\x20Java!\x22;\x0a\x20\x20\x20\x20\x20\x20\x20\x20String\x20sub\x20=\x20s.substring(7);\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(sub);\x20\x20//\x20Java!\x0a\x20\x20\x20\x20}\x0a}','드릴\x201\x20—\x20Math.max로\x20최댓값','문자열\x20s가\x20\x22YES\x22와\x20같은지\x20올바르게\x20비교하는\x20코드를\x20완성하세요.<br><code>if\x20(s.___(\x20\x22YES\x22\x20))</code>','arr[0]','306faTBLN','keyValueSet','fetch','public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20for\x20(int\x20j\x20=\x201;\x20j\x20<=\x209;\x20j++)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(\x222\x20x\x20\x22\x20+\x20j\x20+\x20\x22\x20=\x20\x22\x20+\x20(2\x20*\x20j));\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a}','isNull','hashCode','int\x20n\x20=\x2042;','String','Integer.parseInt(문자열,\x20진수)로\x20해당\x20진수의\x20문자열을\x2010진수로\x20변환합니다.','map.put(\x22apple\x22,\x203);','[0-9]는\x20숫자\x20한\x20자리를\x20나타내는\x20정규식입니다.\x20replaceAll로\x20빈\x20문자열로\x20교체하면\x20제거됩니다.','import\x20java.io.*;\x0apublic\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20throws\x20IOException\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20BufferedReader\x20br\x20=\x20new\x20BufferedReader(new\x20InputStreamReader(System.in));\x0a\x20\x20\x20\x20\x20\x20\x20\x20int\x20n\x20=\x20Integer.parseInt(br.readLine().trim());\x0a\x20\x20\x20\x20\x20\x20\x20\x20int\x20sum\x20=\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20for\x20(int\x20i\x20=\x200;\x20i\x20<\x20n;\x20i++)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20sum\x20+=\x20Integer.parseInt(br.readLine().trim());\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(sum);\x0a\x20\x20\x20\x20}\x0a}','System.out.___(\x20\x22Hello\x20\x22\x20);','Deque<Integer>\x20deque\x20=\x20new\x20___<>();','Integer.MAX_VALUE는\x20int의\x20최댓값(약\x2021억)입니다.\x20최단거리\x20DP에서\x20초기\x20INF\x20값으로\x20씁니다.','두\x20수\x20중\x20큰\x20값을\x20반환하는\x20메서드를\x20완성하세요.<br><code>int\x20m\x20=\x20Math.___(a,\x20b);</code>','드릴\x201\x20—\x20switch\x20기본\x20구조','문자열의\x20인덱스로\x20문자에\x20접근하는\x20메서드를\x20완성하세요.<br><code>char\x20c\x20=\x20s.___(0);</code>','드릴\x204\x20—\x20Integer.parseInt()\x20형변환','String\x20s\x20=\x20\x22Hello\x22;\x0as.length()\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x205\x20(괄호\x20있음!\x20배열.length와\x20다름)\x0as.charAt(0)\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20\x27H\x27\x0as.substring(1)\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20\x22ello\x22\x0as.substring(1,\x203)\x20\x20\x20\x20\x20\x20\x20//\x20\x22el\x22\x20(끝\x20미포함)\x0as.indexOf(\x22ll\x22)\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x202\x0as.contains(\x22ll\x22)\x20\x20\x20\x20\x20\x20\x20\x20//\x20true\x0as.replace(\x22l\x22,\x20\x22r\x22)\x20\x20\x20\x20\x20//\x20\x22Herro\x22\x0as.toLowerCase()\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20\x22hello\x22\x0as.toUpperCase()\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20\x22HELLO\x22\x0as.trim()\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20앞뒤\x20공백\x20제거\x0as.split(\x22,\x22)\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20String[]\x20배열\x20반환','___.x\x20=\x20x;','public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20int[]\x20arr\x20=\x20{10,\x2020,\x2030,\x2040,\x2050};\x0a\x20\x20\x20\x20\x20\x20\x20\x20int\x20total\x20=\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20for\x20(int\x20x\x20:\x20arr)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20total\x20+=\x20x;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(total);\x20\x20//\x20150\x0a\x20\x20\x20\x20}\x0a}','int[]\x20arr\x20=\x20{1,\x202,\x203,\x204,\x205,\x206};','readLine()을\x20반복\x20호출하면\x20줄마다\x20입력을\x20읽습니다.\x20trim()으로\x20개행/공백을\x20제거하세요.','String\x20result\x20=\x20(s\x20!=\x20null)\x20?\x20s\x20:\x20___;','DP의\x20핵심:\x20이미\x20계산한\x20결과를\x20저장(memo)해\x20중복\x20계산을\x20없앱니다.\x20탑다운=재귀+메모,\x20바텀업=반복+배열.','\x20\x20\x20\x20if\x20(a.length()\x20!=\x20b.length())\x20return\x20a.length()\x20-\x20b.length();','mat[i].length는\x20i번째\x20행의\x20열\x20개수입니다.','드릴\x202\x20—\x20charAt으로\x20문자\x20접근','sortDesc','int\x20n\x20=\x20(___)3.9;','문자열\x20길이를\x20반환하는\x20메서드를\x20완성하세요.<br><code>int\x20len\x20=\x20s.___();</code>','uBpzV','완전탐색은\x20가능한\x20모든\x20경우를\x20확인합니다.\x20데이터가\x20작을\x20때\x20가장\x20확실한\x20방법입니다.\x20최적화가\x20필요하면\x20HashMap으로\x20O(n)으로\x20개선할\x20수\x20있습니다.','remove','public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20outer:\x0a\x20\x20\x20\x20\x20\x20\x20\x20for\x20(int\x20i\x20=\x200;\x20i\x20<\x205;\x20i++)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20for\x20(int\x20j\x20=\x200;\x20j\x20<\x205;\x20j++)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(i\x20+\x20j\x20==\x206)\x20break\x20outer;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20System.out.print(i\x20+\x20\x22\x22\x20+\x20j\x20+\x20\x22\x20\x22);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a}','function\x20*\x5c(\x20*\x5c)','dp[i][j]','import\x20java.util.*;\x0apublic\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20PriorityQueue<Integer>\x20pq\x20=\x20new\x20PriorityQueue<>();\x0a\x20\x20\x20\x20\x20\x20\x20\x20pq.offer(5);\x20pq.offer(1);\x20pq.offer(3);\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(pq.poll());\x20\x20//\x201\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(pq.poll());\x20\x20//\x203\x0a\x20\x20\x20\x20}\x0a}','드릴\x201\x20—\x20private\x20필드\x20선언','}\x20catch\x20(___\x20e)\x20{','matches()는\x20전체\x20문자열이\x20패턴에\x20맞는지\x20확인합니다.\x20Character\x20클래스로\x20개별\x20문자를\x20검사할\x20수\x20있습니다.','드릴\x203\x20—\x20BFS용\x20int[]\x20Queue\x20선언','2D\x20격자에서\x20상하좌우\x20이웃을\x20탐색하는\x20방향벡터를\x20완성하세요.','new\x20ArrayList<>(___.asList(\x22a\x22,\x20\x22b\x22,\x20\x22c\x22))','mask의\x20i번째\x20비트가\x201인지\x20확인하는\x20연산자를\x20완성하세요.','\x20\x20\x20\x20case\x201:\x20System.out.println(\x22하나\x22);\x20break;','\x20\x20\x20\x20\x20\x20\x20\x20System.out.print(mat[i][j]\x20+\x20\x22\x20\x22);','Java의\x20모든\x20코드는\x20클래스\x20안에\x20있고,\x20프로그램은\x20main\x20메서드에서\x20시작합니다.','드릴\x201\x20—\x20문자열\x20길이\x20오름차순\x20정렬','min','Java에서\x20<code>null</code>\x20비교,\x20<code>instanceof</code>,\x20기본형과\x20참조형의\x20비교\x20차이를\x20익힙니다.','예외\x20처리\x20(try-catch)','public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20String\x20s\x20=\x20null;\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(s\x20!=\x20null\x20&&\x20s.equals(\x22hello\x22))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(\x22일치\x22);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(\x22null이거나\x20불일치\x22);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a}','String\x20s\x20=\x20\x22Hello\x22;','deque.push(1);\x20deque.push(2);\x20deque.push(3);','소수\x20판별:\x202부터\x20√n까지\x20나눠봅니다.\x20Math.sqrt(n)까지만\x20확인하면\x20됩니다.','BufferedReader는\x20Scanner보다\x20빠릅니다.\x20throws\x20IOException을\x20main에\x20선언하거나\x20try-catch로\x20감싸야\x20합니다.','System.out.println(pq.poll());','Collections.max()는\x20리스트에서\x20최댓값을\x20반환합니다.','\x20\x20\x20\x20for\x20(int\x20v\x20:\x20row)\x20{','list.sort()\x20→\x20Collections.sort(list)\x0alist.reversed\x20→\x20Collections.reverse(list)\x0alist.reduce(max)\x20→\x20Collections.max(list)','do-while과\x20루프\x20제어','두\x20정수의\x20합을\x20반환하는\x20static\x20메서드를\x20완성하세요.<br><code>___\x20int\x20add(int\x20a,\x20int\x20b)\x20{\x20return\x20a\x20+\x20b;\x20}</code>','Arrays.asList(...)로\x20초기\x20값을\x20지정하고,\x20new\x20ArrayList<>()로\x20감싸면\x20가변\x20리스트가\x20됩니다.','list.sort((a,\x20b)\x20->\x20a\x20-\x20b);','Python과의\x20주요\x20차이점:\x0a•\x20정렬:\x20list.sort()\x20(Python)\x20→\x20Arrays.sort(arr),\x20Collections.sort(list)\x20(Java)\x0a•\x20커스텀\x20정렬:\x20list.sort(key=lambda\x20x:\x20x[0])\x20(Python)\x20→\x20Arrays.sort(arr,\x20(a,b)\x20->\x20a[0]-b[0])\x20(Java)\x0a•\x20내림차순:\x20list.sort(reverse=True)\x20(Python)\x20→\x20Arrays.sort(arr,\x20Collections.reverseOrder())\x20(Java)\x0a•\x20이진탐색:\x20bisect\x20(Python)\x20→\x20Arrays.binarySearch()\x20(Java)\x0a•\x20최댓값:\x20max(list)\x20(Python)\x20→\x20Collections.max(list)\x20(Java)','import\x20java.util.Arrays;\x0a\x0aArrays.sort(arr);\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20오름차순\x20정렬\x0aArrays.toString(arr);\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20\x22[1,\x202,\x203]\x22\x20문자열\x0aArrays.copyOf(arr,\x20n);\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20앞\x20n개\x20복사\x0aArrays.copyOfRange(arr,\x20from,\x20to);\x20\x20\x20//\x20[from,\x20to)\x20복사\x0aArrays.fill(arr,\x20val);\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20전체를\x20val로\x20채움\x0aArrays.fill(arr,\x20from,\x20to,\x20val);\x20\x20\x20\x20\x20//\x20범위를\x20val로\x0aArrays.equals(arr1,\x20arr2);\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20배열\x20내용\x20비교','a[1]','상속(extends)과\x20다형성','\x20\x20\x20\x20if\x20(n\x20<=\x201)\x20return\x20n;','valueOf','\x20\x20\x20\x20maxSum\x20=\x20Math.max(maxSum,\x20curSum);','IOException은\x20입출력\x20작업에서\x20발생하는\x20체크드\x20예외입니다.','i-2','int\x20n\x20=\x20sc.___Int();','graph[node]는\x20node의\x20이웃\x20노드\x20리스트입니다.\x20for-each로\x20이웃을\x20순회합니다.','Point\x20p\x20=\x20new\x20Point(3,\x204);','boolean을\x20반환하는\x20메서드의\x20반환\x20타입을\x20완성하세요.<br><code>static\x20___\x20isEven(int\x20n)\x20{\x20return\x20n\x20%\x202\x20==\x200;\x20}</code>','Queue<Integer>\x20q\x20=\x20new\x20___<>();','public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20String\x20s\x20=\x20\x22Hello,\x20Java!\x22;\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(s.length());\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x2012\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(s.charAt(0));\x20\x20\x20\x20\x20\x20\x20\x20//\x20\x27H\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(s.substring(7));\x20\x20\x20\x20\x20//\x20\x22Java!\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(s.substring(7,\x2011));\x20//\x20\x22Java\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(s.toLowerCase());\x20\x20\x20\x20//\x20\x22hello,\x20java!\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(s.replace(\x22Java\x22,\x20\x22World\x22));\x20//\x20\x22Hello,\x20World!\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(s.contains(\x22Java\x22));\x20//\x20true\x0a\x20\x20\x20\x20}\x0a}','Java에서\x20참조형(String,\x20Integer\x20등)을\x20==\x20로\x20비교하면\x20값이\x20아닌\x20메모리\x20주소를\x20비교합니다.\x20값을\x20비교하려면\x20.equals()를\x20사용해야\x20합니다.\x20null\x20체크는\x20==\x20null\x20로\x20합니다.','import\x20java.util.Arrays;\x0apublic\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20String[]\x20words\x20=\x20{\x22banana\x22,\x20\x22fig\x22,\x20\x22apple\x22,\x20\x22kiwi\x22};\x0a\x20\x20\x20\x20\x20\x20\x20\x20Arrays.sort(words,\x20(a,\x20b)\x20->\x20a.length()\x20-\x20b.length());\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(Arrays.toString(words));\x0a\x20\x20\x20\x20}\x0a}','while\x20반복문에서\x20합이\x20100을\x20넘는\x20순간\x20종료하는\x20코드를\x20완성하세요.','poll()은\x20FIFO\x20순서로\x20앞에서\x20꺼냅니다.\x20BFS의\x20핵심\x20연산입니다.','continue는\x20현재\x20회차를\x20건너뛰고\x20다음\x20반복으로\x20이동합니다.','any','List<String>\x20list\x20=\x20new\x20ArrayList<>(Arrays.asList(\x22banana\x22,\x22fig\x22,\x22apple\x22,\x22kiwi\x22));','\x27a\x27','\x20\x20\x20\x20\x20\x20\x20\x20sum\x20+=\x20v;','public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20int[]\x20arr\x20=\x20{1,\x202,\x203,\x204,\x205,\x206};\x0a\x20\x20\x20\x20\x20\x20\x20\x20for\x20(int\x20x\x20:\x20arr)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(x\x20%\x202\x20!=\x200)\x20continue;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(x);\x20\x20//\x202,\x204,\x206\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a}','int\x20a\x20=\x205,\x20b\x20=\x209;','inherits','constructor','💡\x20nextInt()\x20후\x20nextLine()을\x20쓰면\x20개행문자가\x20남아\x20빈\x20줄이\x20읽힙니다.\x20nextInt()\x20다음\x20nextLine()을\x20한\x20번\x20더\x20호출해\x20비워주세요.','do-while은\x20본문을\x20먼저\x20실행하고\x20나서\x20조건을\x20검사합니다.\x20최소\x20한\x20번\x20실행이\x20보장됩니다.\x20while(true)와\x20break\x20조합은\x20종료\x20조건이\x20복잡할\x20때\x20자주\x20씁니다.','드릴\x204\x20—\x20Queue\x20offer/poll','new\x20StringBuilder(s).___().toString();','until','boolean\x20isLeap\x20=\x20(year\x20%\x204\x20==\x200\x20&&\x20year\x20%\x20100\x20!=\x200)\x20___\x20(year\x20%\x20400\x20==\x200);','for\x20(int\x20i\x20=\x202;\x20i\x20<=\x20___;\x20i++)','public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20String\x20s\x20=\x20\x22Hello,\x20Python!\x22;\x0a\x20\x20\x20\x20\x20\x20\x20\x20String\x20result\x20=\x20s.replace(\x22Python\x22,\x20\x22Java\x22);\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(result);\x20\x20//\x20Hello,\x20Java!\x0a\x20\x20\x20\x20}\x0a}','public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20StringBuilder\x20sb\x20=\x20new\x20StringBuilder();\x0a\x20\x20\x20\x20\x20\x20\x20\x20for\x20(int\x20i\x20=\x201;\x20i\x20<=\x205;\x20i++)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20sb.append(i);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(i\x20<\x205)\x20sb.append(\x22,\x20\x22);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(sb.toString());\x20\x20//\x201,\x202,\x203,\x204,\x205\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20reverse\x20예시\x0a\x20\x20\x20\x20\x20\x20\x20\x20StringBuilder\x20sb2\x20=\x20new\x20StringBuilder(\x22Hello\x22);\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(sb2.reverse());\x20\x20//\x20olleH\x0a\x20\x20\x20\x20}\x0a}','System.out.println(sub);','ncJki','구구단은\x20단(i)이\x202~9,\x20곱수(j)가\x201~9\x20범위입니다.','pop','Java\x20String\x20메서드는\x20Python과\x20이름이\x20비슷하지만\x20다른\x20것들이\x20있습니다.\x20특히\x20length()는\x20괄호가\x20있으며,\x20charAt()으로\x20개별\x20문자에\x20접근합니다.','(long)a\x20*\x20b:\x20a를\x20먼저\x20long으로\x20캐스팅하면\x20곱셈이\x20long\x20범위에서\x20수행됩니다.','드릴\x204\x20—\x20Collections.sort\x20내림차순','Java에서\x20문자열\x20비교\x20시\x20<code>==</code>\x20대신\x20<code>.equals()</code>를\x20써야\x20하는\x20이유와\x20사용법을\x20익힙니다.','드릴\x204\x20—\x20삼항\x20연산자','💡\x20핵심\x20포인트\x0a•\x20map.get(\x22없는키\x22)는\x20null\x20반환\x20→\x20getOrDefault()\x20사용\x20권장\x0a•\x20HashMap은\x20순서\x20보장\x20안\x20함,\x20LinkedHashMap은\x20삽입\x20순서\x20유지\x0a•\x20HashSet.contains()는\x20O(1)\x20시간복잡도\x20(매우\x20빠름)\x0a•\x20Stack은\x20push/pop,\x20Queue는\x20offer/poll\x20사용\x0a•\x20빈도\x20카운팅:\x20map.put(x,\x20map.getOrDefault(x,\x200)\x20+\x201)','💡\x20Scanner로\x20읽은\x20문자열은\x20항상\x20.equals()로\x20비교하세요.\x20\x22YES\x22.equals(s)\x20처럼\x20리터럴을\x20앞에\x20두면\x20NPE를\x20방지할\x20수\x20있습니다.','import\x20java.util.Arrays;\x0a\x0aint[]\x20arr\x20=\x20{3,\x201,\x202};\x0aArrays.sort(arr);\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20[1,\x202,\x203]\x20(오름차순)\x0aSystem.out.println(Arrays.toString(arr));\x20//\x20배열을\x20문자열로\x0a\x0a//\x20부분\x20정렬:\x20인덱스\x201~2만\x20정렬\x0aArrays.sort(arr,\x201,\x203);\x20\x20//\x20arr[1]부터\x20arr[2]까지\x0a\x0a//\x20String\x20배열도\x20동일\x0aString[]\x20words\x20=\x20{\x22c\x22,\x22a\x22,\x22b\x22};\x0aArrays.sort(words);\x20\x20//\x20[\x22a\x22,\x22b\x22,\x22c\x22]','invert','System.out.println(stack.peek());','현재\x20원소가\x20min보다\x20작으면\x20min을\x20갱신합니다.','insert','Character.isDigit(c)는\x20문자가\x200~9\x20사이의\x20숫자이면\x20true를\x20반환합니다.','Integer.parseInt()는\x20Python의\x20int()에\x20해당하는\x20String\x20→\x20int\x20변환\x20메서드입니다.','\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(n);','카카오·네이버·라인\x20등\x20모든\x20코딩테스트에서\x20필수.\x20조건\x20분기\x20없는\x20문제는\x20없습니다.\x20Java의\x20조건문은\x20타입\x20안정성이\x20강하며,\x20switch\x20문은\x20다중\x20분기에\x20유용합니다.','isEmpty','String.join(구분자,\x20배열)은\x20배열\x20원소를\x20구분자로\x20연결합니다.\x20Python의\x20\x27-\x27.join(list)에\x20해당합니다.','Java에서\x20AND\x20논리\x20연산자는\x20&&\x20입니다.\x20Python의\x20\x27and\x27와\x20다릅니다.','\x22Java\x22','\x20\x20\x20\x20super(color);','private','드릴\x204\x20—\x20Collections.sort\x20정렬','System.out.print(sb);','HashSet<Integer>\x20set\x20=\x20new\x20HashSet<>();\x0aset.add(1);\x0aset.add(2);\x0aset.add(2);\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20중복\x20→\x20무시됨\x0aset.contains(1);\x20\x20\x20\x20\x20//\x20true,\x20O(1)\x0aset.remove(1);\x0aset.size();\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20크기\x0a\x0a//\x20배열에서\x20중복\x20제거\x0afor\x20(int\x20x\x20:\x20arr)\x20set.add(x);\x0aArrayList<Integer>\x20unique\x20=\x20new\x20ArrayList<>(set);','<div\x20style=\x22line-height:1.7\x22>\x0a<b>📋\x20배열\x20&\x20ArrayList\x20—\x20카테고리\x20핵심\x20미리보기</b><br><br>\x0aJava\x20배열은\x20<b>크기\x20고정</b>,\x20ArrayList는\x20<b>크기\x20가변</b>입니다.<br><br>\x0a<b>⚠️\x20Python\x20list\x20vs\x20Java\x20array/ArrayList\x20핵심\x20차이</b><br>\x0a•\x20길이:\x20<code>len(arr)</code>\x20→\x20배열\x20<code>arr.length</code>\x20(괄호\x20없음!),\x20ArrayList\x20<code>list.size()</code><br>\x0a•\x20접근:\x20<code>arr[i]</code>\x20→\x20배열\x20동일,\x20ArrayList\x20<code>list.get(i)</code><br>\x0a•\x20추가:\x20<code>list.append(x)</code>\x20→\x20<code>list.add(x)</code><br>\x0a•\x20정렬:\x20<code>sorted(arr)</code>\x20→\x20<code>Arrays.sort(arr)</code>\x20(원본\x20수정!)<br><br>\x0a<b>📌\x20배열\x20선언\x203가지</b><br>\x0a•\x20<code>int[]\x20a\x20=\x20new\x20int[5];</code>\x20—\x20크기만,\x200\x20초기화<br>\x0a•\x20<code>int[]\x20a\x20=\x20{1,2,3};</code>\x20—\x20값과\x20함께<br>\x0a•\x20<code>int[]\x20a\x20=\x20new\x20int[]{1,2,3};</code>\x20—\x20new\x20키워드\x20포함\x0a</div>','\x20\x20\x20\x20if\x20(x\x20<\x20min)\x20min\x20=\x20x;','output','\x20\x20\x20\x20map.put(x,\x20map.getOrDefault(x,\x200)\x20+\x201);','드릴\x204\x20—\x20instanceof\x20타입\x20확인','int[][]\x20matrix\x20=\x20{{1,2,3},{4,5,6},{7,8,9}};','드릴\x203\x20—\x20이웃\x20노드\x20for-each\x20순회','graph[i]\x20=\x20new\x20___<>();','Arrays.fill(dp,\x20Integer.___);','💡\x20시간제한이\x20엄격한\x20문제는\x20BufferedReader를\x20쓰세요.\x20StringBuilder로\x20출력을\x20모아\x20한\x20번에\x20print하면\x20더\x20빠릅니다.','배열의\x20최댓값을\x20스트림으로\x20구하는\x20코드를\x20완성하세요.','Arrays.sort(arr,\x20Collections.reverseOrder());','stack.push(1);','2차원\x20배열을\x20첫\x20번째\x20열\x20기준\x20오름차순으로\x20정렬하는\x20코드를\x20완성하세요.','문자열\x20처리는\x20코딩테스트\x20절반\x20이상에서\x20등장.\x20Java\x20String의\x20불변성과\x20StringBuilder를\x20이해해야\x20합니다.\x20문자열\x20반복\x20수정\x20시\x20StringBuilder\x20필수!','Integer\x20배열을\x20내림차순으로\x20정렬하는\x20코드를\x20완성하세요.','display','2차원\x20배열은\x20이중\x20for문으로\x20순회합니다.\x20바깥\x20루프가\x20행(row),\x20안쪽\x20루프가\x20열(column)을\x20담당합니다.\x20BFS/DFS,\x20행렬\x20문제에서\x20핵심\x20패턴입니다.','print','드릴\x201\x20—\x20put과\x20get','s가\x20null이면\x20\x22기본값\x22을\x20쓰는\x20삼항\x20연산자를\x20완성하세요.','System.out.println(Arrays.toString(arr));','int\x20pow8\x20=\x201\x20___\x203;','1][2','i++\x20는\x20i\x20=\x20i\x20+\x201\x20과\x20같습니다.\x20반복할\x20때마다\x20i를\x201씩\x20증가시킵니다.','scan','Arrays.sort(arr,\x20(a,\x20b)\x20->\x20{\x0a\x20\x20\x20\x20if\x20(기준1이\x20다르면)\x20return\x20기준1비교;\x0a\x20\x20\x20\x20return\x20기준2비교;\x0a});','public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20String[]\x20parts\x20=\x20{\x222024\x22,\x20\x2201\x22,\x20\x2215\x22};\x0a\x20\x20\x20\x20\x20\x20\x20\x20String\x20result\x20=\x20String.join(\x22-\x22,\x20parts);\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(result);\x20\x20//\x202024-01-15\x0a\x20\x20\x20\x20}\x0a}','public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20int\x20n\x20=\x20Integer.parseInt(\x22abc\x22);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x20catch\x20(NumberFormatException\x20e)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(\x22변환\x20실패\x22);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a}','//\x20──\x201.\x20배열\x20선언\x203가지\x20──\x0aint[]\x20arr1\x20=\x20new\x20int[5];\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20크기\x205,\x200으로\x20초기화\x0aint[]\x20arr2\x20=\x20{1,\x202,\x203,\x204,\x205};\x20\x20\x20\x20\x20//\x20값\x20직접\x20초기화\x0aint[]\x20arr3\x20=\x20new\x20int[]{1,2,3};\x20\x20\x20\x20//\x20new\x20키워드\x20포함\x0a\x0a//\x20──\x202.\x20배열\x20기본\x20조작\x20──\x0aarr1[0]\x20=\x2010;\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20인덱스로\x20값\x20설정\x0aint\x20val\x20=\x20arr2[2];\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20=\x203\x0aint\x20len\x20=\x20arr2.length;\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x205\x20(괄호\x20없음!)\x0a\x0a//\x20──\x203.\x202차원\x20배열\x20──\x0aint[][]\x20matrix\x20=\x20new\x20int[3][4];\x20\x20\x20\x20//\x203행\x204열\x0aint[][]\x20grid\x20=\x20{{1,2,3},{4,5,6}};\x20\x20//\x20값\x20초기화\x0aint\x20rows\x20=\x20grid.length;\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20행\x20수\x20=\x202\x0aint\x20cols\x20=\x20grid[0].length;\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20열\x20수\x20=\x203\x0a\x0a//\x20──\x204.\x20Arrays\x20유틸\x20(import\x20java.util.Arrays)\x20──\x0aArrays.sort(arr2);\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20오름차순\x20정렬\x20(원본\x20수정!)\x0aSystem.out.println(Arrays.toString(arr2));\x20\x20//\x20[1,\x202,\x203,\x204,\x205]\x0aint[]\x20copy\x20=\x20Arrays.copyOf(arr2,\x203);\x20\x20\x20\x20\x20\x20\x20\x20//\x20[1,2,3]\x20앞\x203개\x0aint[]\x20sub\x20\x20=\x20Arrays.copyOfRange(arr2,1,4);\x20\x20//\x20[2,3,4]\x20인덱스\x201~3\x0aArrays.fill(arr1,\x20-1);\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20전체\x20-1로\x20채우기\x0a\x0a//\x20──\x205.\x20ArrayList\x20(동적\x20크기)\x20──\x0aimport\x20java.util.ArrayList;\x0aArrayList<Integer>\x20list\x20=\x20new\x20ArrayList<>();\x0alist.add(10);\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20끝에\x20추가\x20(Python:\x20append)\x0alist.add(0,\x205);\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20인덱스\x200에\x20삽입\x0alist.remove(0);\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20인덱스\x200\x20삭제\x0alist.remove(Integer.valueOf(10));\x20\x20//\x20값\x2010\x20삭제\x0aint\x20v\x20=\x20list.get(0);\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20배열은\x20arr[0],\x20ArrayList는\x20get(0)\x0alist.set(0,\x2099);\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20값\x20수정\x0aint\x20size\x20=\x20list.size();\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20크기\x20(배열은\x20.length!)\x0aCollections.sort(list);\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20정렬\x0aboolean\x20has\x20=\x20list.contains(10);\x20\x20\x20//\x20포함\x20여부\x0alist.clear();\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20전체\x20삭제\x0a\x0a//\x20──\x206.\x20배열\x20↔\x20ArrayList\x20변환\x20──\x0aInteger[]\x20arr4\x20=\x20{1,2,3};\x0aList<Integer>\x20fromArr\x20=\x20new\x20ArrayList<>(Arrays.asList(arr4));\x0aInteger[]\x20toArr\x20=\x20list.toArray(new\x20Integer[0]);','드릴\x202\x20—\x20throws\x20IOException\x20선언','2300073mQRHHv','기본형\x20→\x20큰\x20타입은\x20자동\x20변환(암묵적),\x20큰\x20타입\x20→\x20작은\x20타입은\x20명시적\x20캐스팅\x20(double\x20→\x20int)이\x20필요합니다.','Queue<Integer>\x20q\x20=\x20new\x20LinkedList<>(Arrays.asList(1,2,3));','Boolean','String\x20result\x20=\x20(age\x20>=\x2018)\x20?\x20\x22성인\x22\x20:\x20\x22미성년자\x22;','String\x20+\x20String\x20반복은\x20O(n²).\x20StringBuilder.append()는\x20O(1).\x20반복문\x20안에서는\x20항상\x20StringBuilder를\x20쓰세요.','public\x20String\x20getName()\x20{\x20return\x20name;\x20}','완전탐색\x20구조는\x20동일.\x20Python의\x20itertools.combinations\x20역할을\x20이중\x20for문으로\x20대체.','int[]\x20arr\x20=\x20{1,\x202,\x201,\x203,\x202,\x201};','public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20static\x20boolean[]\x20visited\x20=\x20new\x20boolean[5];\x0a\x20\x20\x20\x20static\x20void\x20dfs(int\x20n)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20visited[n]\x20=\x20true;\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.print(n\x20+\x20\x22\x20\x22);\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20for\x20(int\x20i\x20=\x200;\x20i\x20<\x205;\x20i++)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!visited[i])\x20dfs(i);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a}','String.compareTo()는\x20사전순\x20비교\x20결과를\x20정수로\x20반환합니다.','\x20\x20\x20\x20if\x20(i\x20%\x203\x20==\x200)\x20continue;','public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20String\x20s\x20=\x20null;\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(s\x20==\x20null)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(\x22null입니다\x22);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a}','size','\x20\x20\x20\x20System.out.println();','오버플로우\x20없이\x20안전하게\x20Integer를\x20비교하는\x20방법을\x20완성하세요.','switch\x20(n)\x20{','sb.append(\x22Hello\x22);','super','pzUME','DP\x20배열을\x20INF(무한대)로\x20초기화하는\x20코드를\x20완성하세요.','a.length()\x20-\x20b.length()는\x20길이\x20오름차순\x20Comparator입니다.','\x22:\x22','\x20\x20\x20\x20System.out.println(\x22범위\x20내\x22);','드릴\x202\x20—\x20공백\x20구분\x20두\x20정수\x20입력','\x275\x27','main\x20메서드는\x20객체를\x20생성하지\x20않고\x20호출되므로\x20static\x20키워드가\x20필요합니다.','String\x20s\x20=\x20\x22\x20\x20hello\x20world\x20\x20\x22;\x0as.trim()\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20앞뒤\x20공백\x20제거\x0as.strip()\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20trim()과\x20유사\x20(유니코드\x20공백도)\x0a\x0as.split(\x22,\x22)\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20쉼표로\x20분리\x20→\x20String[]\x0as.split(\x22\x20+\x22)\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20하나\x20이상\x20공백으로\x20분리\x20(정규식)\x0as.split(\x22\x22,\x200)\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20문자\x20단위로\x20분리\x20(Java\x208+)\x0a\x0as.startsWith(\x22he\x22)\x20\x20\x20\x20\x20\x20//\x20true\x0as.endsWith(\x22ld\x22)\x20\x20\x20\x20\x20\x20\x20\x20//\x20true\x0as.contains(\x22ello\x22)\x20\x20\x20\x20\x20\x20//\x20true\x0as.indexOf(\x22ll\x22)\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x202\x20(처음\x20등장\x20위치)\x0as.lastIndexOf(\x27l\x27)\x20\x20\x20\x20\x20\x20//\x203\x20(마지막\x20등장\x20위치)\x0a\x0aString\x20joined\x20=\x20String.join(\x22-\x22,\x20\x22a\x22,\x22b\x22,\x22c\x22);\x20\x20//\x20\x22a-b-c\x22','HashMap<String,\x20Integer>\x20map\x20=\x20new\x20HashMap<>();','HashMap과\x20컬렉션\x20자료구조','entrySet()은\x20Map.Entry\x20객체의\x20집합을\x20반환합니다.\x20getKey()와\x20getValue()로\x20키/값에\x20접근합니다.','append','[0-9]','int\x20year\x20=\x202024;','String[]\x20words\x20=\x20{\x22banana\x22,\x20\x22fig\x22,\x20\x22apple\x22,\x20\x22kiwi\x22};','TreeMap과\x20PriorityQueue','make','arr','비교\x20연산자와\x20null\x20처리','compare','while\x20(___)','input','기저\x20조건에서\x20return으로\x20재귀를\x20멈춥니다.\x20n이\x200\x20또는\x201이면\x20그\x20값\x20자체를\x20반환합니다.','power','import\x20java.util.*;\x0apublic\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20ArrayList<Integer>\x20list\x20=\x20new\x20ArrayList<>();\x0a\x20\x20\x20\x20\x20\x20\x20\x20list.add(3);\x20list.add(1);\x20list.add(2);\x0a\x20\x20\x20\x20\x20\x20\x20\x20Collections.sort(list);\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(list);\x20\x20//\x20[1,\x202,\x203]\x0a\x20\x20\x20\x20}\x0a}','int\x20total\x20=\x200;','default','BFS\x20(너비우선탐색)\x20패턴','b[0]','Item(String\x20name)\x20{\x20this.name\x20=\x20name;\x20}','getName','Arrays.fill(배열,\x20값)은\x20배열\x20전체를\x20지정한\x20값으로\x20채웁니다.','Java\x20조건문에서\x20Python의\x20<code>elif</code>에\x20해당하는\x20키워드를\x20빈칸에\x20채우세요.<br><code>}\x20___\x20if\x20(n\x20<\x200)\x20{</code>','\x20\x20\x20\x20return\x20Integer.parseInt(s.trim());','for\x20(String\x20s\x20:\x20list)\x20{','<code>StringTokenizer</code>로\x20\x273\x205\x27를\x20입력받아\x20두\x20정수\x20a,\x20b에\x20저장하는\x20코드를\x20완성하세요.','Scanner로\x20정수\x20하나를\x20입력받을\x20때\x20사용하는\x20메서드를\x20완성하세요.<br><code>int\x20n\x20=\x20sc.___Int();</code>','조건문\x20(if\x20/\x20else\x20if\x20/\x20else\x20/\x20switch)','정수/정수는\x20정수\x20결과입니다.\x20하나를\x20double로\x20캐스팅하면\x20실수\x20나눗셈이\x20됩니다.','absolute','Arrays.sort(words,\x20(a,\x20b)\x20->\x20{','class\x20Dog\x20extends\x20Animal\x20→\x20동일\x0asuper()\x20동일\x0a@override\x20→\x20@Override','str','intValue','new\x20String()','int\x20result\x20=\x20Math.abs(x);','exists','false','\x20\x20\x20\x20i++;','stdin.readLineSync()\x20→\x20br.readLine()\x0a분리:\x20split(\x27\x20\x27)\x20→\x20StringTokenizer','private\x20필드를\x20반환하는\x20getter를\x20완성하세요.','BFS에서\x20큐에서\x20원소를\x20꺼내는\x20메서드를\x20완성하세요.','Arrays.sort(words,\x20(a,\x20b)\x20->\x20a.___()\x20-\x20b.___());','Java\x20for\x20반복문','int\x20len\x20=\x20arr.___;','Dynamic\x20Programming\x20기초','드릴\x204\x20—\x20continue로\x20건너뛰기','if\x20(i\x20%\x203\x20==\x200)\x20___;','\x20\x20\x20\x20chars[i]\x20=\x20Character.toUpperCase(chars[i]);','//\x20기본\x20자료형\x0aint\x20i\x20=\x2042;\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20정수\x20(32비트)\x0along\x20l\x20=\x201234567890L;\x20\x20\x20//\x20큰\x20정수\x20(64비트)\x0adouble\x20d\x20=\x203.14;\x20\x20\x20\x20\x20\x20\x20\x20//\x20실수\x20(64비트)\x0aboolean\x20b\x20=\x20true;\x20\x20\x20\x20\x20\x20\x20//\x20참/거짓\x0achar\x20c\x20=\x20\x27A\x27;\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20문자\x20하나\x0a\x0a//\x20형변환\x0adouble\x20d2\x20=\x20i;\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20int\x20→\x20double\x20자동\x0aint\x20i2\x20=\x20(int)\x20d;\x20\x20\x20\x20\x20\x20\x20//\x20double\x20→\x20int\x20명시적\x20(소수점\x20버림)\x0aString\x20s\x20=\x20String.valueOf(i);\x0aint\x20n\x20=\x20Integer.parseInt(s);','pow','and','int\x20sum\x20=\x200;','//\x20null\x20체크\x20(==\x20사용)\x0aif\x20(obj\x20==\x20null)\x20{\x20...\x20}\x0aif\x20(obj\x20!=\x20null)\x20{\x20...\x20}\x0a\x0a//\x20안전한\x20문자열\x20비교\x0a\x22literal\x22.equals(variable)\x20\x20//\x20NPE\x20방지\x0a\x0a//\x20Integer\x20캐시\x20범위\x20주의\x20(-128\x20~\x20127)\x0aInteger\x20a\x20=\x20100,\x20b\x20=\x20100;\x0aa\x20==\x20b\x20\x20\x20\x20\x20\x20//\x20true\x20(캐시)\x0aInteger\x20c\x20=\x20200,\x20d\x20=\x20200;\x0ac\x20==\x20d\x20\x20\x20\x20\x20\x20//\x20false!\x20(캐시\x20범위\x20벗어남)\x0ac.equals(d)\x20//\x20true\x20(항상\x20안전)','//\x20──\x20코딩테스트\x20기본\x20템플릿\x20──\x0aimport\x20java.util.*;\x0aimport\x20java.io.*;\x0a\x0apublic\x20class\x20Main\x20{\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20클래스\x20이름\x20(보통\x20Main)\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20throws\x20IOException\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20여기에\x20코드\x20작성\x0a\x20\x20\x20\x20\x20\x20\x20\x20BufferedReader\x20br\x20=\x20new\x20BufferedReader(new\x20InputStreamReader(System.in));\x0a\x20\x20\x20\x20\x20\x20\x20\x20int\x20n\x20=\x20Integer.parseInt(br.readLine().trim());\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(n);\x0a\x20\x20\x20\x20}\x0a}\x0a\x0a//\x20──\x20접근\x20제어자\x20──\x0apublic\x20\x20\x20\x20//\x20어디서나\x20접근\x20가능\x0aprivate\x20\x20\x20//\x20같은\x20클래스\x20내에서만\x0aprotected\x20//\x20같은\x20패키지\x20+\x20자식\x20클래스\x0a(없음)\x20\x20\x20\x20//\x20같은\x20패키지\x20내에서만\x20(package-private)\x0a\x0a//\x20──\x20static\x20메서드\x20(클래스\x20메서드)\x20──\x0apublic\x20class\x20Main\x20{\x0a\x20\x20\x20\x20static\x20int\x20add(int\x20a,\x20int\x20b)\x20{\x20\x20//\x20static:\x20객체\x20생성\x20없이\x20호출\x20가능\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20a\x20+\x20b;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20int\x20result\x20=\x20add(3,\x205);\x20\x20\x20\x20\x20//\x20객체\x20없이\x20바로\x20호출\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(result);\x20//\x208\x0a\x20\x20\x20\x20}\x0a}\x0a\x0a//\x20──\x20생성자\x20──\x0apublic\x20class\x20Point\x20{\x0a\x20\x20\x20\x20int\x20x,\x20y;\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20필드(멤버\x20변수)\x0a\x20\x20\x20\x20Point(int\x20x,\x20int\x20y)\x20{\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20생성자\x20(클래스명과\x20동일)\x0a\x20\x20\x20\x20\x20\x20\x20\x20this.x\x20=\x20x;\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20this:\x20현재\x20객체의\x20필드\x0a\x20\x20\x20\x20\x20\x20\x20\x20this.y\x20=\x20y;\x0a\x20\x20\x20\x20}\x0a}\x0aPoint\x20p\x20=\x20new\x20Point(3,\x204);\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20객체\x20생성\x0aSystem.out.println(p.x);\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x203','HashMap\x20기본\x20—\x20put/get/getOrDefault','KtLqA','maxPq.offer(3);\x20maxPq.offer(7);\x20maxPq.offer(1);','[a-z]','public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20int\x20n\x20=\x2010;\x0a\x20\x20\x20\x20\x20\x20\x20\x20int\x20total\x20=\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20for\x20(int\x20i\x20=\x201;\x20i\x20<=\x20n;\x20i++)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20total\x20+=\x20i;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(total);\x20\x20//\x2055\x0a\x20\x20\x20\x20}\x0a}','Java에서\x20재귀\x20메서드와\x20DFS(깊이우선탐색)의\x20기본\x20패턴을\x20익힙니다.','//\x20Python:\x20for\x20i\x20in\x20range(1,\x206):\x0a//\x20Java:\x0afor\x20(int\x20i\x20=\x201;\x20i\x20<=\x205;\x20i++)\x20{\x0a\x20\x20\x20\x20System.out.println(i);\x20\x20//\x201,\x202,\x203,\x204,\x205\x0a}\x0a\x0a//\x20Python:\x20for\x20i\x20in\x20range(0,\x2010,\x202):\x0a//\x20Java:\x0afor\x20(int\x20i\x20=\x200;\x20i\x20<\x2010;\x20i\x20+=\x202)\x20{\x0a\x20\x20\x20\x20System.out.println(i);\x20\x20//\x200,\x202,\x204,\x206,\x208\x0a}\x0a\x0a//\x20역순\x0afor\x20(int\x20i\x20=\x205;\x20i\x20>=\x201;\x20i--)\x20{\x0a\x20\x20\x20\x20System.out.println(i);\x20\x20//\x205,\x204,\x203,\x202,\x201\x0a}','System.out.println(\x22Hello\x22);','s.charAt(i)는\x20인덱스\x20i의\x20문자를\x20반환합니다.\x20Python의\x20s[i]에\x20해당합니다.','//\x20재귀\x20기본\x20구조\x0astatic\x20int\x20메서드(int\x20n)\x20{\x0a\x20\x20\x20\x20if\x20(기저조건)\x20return\x20기저값;\x20\x20//\x20재귀\x20종료!\x0a\x20\x20\x20\x20return\x20메서드(n-1)\x20+\x20...;\x20\x20\x20\x20//\x20자기\x20자신\x20호출\x0a}\x0a\x0a//\x20DFS\x20패턴\x0astatic\x20boolean[]\x20visited\x20=\x20new\x20boolean[n];\x0astatic\x20void\x20dfs(int\x20node)\x20{\x0a\x20\x20\x20\x20visited[node]\x20=\x20true;\x0a\x20\x20\x20\x20for\x20(int\x20i\x20=\x200;\x20i\x20<\x20adj[node].length;\x20i++)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(adj[node][i]\x20==\x201\x20&&\x20!visited[i])\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20dfs(i);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a}\x0a\x0a//\x20백트래킹\x0astatic\x20void\x20backtrack(int\x20start,\x20List<Integer>\x20current)\x20{\x0a\x20\x20\x20\x20if\x20(종료조건)\x20{\x20결과저장;\x20return;\x20}\x0a\x20\x20\x20\x20for\x20(int\x20i\x20=\x20start;\x20i\x20<\x20n;\x20i++)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20current.add(arr[i]);\x0a\x20\x20\x20\x20\x20\x20\x20\x20backtrack(i\x20+\x201,\x20current);\x0a\x20\x20\x20\x20\x20\x20\x20\x20current.remove(current.size()\x20-\x201);\x20\x20//\x20복원\x0a\x20\x20\x20\x20}\x0a}','드릴\x203\x20—\x20System.out.println\x20vs\x20print','});','public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20int[]\x20arr\x20=\x20new\x20int[5];\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(arr.length);\x20\x20//\x205\x0a\x20\x20\x20\x20}\x0a}','tPXns','\x20\x20\x20\x20grade\x20=\x20\x22A\x22;','드릴\x204\x20—\x20논리연산자\x20복합\x20조건','💡\x20for-each\x20중\x20list.remove(i)를\x20호출하면\x20ConcurrentModificationException!\x20반드시\x20Iterator를\x20사용하거나,\x20역순으로\x20인덱스\x20삭제를\x20하세요.','반복문으로\x20배열의\x20최솟값을\x20찾는\x20코드를\x20완성하세요.','while\x20(!q.___())','try\x20{\x20}\x20catch\x20(e)\x20{\x20}\x20→\x20동일\x20구조','Integer','String\x20s\x20=\x20list.get(0);','배열을\x20모두\x20-1로\x20초기화하는\x20코드를\x20완성하세요.','import\x20java.util.Stack;\x0apublic\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20Stack<Integer>\x20stack\x20=\x20new\x20Stack<>();\x0a\x20\x20\x20\x20\x20\x20\x20\x20stack.push(1);\x0a\x20\x20\x20\x20\x20\x20\x20\x20stack.push(2);\x0a\x20\x20\x20\x20\x20\x20\x20\x20stack.push(3);\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(stack.pop());\x20\x20\x20//\x203\x20(LIFO)\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(stack.peek());\x20\x20//\x202\x20(삭제\x20없이\x20조회)\x0a\x20\x20\x20\x20}\x0a}','System.out.println(deque.pop());','sb.append(\x22,\x20World!\x22);','System.out.println(list.size());','indexOf','stop','\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(seen.get(need)\x20+\x20\x22\x20\x22\x20+\x20i);','int\x20n\x20=\x20c\x20-\x20___;','public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20long\x20result\x20=\x20(long)\x20Math.pow(2,\x2010);\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(result);\x20\x20//\x201024\x0a\x20\x20\x20\x20}\x0a}','드릴\x201\x20—\x20for문\x20구조','\x20\x20\x20\x20\x20\x20\x20\x20}','Comparator\x20람다:\x20(a,\x20b)\x20->\x20양수면\x20b가\x20앞으로,\x20음수면\x20a가\x20앞으로.\x20a.length()\x20-\x20b.length()는\x20길이\x20오름차순.','reverse()는\x20StringBuilder의\x20내용을\x20반전시킵니다.\x20Python의\x20s[::-1]에\x20해당합니다.','MdCpl','String의\x20길이는\x20.length()\x20메서드\x20(괄호\x20있음).\x20배열의\x20.length\x20(괄호\x20없음)와\x20다릅니다.','Writer','int\x20a\x20=\x20Integer.parseInt(st.nextToken());','Stack<Integer>\x20stack\x20=\x20new\x20Stack<>();','length','outer:','Java는\x20중괄호\x20{}로\x20블록을\x20구분하고,\x20else\x20if\x20(두\x20단어)를\x20씁니다.\x20Python의\x20elif와\x20다릅니다.','return\x20b[1]\x20-\x20a[___];','\x20\x20\x20\x20System.out.println(q.poll());','\x20\x20\x20\x20}','각\x20노드에\x20빈\x20ArrayList를\x20할당해\x20인접\x20노드\x20목록을\x20저장합니다.','향상된\x20for문\x20(for-each)','for\x20(String\x20part\x20:\x20parts)\x20{','if\x20(s.___(\x20\x22YES\x22\x20))','import\x20java.util.Arrays;\x0apublic\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20int[]\x20arr\x20=\x20{5,\x203,\x201,\x204,\x202};\x0a\x20\x20\x20\x20\x20\x20\x20\x20Arrays.sort(arr);\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(Arrays.toString(arr));\x20\x20\x20//\x20[1,\x202,\x203,\x204,\x205]\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20int[]\x20copy\x20=\x20Arrays.copyOf(arr,\x203);\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(Arrays.toString(copy));\x20\x20//\x20[1,\x202,\x203]\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20int[]\x20filled\x20=\x20new\x20int[5];\x0a\x20\x20\x20\x20\x20\x20\x20\x20Arrays.fill(filled,\x207);\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(Arrays.toString(filled));\x20//\x20[7,\x207,\x207,\x207,\x207]\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20int[]\x20sub\x20=\x20Arrays.copyOfRange(arr,\x201,\x204);\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(Arrays.toString(sub));\x20\x20\x20//\x20[2,\x203,\x204]\x0a\x20\x20\x20\x20}\x0a}','___\x20int\x20size;','switch(변수)로\x20시작하고\x20각\x20case에서\x20break를\x20빠뜨리면\x20다음\x20case로\x20fall-through됩니다.','public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20for\x20(int\x20i\x20=\x201;\x20i\x20<=\x205;\x20i++)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(i);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a}','<div\x20style=\x22line-height:1.7\x22>\x0a<b>🔢\x20그래프\x20인접\x20리스트\x20—\x20BFS/DFS\x20문제의\x20기반</b><br><br>\x0aBFS/DFS\x20문제에서\x20그래프는\x20<b>ArrayList\x20배열</b>로\x20표현합니다.<br><br>\x0a<b>📌\x20핵심\x20패턴</b><br>\x0a•\x20선언:\x20<code>ArrayList<Integer>[]\x20graph\x20=\x20new\x20ArrayList[N+1];</code><br>\x0a•\x20초기화:\x20<code>for(int\x20i=1;i<=N;i++)\x20graph[i]\x20=\x20new\x20ArrayList<>();</code><br>\x0a•\x20간선\x20추가(양방향):\x20<code>graph[u].add(v);\x20graph[v].add(u);</code><br>\x0a•\x20이웃\x20순회:\x20<code>for(int\x20next\x20:\x20graph[cur])\x20{\x20...\x20}</code>\x0a</div>','//\x20Dart:\x20_\x20접두사로\x20private\x0aString\x20_name;\x20//\x20private\x0aString\x20get\x20name\x20=>\x20_name;\x20//\x20getter','public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20int\x20n\x20=\x204;\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(n\x20%\x202\x20==\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(\x22짝수\x22);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(\x22홀수\x22);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a}','<div\x20style=\x22line-height:1.7\x22>\x0a<b>🔀\x20조건문\x20—\x20카테고리\x20핵심\x20미리보기</b><br><br>\x0aJava\x20조건문은\x20소괄호\x20<code>()</code>에\x20조건,\x20중괄호\x20<code>{}</code>에\x20실행코드를\x20씁니다.<br><br>\x0a<b>⚠️\x20Python과의\x20핵심\x20차이</b><br>\x0a•\x20<code>elif</code>\x20→\x20<code>else\x20if</code>\x20(두\x20단어!)<br>\x0a•\x20논리\x20연산자:\x20<code>and/or/not</code>\x20→\x20<code>&&\x20/\x20||\x20/\x20!</code><br>\x0a•\x20String\x20비교:\x20<code>==</code>\x20❌\x20→\x20<code>.equals()</code>\x20✅<br>\x0a•\x20<code>switch</code>문에서\x20<code>break</code>\x20빠뜨리면\x20fall-through\x20주의!<br><br>\x0a<b>📌\x20자주\x20쓰는\x20패턴</b><br>\x0a•\x20홀짝:\x20<code>n\x20%\x202\x20==\x200</code>\x20 •\x20범위:\x20<code>x\x20>=\x200\x20&&\x20x\x20<=\x20100</code><br>\x0a•\x20삼항:\x20<code>(조건)\x20?\x20참값\x20:\x20거짓값</code>\x0a</div>','public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20int\x20n\x20=\x203;\x0a\x20\x20\x20\x20\x20\x20\x20\x20for\x20(int\x20mask\x20=\x200;\x20mask\x20<\x20(1\x20<<\x20n);\x20mask++)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20for\x20(int\x20i\x20=\x200;\x20i\x20<\x20n;\x20i++)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20((mask\x20>>\x20i\x20&\x201)\x20==\x201)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20System.out.print(i\x20+\x20\x22\x20\x22);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20System.out.println();\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a}','System.out.println(min);','merge','list.sort((a,\x20b)\x20->\x20a\x20___\x20b);','System.out.println(root);','💡\x20mat.length\x20=\x20행\x20수,\x20mat[0].length\x20=\x20열\x20수.\x20정방행렬이\x20아닐\x20수\x20있으므로\x20mat[i].length로\x20안전하게!','이중\x20for문\x20—\x202D\x20배열/행렬\x20순회','HashMap에\x20특정\x20키가\x20존재하는지\x20확인하는\x20코드를\x20완성하세요.','\x20\x20\x20\x20System.out.print(cur\x20+\x20\x22\x20\x22);','curSum','\x22hello\x22','apply','426QtlsRy','리스트를\x20역순으로\x20뒤집는\x20코드를\x20완성하세요.','for\x20(int\x20i\x20=\x201;\x20i\x20<=\x205;\x20i++)\x20{','System.out.println(dp[0]);','드릴\x203\x20—\x20부분합\x20최댓값','Java의\x20<code>interface</code>와\x20함수형\x20인터페이스,\x20람다식을\x20코딩테스트\x20관점에서\x20익힙니다.','드릴\x201\x20—\x20Math.max\x20/\x20Math.min','join','root','//\x20──\x201.\x20기본\x20비트\x20연산\x20──\x0aint\x20a\x20=\x200b1010;\x20\x20//\x2010\x0aint\x20b\x20=\x200b1100;\x20\x20//\x2012\x0aSystem.out.println(a\x20&\x20b);\x20\x20\x20//\x200b1000\x20=\x208\x20\x20(AND)\x0aSystem.out.println(a\x20|\x20b);\x20\x20\x20//\x200b1110\x20=\x2014\x20(OR)\x0aSystem.out.println(a\x20^\x20b);\x20\x20\x20//\x200b0110\x20=\x206\x20\x20(XOR)\x0aSystem.out.println(a\x20<<\x201);\x20\x20//\x2020\x20(왼쪽\x20시프트:\x20×2)\x0aSystem.out.println(a\x20>>\x201);\x20\x20//\x205\x20\x20(오른쪽\x20시프트:\x20÷2)\x0a\x0a//\x20──\x202.\x20자주\x20쓰는\x20패턴\x20──\x0aint\x20n\x20=\x207;\x0aSystem.out.println(n\x20&\x201);\x20\x20\x20\x20\x20\x20//\x201\x20(홀수),\x200이면\x20짝수\x0aSystem.out.println(1\x20<<\x203);\x20\x20\x20\x20\x20//\x208\x20=\x202^3\x0aSystem.out.println(n\x20&\x20(n-1));\x20\x20//\x200이면\x202의\x20거듭제곱\x0a\x0a//\x20──\x203.\x20비트마스크\x20부분집합\x20탐색\x20──\x0aint[]\x20arr\x20=\x20{1,\x202,\x203};\x0aint\x20len\x20=\x20arr.length;\x0afor\x20(int\x20mask\x20=\x200;\x20mask\x20<\x20(1\x20<<\x20len);\x20mask++)\x20{\x0a\x20\x20\x20\x20System.out.print(\x22{\x20\x22);\x0a\x20\x20\x20\x20for\x20(int\x20i\x20=\x200;\x20i\x20<\x20len;\x20i++)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20((mask\x20>>\x20i\x20&\x201)\x20==\x201)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20System.out.print(arr[i]\x20+\x20\x22\x20\x22);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20System.out.println(\x22}\x22);\x0a}\x0a//\x20{},\x20{1},\x20{2},\x20{1,2},\x20{3},\x20{1,3},\x20{2,3},\x20{1,2,3}\x0a\x0a//\x20──\x204.\x20비트\x20조작\x20──\x0aint\x20mask2\x20=\x200;\x0amask2\x20|=\x20(1\x20<<\x202);\x20\x20\x20//\x202번째\x20비트\x20켜기\x0amask2\x20&=\x20~(1\x20<<\x202);\x20\x20//\x202번째\x20비트\x20끄기\x0amask2\x20^=\x20(1\x20<<\x201);\x20\x20\x20//\x201번째\x20비트\x20토글','드릴\x203\x20—\x20replaceAll\x20숫자\x20제거','for\x20(int\x20i\x20=\x202;\x20i\x20<=\x20(int)Math.___(n);\x20i++)','has','clear()','java.util.Collections는\x20List를\x20조작하는\x20여러\x20유틸\x20메서드를\x20제공합니다.\x20sort,\x20reverse,\x20max,\x20min,\x20shuffle,\x20frequency\x20등을\x20기억하세요.','\x20\x20\x20\x20return\x20b[1]\x20-\x20a[1];','import\x20java.util.*;\x0apublic\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20int\x20n\x20=\x204;\x0a\x20\x20\x20\x20\x20\x20\x20\x20ArrayList<Integer>[]\x20graph\x20=\x20new\x20ArrayList[n+1];\x0a\x20\x20\x20\x20\x20\x20\x20\x20for(int\x20i=1;i<=n;i++)\x20graph[i]\x20=\x20new\x20ArrayList<>();\x0a\x20\x20\x20\x20\x20\x20\x20\x20graph[1].add(2);\x20graph[2].add(1);\x0a\x20\x20\x20\x20\x20\x20\x20\x20graph[1].add(3);\x20graph[3].add(1);\x0a\x20\x20\x20\x20\x20\x20\x20\x20graph[2].add(4);\x20graph[4].add(2);\x0a\x20\x20\x20\x20\x20\x20\x20\x20int[]\x20dist\x20=\x20new\x20int[n+1];\x0a\x20\x20\x20\x20\x20\x20\x20\x20Arrays.fill(dist,\x20-1);\x0a\x20\x20\x20\x20\x20\x20\x20\x20Queue<Integer>\x20q\x20=\x20new\x20LinkedList<>();\x0a\x20\x20\x20\x20\x20\x20\x20\x20q.offer(1);\x20dist[1]\x20=\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20while\x20(!q.isEmpty())\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20int\x20cur\x20=\x20q.poll();\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20for\x20(int\x20next\x20:\x20graph[cur])\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(dist[next]\x20==\x20-1)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20dist[next]\x20=\x20dist[cur]\x20+\x201;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20q.offer(next);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(Arrays.toString(dist));\x0a\x20\x20\x20\x20}\x0a}','hasNext','Math.max(a,\x20b)\x20\x20\x20\x20//\x20최댓값\x0aMath.min(a,\x20b)\x20\x20\x20\x20//\x20최솟값\x0aMath.abs(x)\x20\x20\x20\x20\x20\x20\x20//\x20절댓값\x0aMath.sqrt(x)\x20\x20\x20\x20\x20\x20//\x20제곱근\x20(double\x20반환)\x0aMath.pow(a,\x20b)\x20\x20\x20\x20//\x20a의\x20b제곱\x20(double\x20반환)\x0aMath.floor(x)\x20\x20\x20\x20\x20//\x20내림\x20(double\x20반환)\x0aMath.ceil(x)\x20\x20\x20\x20\x20\x20//\x20올림\x20(double\x20반환)\x0aMath.round(x)\x20\x20\x20\x20\x20//\x20반올림\x20(long\x20반환)\x0aMath.log(x)\x20\x20\x20\x20\x20\x20\x20//\x20자연로그\x0aMath.PI\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20원주율\x203.14159...','System.out.println(n\x20-\x201);','드릴\x204\x20—\x20isEmpty로\x20종료\x20확인','list.sort((a,\x20b)\x20->\x20a.___()\x20-\x20b.___());','문자열에서\x20숫자를\x20모두\x20제거하는\x20코드를\x20완성하세요.','\x20\x20\x20\x20sum\x20+=\x20Integer.parseInt(br.readLine().trim());','배열에서\x20두\x20수의\x20합이\x20target인\x20인덱스를\x20찾는\x20코드를\x20완성하세요.','\x22,\x22','public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20char\x20c\x20=\x20\x277\x27;\x0a\x20\x20\x20\x20\x20\x20\x20\x20int\x20n\x20=\x20c\x20-\x20\x270\x27;\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(n);\x20\x20//\x207\x0a\x20\x20\x20\x20}\x0a}','public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(\x22Hello!\x22);\x0a\x20\x20\x20\x20}\x0a}','카카오·삼성\x20등\x20상위\x20코딩테스트\x20필수.\x20HashMap으로\x20빈도\x20카운팅,\x20HashSet으로\x20중복\x20제거,\x20Stack/Queue로\x20자료구조\x20문제\x20해결이\x20핵심입니다.','Vhdyj','드릴\x202\x20—\x20최대\x20힙\x20선언','Point\x20클래스의\x20객체를\x20생성하는\x20코드를\x20완성하세요.','SGqST','int\x20a\x20=\x20Integer.parseInt(st.___(\x20\x20));','\x20\x20\x20\x20for\x20(int\x20j\x20=\x200;\x20j\x20<\x205;\x20j++)\x20{','switch\x20(day)\x20{','드릴\x201\x20—\x20Scanner\x20정수\x20읽기','null\x20처리와\x20참조형\x20비교','Scanner,\x20BufferedReader,\x20int/double/String\x20변환,\x20printf/format,\x20메모리\x20구조','for\x20(int\x20i\x20=\x202;\x20i\x20<=\x20Math.sqrt(___);\x20i++)','System.out.println(set.size());','//\x20TreeMap\x0aTreeMap<K,V>\x20map\x20=\x20new\x20TreeMap<>();\x0amap.firstKey()\x20\x20\x20\x20\x20//\x20가장\x20작은\x20키\x0amap.lastKey()\x20\x20\x20\x20\x20\x20//\x20가장\x20큰\x20키\x0amap.headMap(k)\x20\x20\x20\x20\x20//\x20k\x20미만\x20부분\x20Map\x0amap.tailMap(k)\x20\x20\x20\x20\x20//\x20k\x20이상\x20부분\x20Map\x0a\x0a//\x20PriorityQueue\x20(최소\x20힙)\x0aPriorityQueue<Integer>\x20pq\x20=\x20new\x20PriorityQueue<>();\x0apq.offer(x);\x20\x20\x20\x20\x20\x20//\x20삽입\x20O(log\x20n)\x0apq.poll();\x20\x20\x20\x20\x20\x20\x20\x20//\x20최솟값\x20제거+반환\x20O(log\x20n)\x0apq.peek();\x20\x20\x20\x20\x20\x20\x20\x20//\x20최솟값\x20조회\x20(삭제\x20없음)\x0a\x0a//\x20최대\x20힙\x0aPriorityQueue<Integer>\x20maxPq\x20=\x20new\x20PriorityQueue<>(Collections.reverseOrder());','public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20StringBuilder\x20sb\x20=\x20new\x20StringBuilder();\x0a\x20\x20\x20\x20\x20\x20\x20\x20sb.append(\x22Java\x22);\x0a\x20\x20\x20\x20\x20\x20\x20\x20String\x20result\x20=\x20sb.toString();\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(result);\x20\x20//\x20Java\x0a\x20\x20\x20\x20}\x0a}','\x20\x20\x20\x20int\x20cur\x20=\x20q.poll();','public','Collections.sort(list);','\x20\x20\x20\x20System.out.println(e.getKey()\x20+\x20\x22:\x20\x22\x20+\x20e.getValue());','드릴\x203\x20—\x20ArrayList\x20for-each','public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20int[][]\x20matrix\x20=\x20{{1,2,3},{4,5,6},{7,8,9}};\x0a\x20\x20\x20\x20\x20\x20\x20\x20int\x20v\x20=\x20matrix[1][2];\x20\x20//\x206\x20(2행\x203열,\x200-indexed)\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(v);\x0a\x20\x20\x20\x20}\x0a}','System.out.println(grade);','access','\x20\x20\x20\x20for\x20(int\x20i\x20=\x200;\x20i\x20<\x20n;\x20i++)\x20{','StringBuilder\x20—\x20가변\x20문자열\x20빌더','copy','💡\x20String.length()\x20(괄호\x20O)\x20vs\x20배열.length\x20(괄호\x20X)\x20vs\x20ArrayList.size()\x20(괄호\x20O).\x20이\x20세\x20가지를\x20구분하는\x20것이\x20핵심!','(5)','if\x20(조건1)\x20{\x0a\x20\x20\x20\x20//\x20조건1이\x20참일\x20때\x0a}\x20else\x20if\x20(조건2)\x20{\x20\x20\x20//\x20Python:\x20elif\x0a\x20\x20\x20\x20//\x20조건2가\x20참일\x20때\x0a}\x20else\x20{\x0a\x20\x20\x20\x20//\x20모두\x20거짓일\x20때\x0a}','MIN_VALUE','HashMap을\x20순회하는\x20코드를\x20완성하세요.','import\x20java.util.*;\x0apublic\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20Queue<Integer>\x20q\x20=\x20new\x20LinkedList<>();\x0a\x20\x20\x20\x20\x20\x20\x20\x20q.offer(1);\x20q.offer(2);\x20q.offer(3);\x0a\x20\x20\x20\x20\x20\x20\x20\x20while\x20(!q.isEmpty())\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(q.poll());\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a}','두\x20수\x20중\x20큰\x20값을\x20반환하는\x20Math\x20메서드를\x20완성하세요.','public\x20static\x20void\x20main(String[]\x20args)\x20throws\x20IOException\x20{','if\x20(a[0]\x20!=\x20b[0])\x20return\x20a[0]\x20-\x20b[0];\x0areturn\x20___\x20-\x20a[1];','containsKey','static\x20int\x20add(int\x20a,\x20int\x20b)\x20{','//\x20이중\x20for문\x20완전탐색\x20O(n²)\x0afor\x20(int\x20i\x20=\x200;\x20i\x20<\x20n;\x20i++)\x20{\x0a\x20\x20\x20\x20for\x20(int\x20j\x20=\x20i+1;\x20j\x20<\x20n;\x20j++)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20arr[i],\x20arr[j]\x20조합\x20처리\x0a\x20\x20\x20\x20}\x0a}\x0a\x0a//\x20HashMap으로\x20O(n)\x20개선\x0aHashMap<Integer,\x20Integer>\x20seen\x20=\x20new\x20HashMap<>();\x0afor\x20(int\x20i\x20=\x200;\x20i\x20<\x20nums.length;\x20i++)\x20{\x0a\x20\x20\x20\x20int\x20need\x20=\x20target\x20-\x20nums[i];\x0a\x20\x20\x20\x20if\x20(seen.containsKey(need))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20찾음:\x20seen.get(need),\x20i\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20seen.put(nums[i],\x20i);\x0a}\x0a\x0a//\x20부분\x20수열\x20(비트마스크)\x0afor\x20(int\x20mask\x20=\x200;\x20mask\x20<\x20(1\x20<<\x20n);\x20mask++)\x20{\x0a\x20\x20\x20\x20for\x20(int\x20i\x20=\x200;\x20i\x20<\x20n;\x20i++)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20((mask\x20>>\x20i\x20&\x201)\x20==\x201)\x20{\x20/*\x20i\x20포함\x20*/\x20}\x0a\x20\x20\x20\x20}\x0a}','boolean\x20isLeap\x20=\x20(year\x20%\x204\x20==\x200\x20&&\x20year\x20%\x20100\x20!=\x200)\x20||\x20(year\x20%\x20400\x20==\x200);','코딩테스트에서는\x20static\x20메서드로\x20기능을\x20분리합니다.\x20main도\x20static이라\x20같은\x20클래스의\x20static\x20메서드를\x20바로\x20호출할\x20수\x20있습니다.','HashMap<String,\x20Integer>\x20map\x20=\x20new\x20HashMap<>();\x0a\x0amap.put(\x22key\x22,\x201);\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20추가/수정\x20(Python:\x20map[\x22key\x22]\x20=\x201)\x0aint\x20v\x20=\x20map.get(\x22key\x22);\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20조회\x20(없으면\x20null!)\x0aint\x20v2\x20=\x20map.getOrDefault(\x22key\x22,\x200);\x20//\x20없으면\x200\x20반환\x0amap.containsKey(\x22key\x22);\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20키\x20존재\x20여부\x0amap.remove(\x22key\x22);\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20삭제\x0a\x0a//\x20빈도\x20카운팅\x20핵심\x20패턴\x0afor\x20(int\x20x\x20:\x20arr)\x20{\x0a\x20\x20\x20\x20map.put(x,\x20map.getOrDefault(x,\x200)\x20+\x201);\x0a}','public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20int[][]\x20matrix\x20=\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{1,\x202,\x203},\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{4,\x205,\x206},\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{7,\x208,\x209}\x0a\x20\x20\x20\x20\x20\x20\x20\x20};\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20행\x20우선\x20순회\x0a\x20\x20\x20\x20\x20\x20\x20\x20for\x20(int\x20i\x20=\x200;\x20i\x20<\x20matrix.length;\x20i++)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20for\x20(int\x20j\x20=\x200;\x20j\x20<\x20matrix[i].length;\x20j++)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20System.out.print(matrix[i][j]\x20+\x20\x22\x20\x22);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20System.out.println();\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a}','HashMap에\x20키-값을\x20저장하는\x20메서드는\x20put()입니다.\x20Python의\x20map[\x27key\x27]\x20=\x20value에\x20해당합니다.','드릴\x204\x20—\x20switch\x20문','public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20int[][]\x20mat\x20=\x20{{1,2,3},{4,5,6},{7,8,9}};\x0a\x20\x20\x20\x20\x20\x20\x20\x20for\x20(int\x20i\x20=\x200;\x20i\x20<\x20mat.length;\x20i++)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20for\x20(int\x20j\x20=\x200;\x20j\x20<\x20mat[i].length;\x20j++)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20System.out.print(mat[i][j]\x20+\x20\x22\x20\x22);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20System.out.println();\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a}','드릴\x203\x20—\x20toString\x20오버라이드','toInt','드릴\x202\x20—\x20절댓값\x20기준\x20정렬','💡\x20핵심\x20포인트\x0a•\x20배열:\x20.length\x20(괄호\x20없음),\x20ArrayList:\x20.size()\x20(괄호\x20있음)\x0a•\x20배열:\x20arr[i]\x20접근,\x20ArrayList:\x20list.get(i)\x20접근\x0a•\x20배열은\x20크기\x20고정,\x20ArrayList는\x20크기\x20가변\x0a•\x20ArrayList는\x20기본형(int)\x20불가,\x20참조형(Integer)\x20사용\x0a•\x20Arrays.sort()는\x20원본\x20수정,\x20Collections.sort()도\x20원본\x20수정','1부터\x205까지\x20출력하는\x20for문의\x20증감식\x20빈칸을\x20채우세요.<br><code>for\x20(int\x20i\x20=\x201;\x20i\x20<=\x205;\x20___)</code>','💡\x20int\x20/\x20int\x20=\x20int!\x20실수\x20결과를\x20원하면\x20(double)n\x20/\x20m\x20또는\x20n\x20*\x201.0\x20/\x20m\x20으로\x20캐스팅.','new','import\x20java.util.Scanner;\x0apublic\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20Scanner\x20sc\x20=\x20new\x20Scanner(System.in);\x0a\x20\x20\x20\x20\x20\x20\x20\x20int\x20n\x20=\x20sc.nextInt();\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(n);\x0a\x20\x20\x20\x20}\x0a}','\x20\x20\x20\x20if\x20(n\x20%\x20i\x20==\x200)\x20return\x20false;','null\x20비교는\x20==\x20를\x20사용합니다.\x20.equals()로는\x20null\x20비교\x20시\x20NPE가\x20발생합니다.','int\x20n\x20=\x20Integer.___(\x20\x2242\x22\x20);','then','String은\x20객체이므로\x20==\x20는\x20주소를\x20비교합니다.\x20내용을\x20비교하려면\x20.equals()를\x20사용하세요.','removeSpaces','}\x20___\x20if\x20(score\x20>=\x2080)\x20{','public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20String\x20s\x20=\x20null;\x0a\x20\x20\x20\x20\x20\x20\x20\x20String\x20result\x20=\x20(s\x20!=\x20null)\x20?\x20s\x20:\x20\x22기본값\x22;\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(result);\x20\x20//\x20기본값\x0a\x20\x20\x20\x20}\x0a}','🗂️','trim()은\x20문자열\x20앞뒤의\x20공백\x20문자를\x20제거합니다.','for\x20(Map.Entry<String,\x20Integer>\x20e\x20:\x20map.___())','stack.___(3);\x20\x20//\x20넣기','Arrays.sort(arr,\x20(a,\x20b)\x20->\x20Integer.___(a,\x20b));','Python과의\x20주요\x20차이점:\x0a•\x20Python은\x20클래스\x20없이\x20코드\x20작성\x20가능,\x20Java는\x20모든\x20코드가\x20클래스\x20안에\x0a•\x20진입점:\x20if\x20__name__\x20==\x20\x22__main__\x22\x20(Python)\x20→\x20main(String[]\x20args)\x20(Java)\x0a•\x20static:\x20@staticmethod\x20(Python)\x20→\x20static\x20(Java)\x0a•\x20생성자:\x20__init__(self)\x20(Python)\x20→\x20ClassName()\x20(Java)\x0a•\x20this\x20(Java)\x20↔\x20self\x20(Python)','Java의\x20참/거짓\x20타입은\x20boolean\x20(소문자).\x20Python의\x20bool과\x20이름이\x20약간\x20다릅니다.','StringTokenizer\x20st\x20=\x20new\x20StringTokenizer(br.readLine());','cHixY','드릴\x203\x20—\x20문자열이\x20포함하는지\x20확인','\x20\x20\x20\x20this.x\x20=\x20x;','public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20double\x20d\x20=\x203.9;\x0a\x20\x20\x20\x20\x20\x20\x20\x20int\x20n\x20=\x20(int)\x20d;\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(n);\x20\x20//\x203\x20(소수점\x20버림)\x0a\x20\x20\x20\x20}\x0a}','드릴\x202\x20—\x20누적\x20합산','System.out.print(\x22World\x22);','biggest','public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20int[]\x20arr\x20=\x20{1,\x202,\x203,\x204,\x205};\x0a\x20\x20\x20\x20\x20\x20\x20\x20for\x20(int\x20x\x20:\x20arr)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(x);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a}','문자열이\x20특정\x20문자열로\x20시작하는지\x20확인하는\x20코드를\x20완성하세요.','int\x20curSum\x20=\x20arr[0];','extends\x20키워드로\x20부모\x20클래스를\x20상속합니다.','Deque를\x20스택처럼\x20쓰는\x20코드를\x20완성하세요.\x20앞에서\x20추가하고\x20앞에서\x20꺼냅니다.','import\x20java.util.*;\x0apublic\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20List<String>\x20list\x20=\x20new\x20ArrayList<>(Arrays.asList(\x22a\x22,\x22b\x22,\x22c\x22));\x0a\x20\x20\x20\x20\x20\x20\x20\x20Iterator<String>\x20it\x20=\x20list.iterator();\x0a\x20\x20\x20\x20\x20\x20\x20\x20while\x20(it.hasNext())\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(it.next());\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a}','low','a[0]','int\x20a\x20=\x201_000_000,\x20b\x20=\x201_000_000;','for\x20(int[]\x20row\x20:\x20arr)','System.out.println(result);\x20\x20//\x202.5','equals','int\x20___\x20=\x200;','xDxVu','\x20\x20\x20\x20System.out.println(\x22불일치\x22);','Overload','정수를\x202진수\x20문자열로\x20변환하는\x20메서드를\x20완성하세요.','printf','ArrayList<Integer>\x20list\x20=\x20new\x20ArrayList<>(Arrays.asList(3,\x201,\x204,\x201,\x205));','isNumber','import\x20java.util.*;\x0a\x0a//\x20──\x201.\x20Stack\x20(LIFO)\x20──\x0aStack<Integer>\x20stack\x20=\x20new\x20Stack<>();\x0astack.push(1);\x20stack.push(2);\x20stack.push(3);\x0aSystem.out.println(stack.pop());\x20\x20\x20//\x203\x20(LIFO)\x0aSystem.out.println(stack.peek());\x20\x20//\x202\x0a\x0a//\x20──\x202.\x20Queue\x20(FIFO)\x20──\x0aQueue<Integer>\x20queue\x20=\x20new\x20LinkedList<>();\x0aqueue.offer(1);\x20queue.offer(2);\x20queue.offer(3);\x0aSystem.out.println(queue.poll());\x20\x20//\x201\x20(FIFO)\x0aSystem.out.println(queue.peek());\x20\x20//\x202\x0a\x0a//\x20──\x203.\x20ArrayDeque\x20(Stack+Queue\x20대체,\x20가장\x20빠름)\x20──\x0aDeque<Integer>\x20deque\x20=\x20new\x20ArrayDeque<>();\x0adeque.push(1);\x20deque.push(2);\x20deque.push(3);\x0aSystem.out.println(deque.pop());\x20\x20\x20//\x203\x20(스택처럼\x20LIFO)\x0a\x0a//\x20──\x204.\x20BFS\x20패턴\x20(Queue\x20+\x20int[])\x20──\x0aQueue<int[]>\x20bfsQ\x20=\x20new\x20LinkedList<>();\x0abfsQ.offer(new\x20int[]{0,\x200,\x200});\x20//\x20{x,\x20y,\x20distance}\x0awhile\x20(!bfsQ.isEmpty())\x20{\x0a\x20\x20\x20\x20int[]\x20cur\x20=\x20bfsQ.poll();\x0a\x20\x20\x20\x20int\x20x\x20=\x20cur[0],\x20y\x20=\x20cur[1],\x20dist\x20=\x20cur[2];\x0a\x20\x20\x20\x20//\x20bfsQ.offer(new\x20int[]{nx,\x20ny,\x20dist+1});\x0a}','드릴\x201\x20—\x20Collections.max','System.out.println(Character.isDigit(c1));','1~10에서\x203의\x20배수를\x20건너뛰고\x20나머지를\x20합산하는\x20코드를\x20완성하세요.','System.out.println(\x22abc\x22.matches(\x22[0-9]+\x22));','static\x20메서드와\x20클래스\x20구조','arr.sort()\x20→\x20Arrays.sort(arr)\x0aarr.toString()\x20→\x20Arrays.toString(arr)','HashMap에서\x20값을\x20추가하는\x20메서드\x20이름을\x20완성하세요.<br><code>map.___(\x22apple\x22,\x203);</code>','드릴\x201\x20—\x20matches로\x20숫자\x20확인','부모\x20생성자를\x20호출하는\x20키워드를\x20완성하세요.','import\x20java.util.ArrayList;\x0apublic\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20ArrayList<String>\x20list\x20=\x20new\x20ArrayList<>();\x0a\x20\x20\x20\x20\x20\x20\x20\x20list.add(\x22Java\x22);\x0a\x20\x20\x20\x20\x20\x20\x20\x20String\x20s\x20=\x20list.get(0);\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(s);\x20\x20//\x20Java\x0a\x20\x20\x20\x20}\x0a}','백트래킹에서\x20선택을\x20취소(복원)하는\x20코드를\x20완성하세요.','Java의\x20<code>private</code>,\x20<code>public</code>\x20접근제어자와\x20getter/setter\x20패턴을\x20익힙니다.','public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20int[]\x20arr\x20=\x20{3,\x201,\x204,\x201,\x205,\x209,\x202,\x206};\x0a\x20\x20\x20\x20\x20\x20\x20\x20int\x20max\x20=\x20arr[0];\x0a\x20\x20\x20\x20\x20\x20\x20\x20for\x20(int\x20x\x20:\x20arr)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(x\x20>\x20max)\x20max\x20=\x20x;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(max);\x20\x20//\x209\x0a\x20\x20\x20\x20}\x0a}','문자가\x20숫자인지\x20확인하는\x20Character\x20메서드를\x20완성하세요.','💡\x20super()는\x20자식\x20생성자에서\x20반드시\x20첫\x20줄에\x20호출해야\x20합니다.\x20@Override\x20어노테이션은\x20재정의임을\x20명시합니다.','문자열이\x20팰린드롬인지\x20검사하는\x20코드를\x20완성하세요.','enKgo','<code>Arrays</code>\x20클래스의\x20유용한\x20메서드들을\x20익힙니다.\x20sort,\x20copyOf,\x20fill,\x20copyOfRange를\x20확인하세요.','self','System.out.printf(\x22___.2f%n\x22,\x203.14159);','contains','System.out.println(br.readLine());','동적\x20크기\x20리스트인\x20<code>ArrayList</code>의\x20추가,\x20삭제,\x20조회\x20방법을\x20익힙니다.','do-while은\x20조건\x20검사\x20전에\x20본문을\x20최소\x20한\x20번\x20실행합니다.\x20입력을\x20받은\x20후\x20조건\x20판단에\x20유용합니다.','기본\x20자료형과\x20형변환','ISAkN','if\x20(sum\x20>\x20100)\x20___;','\x20\x20\x20\x20for\x20(int\x20j\x20=\x201;\x20j\x20<=\x209;\x20j++)\x20{','Java는\x20클래스\x20기반\x20언어입니다.\x20모든\x20코드는\x20반드시\x20class\x20안에\x20있어야\x20하고,\x20프로그램의\x20시작점은\x20public\x20static\x20void\x20main(String[]\x20args)\x20메서드입니다.\x20Python처럼\x20파일에\x20바로\x20코드를\x20쓸\x20수\x20없습니다.','드릴\x201\x20—\x20Comparator\x20오름차순\x20람다','public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20String\x20num\x20=\x20\x2212345\x22;\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(num.matches(\x22[0-9]+\x22));\x20\x20\x20\x20//\x20true\x20(숫자만)\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(num.matches(\x22[a-z]+\x22));\x20\x20\x20\x20//\x20false\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20String\x20s\x20=\x20\x22Hello\x20123\x20World\x22;\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(s.replaceAll(\x22[0-9]\x22,\x20\x22*\x22));\x20//\x20Hello\x20***\x20World\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Character\x20클래스\x0a\x20\x20\x20\x20\x20\x20\x20\x20char\x20c\x20=\x20\x27A\x27;\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(Character.isLetter(c));\x20\x20\x20//\x20true\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(Character.isDigit(c));\x20\x20\x20\x20//\x20false\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(Character.isUpperCase(c));//\x20true\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(Character.toLowerCase(c));//\x20\x27a\x27\x0a\x20\x20\x20\x20}\x0a}','실수\x20<code>3.14159</code>를\x20소수점\x202자리로\x20출력하는\x20코드를\x20완성하세요.<br><code>System.out.printf(\x22___.2f%n\x22,\x203.14159);</code>','드릴\x201\x20—\x20binarySearch\x20기본','★★★\x20최빈출','oGsXH','if\x20(s.equalsIgnoreCase(\x22yes\x22))\x20{','2차원\x20배열을\x20첫\x20번째\x20열\x20오름차순,\x20같으면\x20두\x20번째\x20열\x20내림차순으로\x20정렬하는\x20람다를\x20완성하세요.','배열에서\x20최댓값을\x20찾는\x20코드를\x20완성하세요.','true','getOrDefault','public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20static\x20int\x20add(int\x20a,\x20int\x20b)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20a\x20+\x20b;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(add(3,\x205));\x20\x20//\x208\x0a\x20\x20\x20\x20}\x0a}','for\x20(int\x20next\x20:\x20graph[___])','if\x20(x\x20%\x202\x20!=\x200)\x20___;','드릴\x203\x20—\x20조건\x20범위\x20판별','static\x20class\x20Dog\x20extends\x20Animal\x20{','\x20\x20\x20\x20private\x20int\x20size;','list','1\x20<<\x20k는\x202^k입니다.\x20왼쪽으로\x20k번\x20시프트\x20=\x20k번\x20곱하기\x202.','import\x20java.io.*;','\x20\x20\x20\x20System.out.println(br.readLine());','import\x20java.io.*;\x0apublic\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20throws\x20IOException\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20BufferedReader\x20br\x20=\x20new\x20BufferedReader(new\x20InputStreamReader(System.in));\x0a\x20\x20\x20\x20\x20\x20\x20\x20String[]\x20parts\x20=\x20br.readLine().split(\x22\x20\x22);\x0a\x20\x20\x20\x20\x20\x20\x20\x20int\x20a\x20=\x20Integer.parseInt(parts[0]);\x0a\x20\x20\x20\x20\x20\x20\x20\x20int\x20b\x20=\x20Integer.parseInt(parts[1]);\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(a\x20+\x20b);\x0a\x20\x20\x20\x20}\x0a}','import\x20java.util.Arrays;\x0apublic\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20int[]\x20arr\x20=\x20{1,\x203,\x205,\x207,\x209};\x0a\x20\x20\x20\x20\x20\x20\x20\x20int\x20idx\x20=\x20Arrays.binarySearch(arr,\x205);\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(idx);\x20\x20//\x202\x0a\x20\x20\x20\x20}\x0a}','import\x20java.util.*;\x0apublic\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20List<Integer>\x20list\x20=\x20new\x20ArrayList<>(Arrays.asList(-3,\x201,\x20-2,\x204,\x20-1));\x0a\x20\x20\x20\x20\x20\x20\x20\x20list.sort((a,\x20b)\x20->\x20Math.abs(a)\x20-\x20Math.abs(b));\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(list);\x20\x20//\x20[-1,\x201,\x20-2,\x20-3,\x204]\x20(절댓값\x20오름차순)\x0a\x20\x20\x20\x20}\x0a}','int[]\x20arr\x20=\x20{10,\x2020,\x2030};\x0a\x0a//\x20향상된\x20for문\x20(Python:\x20for\x20x\x20in\x20arr:)\x0afor\x20(int\x20x\x20:\x20arr)\x20{\x0a\x20\x20\x20\x20System.out.println(x);\x20\x20//\x2010,\x2020,\x2030\x0a}\x0a\x0a//\x20ArrayList도\x20동일하게\x20사용\x0aArrayList<String>\x20list\x20=\x20new\x20ArrayList<>();\x0alist.add(\x22apple\x22);\x20list.add(\x22banana\x22);\x0afor\x20(String\x20s\x20:\x20list)\x20{\x0a\x20\x20\x20\x20System.out.println(s);\x0a}','cur.remove(cur.___\x20-\x201);\x20\x20//\x20복원','문자열을\x20뒤집는\x20StringBuilder\x20메서드를\x20완성하세요.','\x20\x20\x20\x20System.out.println(\x22항상\x20실행\x22);','드릴\x204\x20—\x20split으로\x20분리','드릴\x202\x20—\x20양방향\x20간선\x20추가','\x5c+\x5c+\x20*(?:[a-zA-Z_$][0-9a-zA-Z_$]*)','import\x20java.util.HashMap;\x0apublic\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20HashMap<String,\x20Integer>\x20map\x20=\x20new\x20HashMap<>();\x0a\x20\x20\x20\x20\x20\x20\x20\x20map.put(\x22apple\x22,\x203);\x0a\x20\x20\x20\x20\x20\x20\x20\x20map.put(\x22banana\x22,\x205);\x0a\x20\x20\x20\x20\x20\x20\x20\x20int\x20v\x20=\x20map.get(\x22apple\x22);\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x203\x0a\x20\x20\x20\x20\x20\x20\x20\x20int\x20def\x20=\x20map.getOrDefault(\x22cherry\x22,\x200);\x20\x20//\x20없으면\x200\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(v);\x20\x20\x20\x20\x20//\x203\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(def);\x20\x20\x20//\x200\x0a\x20\x20\x20\x20}\x0a}','💡\x20향상된\x20for문에서는\x20인덱스를\x20알\x20수\x20없습니다.\x20인덱스가\x20필요하면\x20일반\x20for(int\x20i=0;\x20i<arr.length;\x20i++)\x20를\x20사용하세요.','next','it.remove()는\x20Iterator가\x20마지막으로\x20반환한\x20원소를\x20안전하게\x20삭제합니다.','문자\x20\x277\x27을\x20정수\x207로\x20변환하는\x20코드를\x20완성하세요.','\x20\x20\x20\x20graph[i]\x20=\x20new\x20ArrayList<>();','배열\x20원소의\x20빈도를\x20세는\x20코드를\x20완성하세요.','if\x20(x\x20___\x20min)\x20min\x20=\x20x;','parseInt','s\x20==\x20\x22hello\x22\x20→\x20s.equals(\x22hello\x22)\x0a대소문자무시:\x20equalsIgnoreCase\x20→\x20s.toLowerCase()\x20==\x20\x22hello\x22','import\x20java.util.*;\x0apublic\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20Deque<Integer>\x20deque\x20=\x20new\x20ArrayDeque<>();\x0a\x20\x20\x20\x20\x20\x20\x20\x20deque.push(1);\x20\x20//\x20addFirst\x0a\x20\x20\x20\x20\x20\x20\x20\x20deque.push(2);\x0a\x20\x20\x20\x20\x20\x20\x20\x20deque.push(3);\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(deque.pop());\x20\x20//\x203\x20(LIFO)\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(deque.peek());\x20//\x202\x0a\x20\x20\x20\x20}\x0a}','HashSet에서\x20원소\x20포함\x20여부를\x20확인하는\x20메서드를\x20완성하세요.','i+1','putIfAbsent','<div\x20style=\x22line-height:1.7\x22>\x0a<b>🛡️\x20예외\x20처리\x20—\x20코딩테스트\x20런타임\x20에러\x20방지</b><br><br>\x0a<code>BufferedReader</code>\x20사용\x20시\x20<code>IOException</code>은\x20필수입니다.<br><br>\x0a<b>📌\x20핵심\x20예외\x20종류</b><br>\x0a•\x20<code>IOException</code>\x20—\x20BufferedReader.readLine()\x20사용\x20시<br>\x0a•\x20<code>NumberFormatException</code>\x20—\x20Integer.parseInt()\x20잘못된\x20입력<br>\x0a•\x20<code>ArrayIndexOutOfBoundsException</code>\x20—\x20배열\x20범위\x20초과<br>\x0a•\x20<code>NullPointerException</code>\x20—\x20null\x20객체\x20접근<br><br>\x0a<b>⚠️\x20두\x20가지\x20처리\x20방법</b><br>\x0a•\x20<code>throws\x20IOException</code>\x20—\x20main에\x20선언\x20(코딩테스트\x20권장)<br>\x0a•\x20<code>try-catch</code>\x20—\x20직접\x20예외\x20처리\x0a</div>','InputStreamReader','public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20double\x20result\x20=\x20(double)5\x20/\x202;\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(result);\x20\x20//\x202.5\x0a\x20\x20\x20\x20}\x0a}','System.out.println(s.trim());','드릴\x202\x20—\x20return\x20타입','n\x20팩토리얼을\x20재귀로\x20구하는\x20코드를\x20완성하세요.','gger','map.put(5,\x20\x22다섯\x22);\x20map.put(1,\x20\x22하나\x22);\x20map.put(3,\x20\x22셋\x22);','import\x20java.util.*;\x0apublic\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20TreeMap<Integer,\x20String>\x20map\x20=\x20new\x20TreeMap<>();\x0a\x20\x20\x20\x20\x20\x20\x20\x20map.put(5,\x20\x22다섯\x22);\x20map.put(1,\x20\x22하나\x22);\x20map.put(3,\x20\x22셋\x22);\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(map.firstKey());\x20\x20//\x201\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(map.lastKey());\x20\x20\x20//\x205\x0a\x20\x20\x20\x20}\x0a}','BFS에서\x20이웃\x20노드의\x20거리\x20=\x20현재\x20노드의\x20거리\x20+\x201입니다.','for\x20(int\x20x\x20:\x20arr)\x20set.add(x);','int\x20m\x20=\x20Math.max(a,\x20b);','48,','find','int\x20n\x20=\x20\x275\x27\x20-\x20___;','드릴\x201\x20—\x20Queue를\x20이용한\x20BFS','Animal\x20a\x20=\x20new\x20Dog();','Java의\x20for\x20문은\x20for(초기화;\x20조건;\x20증감)\x20형태로\x20세\x20부분을\x20세미콜론으로\x20구분합니다.\x20Python의\x20range()에\x20해당하는\x20것이\x20for(int\x20i=0;\x20i<n;\x20i++)\x20형태입니다.\x20배열이나\x20컬렉션을\x20순회할\x20때는\x20향상된\x20for문(for-each)을\x20사용하면\x20간결합니다.\x20while은\x20조건이\x20참인\x20동안\x20반복하며,\x20break로\x20반복을\x20종료하고\x20continue로\x20현재\x20회차를\x20건너뛸\x20수\x20있습니다.','System.out.println(set.contains(2));','💡\x20코딩테스트에서는\x20단순\x20구조체처럼\x20public\x20필드를\x20쓰기도\x20합니다.\x20하지만\x20실무에서는\x20항상\x20private\x20+\x20getter/setter\x20패턴을\x20씁니다.','드릴\x204\x20—\x20복합\x20조건\x20단락\x20평가','리스트에서\x20최댓값을\x20구하는\x20코드를\x20완성하세요.','b[1]','Counter\x20c\x20=\x20Counter.create();','Queue는\x20인터페이스이므로\x20LinkedList나\x20ArrayDeque로\x20구현합니다.\x20offer()로\x20추가,\x20poll()로\x20제거합니다.','int[]\x20sub\x20=\x20Arrays.copyOfRange(arr,\x202,\x205);','드릴\x203\x20—\x20이중\x20for문','reverse','toCharArray','smallest','정규식과\x20Character\x20클래스','Collections.reverse()는\x20리스트를\x20제자리에서\x20뒤집습니다.\x20원본이\x20수정됩니다.','public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20//\x20메모이제이션\x20(탑다운)\x0a\x20\x20\x20\x20static\x20long[]\x20memo\x20=\x20new\x20long[100];\x0a\x0a\x20\x20\x20\x20static\x20long\x20fibMemo(int\x20n)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(n\x20<=\x201)\x20return\x20n;\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(memo[n]\x20!=\x200)\x20return\x20memo[n];\x0a\x20\x20\x20\x20\x20\x20\x20\x20memo[n]\x20=\x20fibMemo(n-1)\x20+\x20fibMemo(n-2);\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20memo[n];\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20바텀업\x20(타뷸레이션)\x0a\x20\x20\x20\x20static\x20long\x20fibDP(int\x20n)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20long[]\x20dp\x20=\x20new\x20long[n\x20+\x201];\x0a\x20\x20\x20\x20\x20\x20\x20\x20dp[0]\x20=\x200;\x20dp[1]\x20=\x201;\x0a\x20\x20\x20\x20\x20\x20\x20\x20for\x20(int\x20i\x20=\x202;\x20i\x20<=\x20n;\x20i++)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20dp[i]\x20=\x20dp[i-1]\x20+\x20dp[i-2];\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20dp[n];\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(fibMemo(40));\x20\x20//\x20102334155\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(fibDP(40));\x20\x20\x20\x20//\x20102334155\x0a\x20\x20\x20\x20}\x0a}','코딩테스트에서\x20자주\x20쓰는\x20타입\x20변환\x20패턴을\x20한\x20번에\x20정리합니다.\x20<code>Integer.parseInt</code>,\x20<code>String.valueOf</code>,\x20<code>Integer.toBinaryString</code>\x20등을\x20확인하세요.','int[][]\x20mat\x20=\x20{{1,2,3},{4,5,6}};\x0a\x0a//\x20행\x20우선\x0afor\x20(int\x20i\x20=\x200;\x20i\x20<\x20mat.length;\x20i++)\x20{\x0a\x20\x20\x20\x20for\x20(int\x20j\x20=\x200;\x20j\x20<\x20mat[i].length;\x20j++)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.print(mat[i][j]);\x0a\x20\x20\x20\x20}\x0a}\x0a\x0a//\x20for-each\x20이중\x0afor\x20(int[]\x20row\x20:\x20mat)\x20{\x0a\x20\x20\x20\x20for\x20(int\x20val\x20:\x20row)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.print(val);\x0a\x20\x20\x20\x20}\x0a}\x0a\x0a//\x20대각선\x20합산\x0aint\x20diag\x20=\x200;\x0afor\x20(int\x20i\x20=\x200;\x20i\x20<\x20n;\x20i++)\x20diag\x20+=\x20mat[i][i];','BufferedReader와\x20StringTokenizer','Stack\x20/\x20Queue\x20/\x20Deque\x20완전\x20정리','interface는\x20메서드\x20시그니처만\x20선언하는\x20계약입니다.\x20추상\x20메서드가\x20하나인\x20함수형\x20인터페이스는\x20람다식으로\x20구현할\x20수\x20있습니다.\x20코딩테스트에서는\x20주로\x20Comparator\x20람다를\x20씁니다.','base','//\x20접근제어자\x0apublic\x20\x20\x20\x20//\x20어디서나\x20접근\x0aprivate\x20\x20\x20//\x20같은\x20클래스\x20내에서만\x0aprotected\x20//\x20같은\x20패키지\x20+\x20자식\x20클래스\x0a\x0a//\x20getter/setter\x20패턴\x0aprivate\x20int\x20value;\x0apublic\x20int\x20getValue()\x20{\x20return\x20value;\x20}\x0apublic\x20void\x20setValue(int\x20v)\x20{\x0a\x20\x20\x20\x20if\x20(v\x20>=\x200)\x20value\x20=\x20v;\x20\x20//\x20검증\x20가능\x0a}\x0a\x0a//\x20toString\x20오버라이드\x0a@Override\x0apublic\x20String\x20toString()\x20{\x0a\x20\x20\x20\x20return\x20\x22Value:\x20\x22\x20+\x20value;\x0a}','System.out.println(pow8);','드릴\x202\x20—\x20배열\x20길이\x20속성','LinkedList는\x20Queue와\x20Deque\x20인터페이스를\x20구현합니다.\x20반복\x20중에\x20원소를\x20안전하게\x20삭제하려면\x20Iterator를\x20사용해야\x20합니다.\x20for-each\x20루프\x20중\x20list.remove()는\x20예외를\x20발생시킵니다.','charArray()','\x20\x20\x20\x20grade\x20=\x20\x22B\x22;','import\x20java.util.*;\x0apublic\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20List<Integer>\x20list\x20=\x20new\x20ArrayList<>(Arrays.asList(1,\x202,\x203,\x204,\x205));\x0a\x20\x20\x20\x20\x20\x20\x20\x20Collections.reverse(list);\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(list);\x20\x20//\x20[5,\x204,\x203,\x202,\x201]\x0a\x20\x20\x20\x20}\x0a}','List<Integer>\x20list\x20=\x20new\x20ArrayList<>(Arrays.asList(3,1,4,1,5));\x0a\x0aCollections.sort(list);\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20오름차순\x0aCollections.reverse(list);\x20\x20\x20\x20\x20\x20\x20\x20//\x20뒤집기\x0aCollections.max(list);\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20최댓값\x0aCollections.min(list);\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20최솟값\x0aCollections.shuffle(list);\x20\x20\x20\x20\x20\x20\x20\x20//\x20무작위\x0aCollections.frequency(list,\x201);\x20\x20//\x201의\x20개수\x20→\x202\x0aCollections.nCopies(3,\x20\x22x\x22);\x20\x20\x20\x20\x20//\x20[\x22x\x22,\x22x\x22,\x22x\x22]\x0a\x0a//\x20배열\x20→\x20List\x20(고정\x20크기)\x0aList<Integer>\x20fixed\x20=\x20Arrays.asList(1,\x202,\x203);\x0a//\x20배열\x20→\x20ArrayList\x20(가변)\x0aArrayList<Integer>\x20al\x20=\x20new\x20ArrayList<>(Arrays.asList(1,2,3));','mQHxI','Zokrz','드릴\x204\x20—\x20LCS\x20(2D\x20DP)','\x20\x20\x20\x20System.out.println(\x22음수\x22);','레이블을\x20사용하면\x20이중\x20루프\x20전체를\x20한\x20번에\x20탈출할\x20수\x20있습니다.','concat','Long','import\x20java.util.*;\x0apublic\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20String[]\x20words\x20=\x20{\x22dog\x22,\x22cat\x22,\x22bee\x22,\x22ant\x22};\x0a\x20\x20\x20\x20\x20\x20\x20\x20Arrays.sort(words,\x20(a,\x20b)\x20->\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(a.length()\x20!=\x20b.length())\x20return\x20a.length()\x20-\x20b.length();\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20a.compareTo(b);\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(Arrays.toString(words));\x0a\x20\x20\x20\x20}\x0a}','드릴\x201\x20—\x20Arrays.sort\x20기본','\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(i\x20+\x20\x22\x20x\x20\x22\x20+\x20j\x20+\x20\x22\x20=\x20\x22\x20+\x20(i\x20*\x20j));','build','list.add(\x22Java\x22);','외부에서\x20직접\x20접근\x20불가한\x20필드를\x20선언하는\x20키워드를\x20완성하세요.','int\x20max\x20=\x20Arrays.stream(arr).max().getAsInt();','int\x20cur\x20=\x20q.___();','floor','Java는\x20정적\x20타이핑\x20언어로\x20모든\x20변수에\x20타입을\x20명시해야\x20합니다.\x20작은\x20타입에서\x20큰\x20타입으로는\x20자동\x20변환되지만,\x20반대는\x20명시적\x20캐스팅이\x20필요합니다.','String\x20주요\x20메서드','ArrayList는\x20Java의\x20가변\x20길이\x20리스트입니다.\x20Python의\x20list와\x20유사하지만,\x20제네릭\x20타입을\x20지정해야\x20하고\x20기본형(int)\x20대신\x20래퍼\x20클래스(Integer)를\x20씁니다.','subtract','for\x20(int\x20i\x20=\x201;\x20i\x20<=\x2010;\x20i++)\x20{','ConsoleReader','💡\x20최대\x20힙은\x20Collections.reverseOrder()를\x20생성자에\x20전달합니다.\x20다익스트라에서는\x20int[]{dist,\x20node}\x20배열을\x20Comparator로\x20정렬합니다.','stack.push(2);','list.add(\x22d\x22);','int\x20n\x20=\x2010;','import\x20java.util.*;\x0apublic\x20class\x20Main\x20{\x0a\x20\x20\x20\x20static\x20void\x20backtrack(int[]\x20arr,\x20int\x20start,\x20List<Integer>\x20cur,\x20List<List<Integer>>\x20result)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20result.add(new\x20ArrayList<>(cur));\x0a\x20\x20\x20\x20\x20\x20\x20\x20for\x20(int\x20i\x20=\x20start;\x20i\x20<\x20arr.length;\x20i++)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20cur.add(arr[i]);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20backtrack(arr,\x20i\x20+\x201,\x20cur,\x20result);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20cur.remove(cur.size()\x20-\x201);\x20\x20//\x20복원\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20List<List<Integer>>\x20result\x20=\x20new\x20ArrayList<>();\x0a\x20\x20\x20\x20\x20\x20\x20\x20backtrack(new\x20int[]{1,2,3},\x200,\x20new\x20ArrayList<>(),\x20result);\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(result.size());\x20\x20//\x207\x20(공집합\x20제외\x20부분집합)\x0a\x20\x20\x20\x20}\x0a}','Collections.___(list);','abs','continue는\x20현재\x20반복\x20회차만\x20건너뛰고\x20다음\x20반복을\x20계속합니다.','Arrays','return\x20true;','public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20int\x20n\x20=\x2099;\x0a\x20\x20\x20\x20\x20\x20\x20\x20switch\x20(n)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20case\x201:\x20System.out.println(\x22하나\x22);\x20break;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20default:\x20System.out.println(\x22기타\x22);\x20break;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a}','String\x20메서드,\x20StringBuilder,\x20char\x20배열,\x20문자열\x20파싱,\x20불변성','curSum\x20=\x20Math.max(arr[i],\x20___\x20+\x20arr[i]);','import\x20java.util.*;\x0a\x0apublic\x20class\x20Main\x20{\x0a\x20\x20\x20\x20static\x20ArrayList<Integer>[]\x20graph;\x0a\x20\x20\x20\x20static\x20boolean[]\x20visited;\x0a\x0a\x20\x20\x20\x20static\x20void\x20buildGraph(int\x20n,\x20int[][]\x20edges)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20graph\x20=\x20new\x20ArrayList[n\x20+\x201];\x20\x20//\x201-indexed\x0a\x20\x20\x20\x20\x20\x20\x20\x20for\x20(int\x20i\x20=\x201;\x20i\x20<=\x20n;\x20i++)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20graph[i]\x20=\x20new\x20ArrayList<>();\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20for\x20(int[]\x20edge\x20:\x20edges)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20int\x20u\x20=\x20edge[0],\x20v\x20=\x20edge[1];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20graph[u].add(v);\x20\x20//\x20양방향\x20(무방향\x20그래프)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20graph[v].add(u);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20static\x20void\x20dfs(int\x20node)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20visited[node]\x20=\x20true;\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.print(node\x20+\x20\x22\x20\x22);\x0a\x20\x20\x20\x20\x20\x20\x20\x20for\x20(int\x20next\x20:\x20graph[node])\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!visited[next])\x20dfs(next);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20static\x20void\x20bfs(int\x20start,\x20int\x20n)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20boolean[]\x20vis\x20=\x20new\x20boolean[n\x20+\x201];\x0a\x20\x20\x20\x20\x20\x20\x20\x20Queue<Integer>\x20q\x20=\x20new\x20LinkedList<>();\x0a\x20\x20\x20\x20\x20\x20\x20\x20q.offer(start);\x20vis[start]\x20=\x20true;\x0a\x20\x20\x20\x20\x20\x20\x20\x20while\x20(!q.isEmpty())\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20int\x20cur\x20=\x20q.poll();\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20System.out.print(cur\x20+\x20\x22\x20\x22);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20for\x20(int\x20next\x20:\x20graph[cur])\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!vis[next])\x20{\x20vis[next]\x20=\x20true;\x20q.offer(next);\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20int\x20n\x20=\x205;\x0a\x20\x20\x20\x20\x20\x20\x20\x20int[][]\x20edges\x20=\x20{{1,2},{1,3},{2,4},{3,5}};\x0a\x20\x20\x20\x20\x20\x20\x20\x20buildGraph(n,\x20edges);\x0a\x20\x20\x20\x20\x20\x20\x20\x20visited\x20=\x20new\x20boolean[n\x20+\x201];\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.print(\x22DFS:\x20\x22);\x20dfs(1);\x20\x20\x20\x20//\x201\x202\x204\x203\x205\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println();\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.print(\x22BFS:\x20\x22);\x20bfs(1,\x20n);\x20//\x201\x202\x203\x204\x205\x0a\x20\x20\x20\x20}\x0a}','드릴\x201\x20—\x20메모이제이션','i번째\x20계단에\x20도달하는\x20방법\x20=\x20(i-1)에서\x201칸\x20+\x20(i-2)에서\x202칸.','\x20\x20\x20\x20if\x20(v\x20%\x202\x20==\x200)\x20it.remove();','LinkedList와\x20Iterator','done','dp[i]\x20=\x20dp[i-1]\x20+\x20dp[___];','이진탐색:\x20직접\x20구현\x0amax:\x20list.reduce(max)\x0amin:\x20list.reduce(min)','💡\x20Arrays.asList()는\x20고정\x20크기\x20List를\x20반환해\x20add/remove\x20불가.\x20new\x20ArrayList<>(Arrays.asList(...))로\x20가변\x20리스트를\x20만드세요.','Queue','import\x20java.util.*;\x0apublic\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20int[][]\x20arr\x20=\x20{{2,3},{1,5},{1,2},{2,1}};\x0a\x20\x20\x20\x20\x20\x20\x20\x20Arrays.sort(arr,\x20(a,\x20b)\x20->\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(a[0]\x20!=\x20b[0])\x20return\x20a[0]\x20-\x20b[0];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20b[1]\x20-\x20a[1];\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20for\x20(int[]\x20row\x20:\x20arr)\x20System.out.println(Arrays.toString(row));\x0a\x20\x20\x20\x20}\x0a}','Arrays.binarySearch(배열,\x20찾을값)은\x20정렬된\x20배열에서\x20해당\x20값의\x20인덱스를\x20반환합니다.','난이도\x20●●○','Deque<T>\x20stack\x20=\x20new\x20ArrayDeque<>();\x0astack.push(x);\x20stack.pop();\x20stack.peek();\x0a\x0aQueue<T>\x20q\x20=\x20new\x20LinkedList<>();\x0aq.offer(x);\x20q.poll();\x20q.peek();','Collections\x20클래스는\x20sort,\x20reverse,\x20max,\x20min,\x20shuffle\x20등\x20리스트\x20조작\x20유틸을\x20제공합니다.','\x20\x20\x20\x20System.out.println(next);','factorial(n)\x20=\x20n\x20*\x20factorial(n-1)입니다.\x20n이\x201\x20이하면\x201을\x20반환합니다.','Comparator\x20람다\x20완전\x20정리','public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20int\x20n\x20=\x2025;\x0a\x20\x20\x20\x20\x20\x20\x20\x20int\x20root\x20=\x20(int)\x20Math.sqrt(n);\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(root);\x20\x20//\x205\x0a\x20\x20\x20\x20}\x0a}','public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20//\x20static\x20메서드:\x20객체\x20생성\x20없이\x20호출\x20가능\x0a\x20\x20\x20\x20static\x20int\x20add(int\x20a,\x20int\x20b)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20a\x20+\x20b;\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20static\x20boolean\x20isEven(int\x20n)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20n\x20%\x202\x20==\x200;\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(add(3,\x205));\x20\x20\x20\x20\x20\x20//\x208\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(isEven(4));\x20\x20\x20\x20\x20\x20//\x20true\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(isEven(7));\x20\x20\x20\x20\x20\x20//\x20false\x0a\x20\x20\x20\x20}\x0a}','parent','import\x20java.util.*;\x0apublic\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20Queue<int[]>\x20q\x20=\x20new\x20LinkedList<>();\x0a\x20\x20\x20\x20\x20\x20\x20\x20q.offer(new\x20int[]{0,\x200,\x200});\x20\x20//\x20{x,\x20y,\x20dist}\x0a\x20\x20\x20\x20\x20\x20\x20\x20int[]\x20cur\x20=\x20q.poll();\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(cur[2]);\x20\x20//\x200\x0a\x20\x20\x20\x20}\x0a}','inner','드릴\x201\x20—\x20do-while\x20구조','for-each\x20도중\x20리스트를\x20직접\x20수정하면\x20ConcurrentModificationException이\x20발생합니다.\x20Iterator의\x20remove()를\x20사용하세요.','int[]\x20copy\x20=\x20Arrays.___(arr,\x203);','init','StringBuilder를\x20String으로\x20변환하는\x20메서드를\x20완성하세요.','\x20\x20\x20\x20int\x20sum\x20=\x200;','search','객체의\x20실제\x20타입을\x20확인하는\x20instanceof를\x20완성하세요.','System.out.println(Arrays.toString(sub));','startsWith()는\x20문자열이\x20지정한\x20접두사로\x20시작하면\x20true를\x20반환합니다.','1][1','match','int[]\x20sorted\x20=\x20{1,\x203,\x205,\x207,\x209};\x0a\x0a//\x20이진\x20탐색\x20(정렬된\x20배열에서만!)\x0aint\x20idx\x20=\x20Arrays.binarySearch(sorted,\x205);\x20\x20//\x202\x0aint\x20notFound\x20=\x20Arrays.binarySearch(sorted,\x204);\x20//\x20음수\x20반환\x0a\x0a//\x20스트림으로\x20최솟값/최댓값\x0aint\x20max\x20=\x20Arrays.stream(arr).max().getAsInt();\x0aint\x20min\x20=\x20Arrays.stream(arr).min().getAsInt();\x0aint\x20sum\x20=\x20Arrays.stream(arr).sum();\x0a\x0a//\x20직접\x20탐색\x0aint\x20myMax\x20=\x20arr[0];\x0afor\x20(int\x20x\x20:\x20arr)\x20if\x20(x\x20>\x20myMax)\x20myMax\x20=\x20x;','num','HashMap<Integer,\x20Integer>\x20seen\x20=\x20new\x20HashMap<>();','extends','String[]\x20parts\x20=\x20br.readLine().split(\x22\x20\x22);','두\x20조건이\x20모두\x20참일\x20때\x20실행되는\x20논리\x20연산자를\x20채우세요.<br><code>if\x20(a\x20>\x200\x20___\x20b\x20>\x200)</code>','\x20\x20\x20\x20dist[next]\x20=\x20dist[cur]\x20+\x201;','//\x20═══════════════════════════════════════════════════\x0a//\x201.\x20기본\x20for\x20반복문\x0a//\x20═══════════════════════════════════════════════════\x0a//\x20for\x20(초기화;\x20조건;\x20증감)\x20{\x20실행코드\x20}\x0afor\x20(int\x20i\x20=\x200;\x20i\x20<\x205;\x20i++)\x20{\x20\x20\x20\x20//\x200,\x201,\x202,\x203,\x204\x0a\x20\x20\x20\x20System.out.println(i);\x0a}\x0a\x0afor\x20(int\x20i\x20=\x201;\x20i\x20<=\x205;\x20i++)\x20{\x20\x20\x20//\x201,\x202,\x203,\x204,\x205\x0a\x20\x20\x20\x20System.out.println(i);\x0a}\x0a\x0afor\x20(int\x20i\x20=\x205;\x20i\x20>=\x201;\x20i--)\x20{\x20\x20\x20//\x205,\x204,\x203,\x202,\x201\x20(역순)\x0a\x20\x20\x20\x20System.out.println(i);\x0a}\x0a\x0afor\x20(int\x20i\x20=\x200;\x20i\x20<\x2010;\x20i\x20+=\x202)\x20{\x20//\x200,\x202,\x204,\x206,\x208\x20(2씩\x20증가)\x0a\x20\x20\x20\x20System.out.println(i);\x0a}\x0a\x0a//\x20═══════════════════════════════════════════════════\x0a//\x202.\x20향상된\x20for문\x20(for-each)\x0a//\x20═══════════════════════════════════════════════════\x0aint[]\x20arr\x20=\x20{10,\x2020,\x2030};\x0afor\x20(int\x20x\x20:\x20arr)\x20{\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20x\x20=\x2010,\x2020,\x2030\x20차례로\x0a\x20\x20\x20\x20System.out.println(x);\x0a}\x0a\x0aString[]\x20names\x20=\x20{\x22Alice\x22,\x20\x22Bob\x22,\x20\x22Charlie\x22};\x0afor\x20(String\x20name\x20:\x20names)\x20{\x0a\x20\x20\x20\x20System.out.println(name);\x0a}\x0a\x0a//\x20═══════════════════════════════════════════════════\x0a//\x203.\x20while\x20반복문\x0a//\x20═══════════════════════════════════════════════════\x0aint\x20count\x20=\x200;\x0awhile\x20(count\x20<\x203)\x20{\x0a\x20\x20\x20\x20System.out.println(count);\x20\x20\x20\x20//\x200,\x201,\x202\x0a\x20\x20\x20\x20count++;\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20count\x20=\x20count\x20+\x201\x0a}\x0a\x0a//\x20──\x20do-while\x20(최소\x201번은\x20실행)\x20──\x0aint\x20n\x20=\x200;\x0ado\x20{\x0a\x20\x20\x20\x20System.out.println(n);\x0a\x20\x20\x20\x20n++;\x0a}\x20while\x20(n\x20<\x203);\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20조건이\x20뒤에\x20옴\x0a\x0a//\x20═══════════════════════════════════════════════════\x0a//\x204.\x20break\x20/\x20continue\x0a//\x20═══════════════════════════════════════════════════\x0afor\x20(int\x20i\x20=\x200;\x20i\x20<\x2010;\x20i++)\x20{\x0a\x20\x20\x20\x20if\x20(i\x20==\x205)\x20break;\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20반복\x20완전\x20종료\x20(5에서\x20멈춤)\x0a\x20\x20\x20\x20if\x20(i\x20%\x202\x20==\x200)\x20continue;\x20\x20\x20\x20\x20//\x20이번\x20회차\x20건너뜀\x20(짝수\x20스킵)\x0a\x20\x20\x20\x20System.out.println(i);\x20\x20\x20\x20\x20\x20\x20\x20//\x201,\x203\x20출력\x0a}\x0a\x0a//\x20═══════════════════════════════════════════════════\x0a//\x205.\x20중첩\x20반복문\x20(2차원\x20배열,\x20구구단\x20등)\x0a//\x20═══════════════════════════════════════════════════\x0a//\x20──\x20구구단\x20출력\x20──\x0afor\x20(int\x20i\x20=\x202;\x20i\x20<=\x209;\x20i++)\x20{\x0a\x20\x20\x20\x20for\x20(int\x20j\x20=\x201;\x20j\x20<=\x209;\x20j++)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(i\x20+\x20\x22\x20x\x20\x22\x20+\x20j\x20+\x20\x22\x20=\x20\x22\x20+\x20(i*j));\x0a\x20\x20\x20\x20}\x0a}\x0a\x0a//\x20──\x202차원\x20배열\x20순회\x20──\x0aint[][]\x20matrix\x20=\x20{{1,2,3},\x20{4,5,6}};\x0afor\x20(int\x20i\x20=\x200;\x20i\x20<\x20matrix.length;\x20i++)\x20{\x0a\x20\x20\x20\x20for\x20(int\x20j\x20=\x200;\x20j\x20<\x20matrix[i].length;\x20j++)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.print(matrix[i][j]\x20+\x20\x22\x20\x22);\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20System.out.println();\x0a}\x0a\x0a//\x20═══════════════════════════════════════════════════\x0a//\x206.\x20자주\x20쓰는\x20패턴\x0a//\x20═══════════════════════════════════════════════════\x0a//\x20──\x20누적\x20합산\x20──\x0aint\x20total\x20=\x200;\x0afor\x20(int\x20x\x20:\x20arr)\x20{\x0a\x20\x20\x20\x20total\x20+=\x20x;\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20total\x20=\x20total\x20+\x20x\x0a}\x0a\x0a//\x20──\x20최댓값\x20찾기\x20──\x0aint\x20max\x20=\x20arr[0];\x0afor\x20(int\x20x\x20:\x20arr)\x20{\x0a\x20\x20\x20\x20if\x20(x\x20>\x20max)\x20max\x20=\x20x;\x0a}\x0a\x0a//\x20──\x20배열\x20역순\x20출력\x20──\x0afor\x20(int\x20i\x20=\x20arr.length\x20-\x201;\x20i\x20>=\x200;\x20i--)\x20{\x0a\x20\x20\x20\x20System.out.println(arr[i]);\x0a}','System.out.println(isEven(4));','\x20\x20\x20\x20System.out.println(it.next());','String\x20result\x20=\x20String.join(\x22-\x22,\x20parts);','ArrayDeque를\x20스택으로\x20쓸\x20때\x20push()로\x20넣고\x20pop()으로\x20꺼냅니다.\x20LIFO\x20순서입니다.','public\x20String\x20___()\x20{','드릴\x202\x20—\x20super()\x20부모\x20생성자\x20호출','드릴\x204\x20—\x20정적\x20팩토리\x20패턴','💡\x20핵심\x20포인트\x0a•\x20Comparator\x20람다:\x20(a,\x20b)\x20->\x20a\x20-\x20b\x20(오름차순),\x20(a,\x20b)\x20->\x20b\x20-\x20a\x20(내림차순)\x0a•\x20기본형\x20배열(int[])은\x20내림차순\x20불가,\x20Integer[]로\x20변환\x20필요\x0a•\x20이진탐색은\x20정렬된\x20배열에서만\x20사용\x20가능\x0a•\x20Arrays.binarySearch()는\x20없으면\x20음수\x20반환\x0a•\x202차원\x20배열\x20정렬:\x20Arrays.sort(arr,\x20(a,\x20b)\x20->\x20a[0]\x20-\x20b[0])','public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20//\x20static\x20메서드\x20정의\x0a\x20\x20\x20\x20static\x20int\x20max(int\x20a,\x20int\x20b)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20a\x20>\x20b\x20?\x20a\x20:\x20b;\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20static\x20void\x20printArray(int[]\x20arr)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20for\x20(int\x20x\x20:\x20arr)\x20System.out.print(x\x20+\x20\x22\x20\x22);\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println();\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20int\x20m\x20=\x20max(3,\x207);\x20\x20\x20\x20\x20\x20//\x207\x0a\x20\x20\x20\x20\x20\x20\x20\x20printArray(new\x20int[]{1,2,3});\x0a\x20\x20\x20\x20}\x0a}','out','String\x20s\x20=\x20String.___(n);','나머지(%)가\x200이면\x20짝수.\x20같음\x20비교는\x20==\x20(대입\x20=이\x20아님).','yPOmt','드릴\x203\x20—\x202D\x20배열\x20복합\x20기준\x20정렬','정수\x20<code>42</code>를\x20String으로\x20변환하는\x20메서드의\x20빈칸을\x20채우세요.<br><code>String\x20s\x20=\x20String.___(42);</code>','try\x20{\x0a\x20\x20\x20\x20//\x20예외\x20가능\x20코드\x0a}\x20catch\x20(예외타입\x20e)\x20{\x0a\x20\x20\x20\x20//\x20예외\x20처리\x0a}\x20finally\x20{\x0a\x20\x20\x20\x20//\x20항상\x20실행\x0a}','import\x20java.util.Arrays;\x0apublic\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20int\x20n\x20=\x2010;\x0a\x20\x20\x20\x20\x20\x20\x20\x20int[]\x20dp\x20=\x20new\x20int[n\x20+\x201];\x0a\x20\x20\x20\x20\x20\x20\x20\x20Arrays.fill(dp,\x20Integer.MAX_VALUE);\x20\x20//\x20INF로\x20초기화\x0a\x20\x20\x20\x20\x20\x20\x20\x20dp[0]\x20=\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(dp[0]);\x20\x20//\x200\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(dp[1]);\x20\x20//\x202147483647\x20(INF)\x0a\x20\x20\x20\x20}\x0a}','\x20\x20\x20\x20dp[i][j]\x20=\x20Math.max(dp[i-1][j],\x20dp[i][j-1]);','number','2][3','long\x20result\x20=\x20(long)a\x20*\x20b;\x20\x20//\x20오버플로우\x20안전\x0along\x20lcm\x20=\x20a\x20/\x20gcd(a,b)\x20*\x20b;\x20//\x20나누기\x20먼저','nextToken','System.out.println(v);','💡\x20n\x20≤\x20100이면\x20O(n²),\x20n\x20≤\x2020이면\x20비트마스크\x20완전탐색,\x20n\x20≤\x201000이면\x20O(n²)도\x20가능.\x20시간복잡도를\x20먼저\x20계산하세요.','dfs','int\x20b\x20=\x20Integer.parseInt(st.nextToken());','비트\x20연산은\x20매우\x20빠릅니다.\x20n&1로\x20홀짝,\x201<<k로\x202의\x20거듭제곱,\x20비트마스크로\x20부분집합\x20탐색을\x20할\x20수\x20있습니다.','Integer.parseInt(s,\x20진수)로\x20n진수\x20문자열을\x2010진수\x20정수로\x20변환할\x20수\x20있습니다.','드릴\x202\x20—\x20대소문자\x20무시\x20비교','for\x20(int\x20mask\x20=\x201;\x20mask\x20<\x20(1\x20<<\x20___);\x20mask++)','dist[cur]','Java\x20조건문은\x20중괄호\x20{}로\x20블록을\x20구분하고,\x20조건식은\x20반드시\x20boolean\x20타입이어야\x20합니다.\x20Python의\x20elif는\x20Java에서\x20else\x20if로\x20표현됩니다.\x20비교\x20연산자(==,\x20!=,\x20>,\x20<)와\x20논리\x20연산자(&&,\x20||,\x20!)를\x20조합해\x20복잡한\x20조건을\x20만들\x20수\x20있습니다.\x20switch\x20문은\x20여러\x20값을\x20비교할\x20때\x20if-else보다\x20간결합니다.','int[]\x20arr\x20=\x20{3,\x201,\x204,\x201,\x205,\x209,\x202,\x206};','queue.offer(1);\x20queue.offer(2);\x20queue.offer(3);','StringTokenizer의\x20nextToken()은\x20다음\x20토큰(공백으로\x20구분된\x20문자열)을\x20반환합니다.','드릴\x204\x20—\x20백트래킹\x20복원','Collections.reverse(list);','for\x20(int\x20x\x20___\x20arr)','Queue가\x20빌\x20때까지\x20처리하는\x20패턴을\x20완성하세요.','드릴\x204\x20—\x20안전한\x20parseInt\x20패턴','binarySearch는\x20반드시\x20정렬된\x20배열에서\x20사용해야\x20합니다.\x20sort()\x20→\x20binarySearch()\x20순서!','System.out.println(len);','vKGco','소수\x20판별:\x202부터\x20√n까지만\x20확인합니다.\x20Math.sqrt()는\x20double을\x20반환해\x20(int)로\x20캐스팅합니다.','import\x20java.util.*;\x0apublic\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20ArrayList<Integer>[]\x20graph\x20=\x20new\x20ArrayList[4];\x0a\x20\x20\x20\x20\x20\x20\x20\x20for\x20(int\x20i\x20=\x201;\x20i\x20<=\x203;\x20i++)\x20graph[i]\x20=\x20new\x20ArrayList<>();\x0a\x20\x20\x20\x20\x20\x20\x20\x20graph[1].add(2);\x20graph[1].add(3);\x0a\x20\x20\x20\x20\x20\x20\x20\x20for\x20(int\x20next\x20:\x20graph[1])\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(next);\x20\x20//\x202,\x203\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a}','yzPPJ','2692765jldOzq','if\x20(memo[n]\x20!=\x200)\x20return\x20memo[___];','do-while과\x20무한루프\x20패턴','Java의\x20Math\x20클래스는\x20java.lang에\x20포함되어\x20import\x20없이\x20사용합니다.\x20코딩테스트에서\x20자주\x20쓰이는\x20메서드들을\x20기억해두세요.','float','💡\x20재귀\x20깊이가\x20너무\x20깊으면\x20StackOverflowError\x20발생.\x20Java\x20기본\x20스택\x20깊이는\x20~10,000.\x20깊으면\x20반복문으로\x20전환하세요.','import\x20java.util.Arrays;\x0apublic\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20int[]\x20arr\x20=\x20{5,\x202,\x208,\x201,\x209,\x203};\x0a\x20\x20\x20\x20\x20\x20\x20\x20Arrays.sort(arr);\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(Arrays.toString(arr));\x20//\x20[1,\x202,\x203,\x205,\x208,\x209]\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20String[]\x20words\x20=\x20{\x22banana\x22,\x20\x22apple\x22,\x20\x22cherry\x22};\x0a\x20\x20\x20\x20\x20\x20\x20\x20Arrays.sort(words);\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(Arrays.toString(words));\x20//\x20[apple,\x20banana,\x20cherry]\x0a\x20\x20\x20\x20}\x0a}','\x20\x20\x20\x20System.out.println(\x220\x22);','int\x20m\x20=\x20Math.___(a,\x20b);','💡\x201\x20<<\x20n은\x20n이\x2031\x20이상이면\x20오버플로우.\x20큰\x20n에는\x201L\x20<<\x20n\x20(long)을\x20사용하세요!','//\x20탑다운\x20메모이제이션\x0aint[]\x20memo\x20=\x20new\x20int[n+1];\x0aArrays.fill(memo,\x20-1);\x0a\x0aint\x20dp(int\x20n)\x20{\x0a\x20\x20\x20\x20if\x20(기저조건)\x20return\x20기저값;\x0a\x20\x20\x20\x20if\x20(memo[n]\x20!=\x20-1)\x20return\x20memo[n];\x20//\x20캐시\x20확인\x0a\x20\x20\x20\x20return\x20memo[n]\x20=\x20dp(n-1)\x20+\x20dp(n-2);\x20//\x20저장\x20후\x20반환\x0a}\x0a\x0a//\x20바텀업\x20타뷸레이션\x0aint[]\x20dp\x20=\x20new\x20int[n+1];\x0adp[0]\x20=\x20초기값;\x0afor\x20(int\x20i\x20=\x201;\x20i\x20<=\x20n;\x20i++)\x20{\x0a\x20\x20\x20\x20dp[i]\x20=\x20dp[i-1]\x20+\x20...;\x20\x20//\x20점화식\x0a}\x0a\x0a//\x202D\x20DP\x20(LCS,\x20배낭\x20등)\x0aint[][]\x20dp\x20=\x20new\x20int[m+1][n+1];\x0afor\x20(int\x20i\x20=\x201;\x20i\x20<=\x20m;\x20i++)\x20{\x0a\x20\x20\x20\x20for\x20(int\x20j\x20=\x201;\x20j\x20<=\x20n;\x20j++)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20dp[i][j]\x20=\x20...;\x0a\x20\x20\x20\x20}\x0a}','if\x20(dist[next]\x20==\x20-1)\x20{','드릴\x201\x20—\x20length()\x20메서드','memo[n]에\x20값이\x20있으면\x20이미\x20계산된\x20것이므로\x20바로\x20반환합니다.','dist[next]\x20=\x20dist[cur]\x20+\x20___;','getString','switch/case\x20동일\x0abreak\x20동일\x0adefault\x20동일','문자열\x20리스트를\x20길이\x20오름차순으로\x20정렬하는\x20람다를\x20완성하세요.','배열\x20↔\x20ArrayList\x20변환,\x20Collections\x20정렬,\x20스트림\x20활용\x20등\x20ArrayList\x20고급\x20패턴을\x20익힙니다.','if\x20(a\x20>\x200\x20&&\x20b\x20>\x200)\x20{','String\x20s\x20=\x20String.format(\x22___.2f\x22,\x20x);','public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20String\x20s\x20=\x20\x22\x20\x20hello\x20world\x20\x20\x22;\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(s.trim());\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20\x22hello\x20world\x22\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20String\x20csv\x20=\x20\x221,2,3,4,5\x22;\x0a\x20\x20\x20\x20\x20\x20\x20\x20String[]\x20parts\x20=\x20csv.split(\x22,\x22);\x0a\x20\x20\x20\x20\x20\x20\x20\x20for\x20(String\x20p\x20:\x20parts)\x20System.out.print(p\x20+\x20\x22\x20\x22);\x20//\x201\x202\x203\x204\x205\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println();\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20String\x20url\x20=\x20\x22https://example.com\x22;\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(url.startsWith(\x22https\x22));\x20//\x20true\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(url.endsWith(\x22.com\x22));\x20\x20\x20\x20//\x20true\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(\x22hello\x22.indexOf(\x22ll\x22));\x20\x20\x20//\x202\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(\x22hello\x22.lastIndexOf(\x27l\x27));\x20//\x203\x0a\x20\x20\x20\x20}\x0a}','public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20int\x20n\x20=\x2010;\x0a\x20\x20\x20\x20\x20\x20\x20\x20int[]\x20dp\x20=\x20new\x20int[n\x20+\x201];\x0a\x20\x20\x20\x20\x20\x20\x20\x20dp[1]\x20=\x201;\x20dp[2]\x20=\x202;\x0a\x20\x20\x20\x20\x20\x20\x20\x20for\x20(int\x20i\x20=\x203;\x20i\x20<=\x20n;\x20i++)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20dp[i]\x20=\x20dp[i-1]\x20+\x20dp[i-2];\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(dp[n]);\x20\x20//\x2089\x0a\x20\x20\x20\x20}\x0a}','if\x20(n\x20%\x202\x20___\x200)','private은\x20같은\x20클래스\x20내에서만\x20접근\x20가능합니다.','fill','문자열에서\x20특정\x20부분을\x20다른\x20문자열로\x20교체하는\x20코드를\x20완성하세요.','46823zKdapY','\x20\x20\x20\x20if\x20(x\x20>\x20max)\x20max\x20=\x20x;','___.sort(arr);','import\x20java.util.Arrays;\x0apublic\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20int[]\x20arr\x20=\x20{3,\x201,\x204,\x201,\x205,\x209};\x0a\x20\x20\x20\x20\x20\x20\x20\x20Arrays.sort(arr);\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(Arrays.toString(arr));\x20\x20//\x20[1,\x201,\x203,\x204,\x205,\x209]\x0a\x20\x20\x20\x20}\x0a}','copyOf','재귀\x20구조\x20동일\x0aDFS\x20구조\x20동일','드릴\x201\x20—\x20ArrayDeque\x20스택\x20push','String.valueOf(n)으로\x20정수를\x20문자열로\x20변환한\x20뒤\x20toCharArray()로\x20각\x20자리를\x20처리합니다.','Java에서\x20필드를\x20private으로\x20선언하면\x20클래스\x20외부에서\x20직접\x20접근할\x20수\x20없습니다.\x20대신\x20public\x20getter/setter\x20메서드로\x20접근을\x20제공합니다.\x20이를\x20캡슐화(Encapsulation)라고\x20합니다.','//\x20──\x201.\x20throws\x20IOException\x20(코딩테스트\x20표준)\x20──\x0aimport\x20java.io.*;\x0apublic\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20throws\x20IOException\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20BufferedReader\x20br\x20=\x20new\x20BufferedReader(new\x20InputStreamReader(System.in));\x0a\x20\x20\x20\x20\x20\x20\x20\x20String\x20line\x20=\x20br.readLine();\x0a\x20\x20\x20\x20\x20\x20\x20\x20int\x20n\x20=\x20Integer.parseInt(line.trim());\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(n);\x0a\x20\x20\x20\x20}\x0a}\x0a\x0a//\x20──\x202.\x20try-catch\x20기본\x20구조\x20──\x0atry\x20{\x0a\x20\x20\x20\x20int\x20n\x20=\x20Integer.parseInt(\x22abc\x22);\x20\x20//\x20예외\x20발생!\x0a}\x20catch\x20(NumberFormatException\x20e)\x20{\x0a\x20\x20\x20\x20System.out.println(\x22숫자\x20변환\x20실패:\x20\x22\x20+\x20e.getMessage());\x0a}\x20finally\x20{\x0a\x20\x20\x20\x20System.out.println(\x22항상\x20실행됨\x22);\x0a}\x0a\x0a//\x20──\x203.\x20다중\x20catch\x20──\x0atry\x20{\x0a\x20\x20\x20\x20BufferedReader\x20br\x20=\x20new\x20BufferedReader(new\x20InputStreamReader(System.in));\x0a\x20\x20\x20\x20int\x20n\x20=\x20Integer.parseInt(br.readLine());\x0a\x20\x20\x20\x20int[]\x20arr\x20=\x20new\x20int[n];\x0a\x20\x20\x20\x20arr[n]\x20=\x201;\x20\x20//\x20ArrayIndexOutOfBoundsException\x0a}\x20catch\x20(IOException\x20e)\x20{\x0a\x20\x20\x20\x20System.out.println(\x22입력\x20오류\x22);\x0a}\x20catch\x20(NumberFormatException\x20e)\x20{\x0a\x20\x20\x20\x20System.out.println(\x22숫자\x20형식\x20오류\x22);\x0a}\x20catch\x20(ArrayIndexOutOfBoundsException\x20e)\x20{\x0a\x20\x20\x20\x20System.out.println(\x22배열\x20범위\x20초과\x22);\x0a}','ArrayList는\x20배열과\x20달리\x20크기가\x20동적으로\x20변합니다.\x20add(),\x20remove(),\x20get(),\x20size()가\x20핵심\x20메서드입니다.','Integer.MAX_VALUE(약\x2021억)를\x20초기\x20INF\x20값으로\x20씁니다.\x20갱신\x20시\x20오버플로우\x20주의!','최댓값이\x20먼저\x20나오는\x20최대\x20힙을\x20선언하는\x20코드를\x20완성하세요.','CQNoW','public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20int\x20a\x20=\x203,\x20b\x20=\x205;\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(a\x20>\x200\x20&&\x20b\x20>\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(\x22둘\x20다\x20양수\x22);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a}','public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20int\x20n\x20=\x201234;\x0a\x20\x20\x20\x20\x20\x20\x20\x20String\x20s\x20=\x20String.valueOf(n);\x0a\x20\x20\x20\x20\x20\x20\x20\x20int\x20sum\x20=\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20for\x20(char\x20c\x20:\x20s.toCharArray())\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20sum\x20+=\x20c\x20-\x20\x270\x27;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(sum);\x20\x20//\x2010\x0a\x20\x20\x20\x20}\x0a}','향상된\x20for문:\x20for\x20(타입\x20변수\x20:\x20배열/컬렉션)\x20{}\x20Python의\x20\x27for\x20x\x20in\x20arr:\x27과\x20동일한\x20역할입니다.','}\x20else\x20{','public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20String\x20s\x20=\x20\x22Java\x20Programming\x22;\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(s.startsWith(\x22Java\x22));\x20\x20//\x20true\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(s.startsWith(\x22Python\x22));\x20//\x20false\x0a\x20\x20\x20\x20}\x0a}','uHGaO','드릴\x203\x20—\x202D\x20배열\x20정렬','String\x20result\x20=\x20sb.___();','int\x20idx\x20=\x20Arrays.___(arr,\x205);','//\x20──\x201.\x20Math\x20클래스\x20주요\x20메서드\x20(import\x20불필요)\x20──\x0aMath.max(3,\x207)\x20\x20\x20\x20\x20\x20\x20//\x207\x0aMath.min(3,\x207)\x20\x20\x20\x20\x20\x20\x20//\x203\x0aMath.abs(-5)\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x205\x0aMath.sqrt(16.0)\x20\x20\x20\x20\x20\x20//\x204.0\x20(double\x20반환)\x0aMath.pow(2,\x2010)\x20\x20\x20\x20\x20\x20//\x201024.0\x20(double\x20반환)\x0aMath.floor(3.7)\x20\x20\x20\x20\x20\x20//\x203.0\x20(내림)\x0aMath.ceil(3.2)\x20\x20\x20\x20\x20\x20\x20//\x204.0\x20(올림)\x0aMath.round(3.5)\x20\x20\x20\x20\x20\x20//\x204\x20(반올림,\x20long\x20반환)\x0aMath.PI\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x203.14159265358979...\x0a\x0a//\x20──\x202.\x20int\x20→\x20long\x20오버플로우\x20방지\x20──\x0aint\x20a\x20=\x201_000_000,\x20b\x20=\x201_000_000;\x0along\x20wrong\x20\x20\x20=\x20a\x20*\x20b;\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20❌\x20-727379968\x20(오버플로우!)\x0along\x20correct\x20=\x20(long)a\x20*\x20b;\x20\x20\x20\x20//\x20✅\x201_000_000_000_000\x20(10^12)\x0a\x0a//\x20──\x203.\x20int/long\x20최댓값/최솟값\x20상수\x20──\x0aint\x20\x20INT_MAX\x20\x20=\x20Integer.MAX_VALUE;\x20\x20//\x202,147,483,647\x0aint\x20\x20INT_MIN\x20\x20=\x20Integer.MIN_VALUE;\x20\x20//\x20-2,147,483,648\x0along\x20LONG_MAX\x20=\x20Long.MAX_VALUE;\x20\x20\x20\x20\x20//\x20약\x209.2\x20×\x2010^18\x0a\x0a//\x20──\x204.\x20자주\x20쓰는\x20패턴\x20──\x0a//\x20소수\x20판별\x20(Math.sqrt\x20활용)\x0astatic\x20boolean\x20isPrime(int\x20n)\x20{\x0a\x20\x20\x20\x20if\x20(n\x20<\x202)\x20return\x20false;\x0a\x20\x20\x20\x20for\x20(int\x20i\x20=\x202;\x20i\x20<=\x20(int)Math.sqrt(n);\x20i++)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(n\x20%\x20i\x20==\x200)\x20return\x20false;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20return\x20true;\x0a}\x0a\x0a//\x20GCD\x20(유클리드\x20호제법)\x0astatic\x20int\x20gcd(int\x20a,\x20int\x20b)\x20{\x0a\x20\x20\x20\x20return\x20b\x20==\x200\x20?\x20a\x20:\x20gcd(b,\x20a\x20%\x20b);\x0a}\x0a//\x20LCM\x20(오버플로우\x20방지:\x20나누기\x20먼저)\x0astatic\x20long\x20lcm(long\x20a,\x20long\x20b)\x20{\x0a\x20\x20\x20\x20return\x20a\x20/\x20gcd((int)a,\x20(int)b)\x20*\x20b;\x0a}','put','int[]\x20dx\x20=\x20{0,\x200,\x20___,\x20-1};','n개의\x20원소가\x20있으면\x202^n개의\x20부분집합이\x20존재합니다.\x201\x20<<\x20n은\x202^n을\x20의미합니다.','쉼표로\x20구분된\x20문자열을\x20배열로\x20분리하는\x20코드를\x20완성하세요.','배열\x20길이는\x20.length\x20(메서드가\x20아닌\x20속성이라\x20괄호\x20없음).\x20ArrayList의\x20.size()와\x20헷갈리지\x20마세요.','System.out.println(n);','Math.sqrt()는\x20double을\x20반환합니다.\x20정수로\x20쓰려면\x20(int)로\x20캐스팅하세요.','if\x20(map.containsKey(\x22hello\x22))\x20{','public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20String\x20s\x20=\x20\x2242\x22;\x0a\x20\x20\x20\x20\x20\x20\x20\x20int\x20n\x20=\x20Integer.parseInt(s);\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(n);\x0a\x20\x20\x20\x20}\x0a}','드릴\x201\x20—\x20main\x20메서드\x20키워드','public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20int[][]\x20mat\x20=\x20{{1,2},{3,4},{5,6}};\x0a\x20\x20\x20\x20\x20\x20\x20\x20int\x20sum\x20=\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20for\x20(int[]\x20row\x20:\x20mat)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20for\x20(int\x20v\x20:\x20row)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20sum\x20+=\x20v;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(sum);\x20\x20//\x2021\x0a\x20\x20\x20\x20}\x0a}','드릴\x202\x20—\x20왼쪽\x20시프트로\x202의\x20거듭제곱','HashMap<Integer,\x20Integer>\x20map\x20=\x20new\x20HashMap<>();','//\x20═══════════════════════════════════════════════════\x0a//\x201.\x20if\x20/\x20else\x20if\x20/\x20else\x20기본\x20구조\x0a//\x20═══════════════════════════════════════════════════\x0aif\x20(조건1)\x20{\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20소괄호()\x20필수!\x0a\x20\x20\x20\x20실행코드1;\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20세미콜론(;)\x20필수!\x0a}\x20else\x20if\x20(조건2)\x20{\x20\x20\x20\x20//\x20Python의\x20elif\x20→\x20Java의\x20else\x20if\x0a\x20\x20\x20\x20실행코드2;\x0a}\x20else\x20{\x0a\x20\x20\x20\x20실행코드3;\x0a}\x0a\x0a//\x20──\x20실전\x20예시:\x20점수에\x20따른\x20등급\x20──\x0aint\x20score\x20=\x2085;\x0aif\x20(score\x20>=\x2090)\x20{\x0a\x20\x20\x20\x20System.out.println(\x22A\x22);\x0a}\x20else\x20if\x20(score\x20>=\x2080)\x20{\x0a\x20\x20\x20\x20System.out.println(\x22B\x22);\x0a}\x20else\x20if\x20(score\x20>=\x2070)\x20{\x0a\x20\x20\x20\x20System.out.println(\x22C\x22);\x0a}\x20else\x20{\x0a\x20\x20\x20\x20System.out.println(\x22F\x22);\x0a}\x0a\x0a//\x20═══════════════════════════════════════════════════\x0a//\x202.\x20비교\x20연산자\x0a//\x20═══════════════════════════════════════════════════\x0a//\x20==\x20\x20같다\x20\x20\x20\x20\x20\x20\x20\x20a\x20==\x20b\x20\x20(기본형에만!\x20객체는\x20.equals()\x20사용)\x0a//\x20!=\x20\x20같지\x20않다\x20\x20\x20a\x20!=\x20b\x0a//\x20>\x20\x20\x20크다\x20\x20\x20\x20\x20\x20\x20\x20a\x20>\x20b\x0a//\x20>=\x20\x20크거나\x20같다\x20a\x20>=\x20b\x0a//\x20<\x20\x20\x20작다\x20\x20\x20\x20\x20\x20\x20\x20a\x20<\x20b\x0a//\x20<=\x20\x20작거나\x20같다\x20a\x20<=\x20b\x0a\x0a//\x20──\x20예시\x20──\x0aint\x20a\x20=\x2010,\x20b\x20=\x2020;\x0aif\x20(a\x20==\x20b)\x20{\x20...\x20}\x20\x20\x20\x20//\x20false\x0aif\x20(a\x20!=\x20b)\x20{\x20...\x20}\x20\x20\x20\x20//\x20true\x0aif\x20(a\x20<\x20b)\x20{\x20...\x20}\x20\x20\x20\x20\x20//\x20true\x0a\x0a//\x20═══════════════════════════════════════════════════\x0a//\x203.\x20논리\x20연산자\x20(조건\x20조합)\x0a//\x20═══════════════════════════════════════════════════\x0a//\x20&&\x20\x20AND\x20(그리고)\x20-\x20둘\x20다\x20참이어야\x20참\x0a//\x20||\x20\x20OR\x20(또는)\x20\x20\x20\x20-\x20하나라도\x20참이면\x20참\x0a//\x20!\x20\x20\x20NOT\x20(부정)\x20\x20\x20-\x20참↔거짓\x20반전\x0a\x0aif\x20(a\x20>\x200\x20&&\x20b\x20>\x200)\x20{\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20둘\x20다\x20양수\x0a\x20\x20\x20\x20System.out.println(\x22둘\x20다\x20양수\x22);\x0a}\x0a\x0aif\x20(a\x20>\x200\x20||\x20b\x20>\x200)\x20{\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20하나라도\x20양수\x0a\x20\x20\x20\x20System.out.println(\x22하나라도\x20양수\x22);\x0a}\x0a\x0aif\x20(!flag)\x20{\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20flag가\x20false일\x20때\x0a\x20\x20\x20\x20System.out.println(\x22flag는\x20false\x22);\x0a}\x0a\x0a//\x20──\x20복합\x20조건\x20예시\x20──\x0aif\x20(age\x20>=\x2018\x20&&\x20hasLicense)\x20{\x20\x20\x20\x20\x20//\x20성인이면서\x20면허\x20있음\x0a\x20\x20\x20\x20System.out.println(\x22운전\x20가능\x22);\x0a}\x0a\x0aif\x20(score\x20<\x200\x20||\x20score\x20>\x20100)\x20{\x20\x20\x20\x20//\x20점수가\x20범위\x20밖\x0a\x20\x20\x20\x20System.out.println(\x22잘못된\x20점수\x22);\x0a}\x0a\x0a//\x20═══════════════════════════════════════════════════\x0a//\x204.\x20삼항\x20연산자\x20(간단한\x20if-else\x20대체)\x0a//\x20═══════════════════════════════════════════════════\x0a//\x20조건\x20?\x20참일\x20때\x20값\x20:\x20거짓일\x20때\x20값\x0aString\x20result\x20=\x20(age\x20>=\x2018)\x20?\x20\x22성인\x22\x20:\x20\x22미성년자\x22;\x0aint\x20max\x20=\x20(a\x20>\x20b)\x20?\x20a\x20:\x20b;\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20둘\x20중\x20큰\x20값\x0aString\x20parity\x20=\x20(n\x20%\x202\x20==\x200)\x20?\x20\x22짝수\x22\x20:\x20\x22홀수\x22;\x0a\x0a//\x20═══════════════════════════════════════════════════\x0a//\x205.\x20문자열\x20비교\x20(중요!)\x0a//\x20═══════════════════════════════════════════════════\x0aString\x20s1\x20=\x20\x22hello\x22;\x0aString\x20s2\x20=\x20\x22hello\x22;\x0a\x0a//\x20✅\x20올바른\x20방법:\x20.equals()\x20사용\x0aif\x20(s1.equals(s2))\x20{\x0a\x20\x20\x20\x20System.out.println(\x22같은\x20문자열\x22);\x0a}\x0a\x0a//\x20❌\x20잘못된\x20방법:\x20==\x20사용\x20(주소\x20비교!)\x0aif\x20(s1\x20==\x20s2)\x20{\x20\x20//\x20때때로\x20작동하지만\x20위험!\x0a\x20\x20\x20\x20System.out.println(\x22주소가\x20같음\x22);\x0a}\x0a\x0a//\x20──\x20대소문자\x20무시\x20비교\x20──\x0aif\x20(s1.equalsIgnoreCase(\x22HELLO\x22))\x20{\x20\x20//\x20true\x0a\x20\x20\x20\x20System.out.println(\x22대소문자\x20무시하고\x20같음\x22);\x0a}\x0a\x0a//\x20═══════════════════════════════════════════════════\x0a//\x206.\x20switch\x20문\x20(다중\x20분기)\x0a//\x20═══════════════════════════════════════════════════\x0aint\x20day\x20=\x203;\x0aswitch\x20(day)\x20{\x0a\x20\x20\x20\x20case\x201:\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(\x22월요일\x22);\x0a\x20\x20\x20\x20\x20\x20\x20\x20break;\x20\x20//\x20break\x20필수!\x20없으면\x20다음\x20case도\x20실행됨\x0a\x20\x20\x20\x20case\x202:\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(\x22화요일\x22);\x0a\x20\x20\x20\x20\x20\x20\x20\x20break;\x0a\x20\x20\x20\x20case\x203:\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(\x22수요일\x22);\x0a\x20\x20\x20\x20\x20\x20\x20\x20break;\x0a\x20\x20\x20\x20default:\x20\x20//\x20else와\x20같은\x20역할\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(\x22기타\x22);\x0a}\x0a\x0a//\x20──\x20switch로\x20여러\x20case\x20묶기\x20──\x0aswitch\x20(month)\x20{\x0a\x20\x20\x20\x20case\x203:\x20case\x204:\x20case\x205:\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(\x22봄\x22);\x0a\x20\x20\x20\x20\x20\x20\x20\x20break;\x0a\x20\x20\x20\x20case\x206:\x20case\x207:\x20case\x208:\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(\x22여름\x22);\x0a\x20\x20\x20\x20\x20\x20\x20\x20break;\x0a\x20\x20\x20\x20case\x209:\x20case\x2010:\x20case\x2011:\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(\x22가을\x22);\x0a\x20\x20\x20\x20\x20\x20\x20\x20break;\x0a\x20\x20\x20\x20case\x2012:\x20case\x201:\x20case\x202:\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(\x22겨울\x22);\x0a\x20\x20\x20\x20\x20\x20\x20\x20break;\x0a}\x0a\x0a//\x20═══════════════════════════════════════════════════\x0a//\x207.\x20자주\x20쓰는\x20패턴\x0a//\x20═══════════════════════════════════════════════════\x0a//\x20──\x20홀짝\x20판별\x20──\x0aif\x20(n\x20%\x202\x20==\x200)\x20{\x0a\x20\x20\x20\x20System.out.println(\x22짝수\x22);\x0a}\x20else\x20{\x0a\x20\x20\x20\x20System.out.println(\x22홀수\x22);\x0a}\x0a\x0a//\x20──\x20범위\x20체크\x20──\x0aif\x20(x\x20>=\x200\x20&&\x20x\x20<=\x20100)\x20{\x0a\x20\x20\x20\x20System.out.println(\x220~100\x20범위\x20내\x22);\x0a}\x0a\x0a//\x20──\x20배수\x20판별\x20──\x0aif\x20(n\x20%\x203\x20==\x200)\x20{\x0a\x20\x20\x20\x20System.out.println(\x223의\x20배수\x22);\x0a}','Math.max(a,\x20b)는\x20a,\x20b\x20중\x20큰\x20값을\x20반환합니다.','list.add(1);\x20list.add(2);\x20list.add(3);','reverseOrder','set.add(1);\x20set.add(2);\x20set.add(3);','0][1','import\x20java.util.Scanner;\x0apublic\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20Scanner\x20sc\x20=\x20new\x20Scanner(System.in);\x0a\x20\x20\x20\x20\x20\x20\x20\x20int\x20sum\x20=\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20int\x20n;\x0a\x20\x20\x20\x20\x20\x20\x20\x20do\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20n\x20=\x20sc.nextInt();\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(n\x20>\x200)\x20sum\x20+=\x20n;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x20while\x20(n\x20!=\x200);\x20\x20\x20//\x200\x20입력\x20시\x20종료\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(sum);\x0a\x20\x20\x20\x20}\x0a}','HeFTB','while\x20(it.___())','\x270\x27','\x20\x20\x20\x20sum\x20+=\x20i;','BFS\x20—\x20너비우선탐색','@Override는\x20부모\x20메서드를\x20재정의함을\x20명시합니다.\x20오타를\x20잡아주는\x20역할도\x20합니다.','beginsWith','ArrayDeque','int\x20len\x20=\x20s.length();','드릴\x201\x20—\x20이중\x20for문\x20순회','조건문과\x20함께\x20코딩테스트의\x20핵심.\x20순회·탐색·누적\x20계산\x20모두\x20반복문\x20기반입니다.\x20Java의\x20for\x20문은\x20초기화/조건/증감을\x20명시하는\x20방식으로\x20Python의\x20range()와\x20다릅니다.','char\x20c1\x20=\x20\x275\x27;','write','드릴\x201\x20—\x202진수\x20문자열로\x20변환','static\x20class\x20Car\x20extends\x20Vehicle\x20{','public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20int\x20n\x20=\x20Integer.parseInt(\x22ff\x22,\x2016);\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(n);\x20\x20//\x20255\x0a\x20\x20\x20\x20}\x0a}','if\x20(s\x20!=\x20null\x20___\x20s.equals(\x22hello\x22))','\x20\x20\x20\x20sum\x20+=\x20n++;','System.out.println(q.poll());\x20\x20//\x2010\x20(FIFO)','Python과의\x20주요\x20차이점:\x0a•\x20dict\x20(Python)\x20→\x20HashMap<K,V>\x20(Java)\x0a•\x20dict[k]\x20(Python)\x20→\x20map.get(k)\x20(Java)\x0a•\x20dict[k]\x20=\x20v\x20(Python)\x20→\x20map.put(k,\x20v)\x20(Java)\x0a•\x20set\x20(Python)\x20→\x20HashSet<T>\x20(Java)\x0a•\x20dict.get(k,\x20default)\x20(Python)\x20→\x20map.getOrDefault(k,\x20default)\x20(Java)\x0a•\x20len(dict)\x20(Python)\x20→\x20map.size()\x20(Java)','return\x20s.equals(rev);','import\x20java.util.*;\x0apublic\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20int[][]\x20arr\x20=\x20{{1,4},{2,3},{1,2},{2,5}};\x0a\x20\x20\x20\x20\x20\x20\x20\x20Arrays.sort(arr,\x20(a,\x20b)\x20->\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(a[0]\x20!=\x20b[0])\x20return\x20a[0]\x20-\x20b[0];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20b[1]\x20-\x20a[1];\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20for\x20(int[]\x20r\x20:\x20arr)\x20System.out.println(Arrays.toString(r));\x0a\x20\x20\x20\x20}\x0a}','public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20static\x20class\x20Vehicle\x20{\x20String\x20type()\x20{\x20return\x20\x22이동수단\x22;\x20}\x20}\x0a\x20\x20\x20\x20static\x20class\x20Car\x20extends\x20Vehicle\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20@Override\x0a\x20\x20\x20\x20\x20\x20\x20\x20String\x20type()\x20{\x20return\x20\x22자동차\x22;\x20}\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20Vehicle\x20v\x20=\x20new\x20Car();\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(v.type());\x20\x20//\x20자동차\x0a\x20\x20\x20\x20}\x0a}','map.get()은\x20없는\x20키에서\x20null을\x20반환합니다.\x20기본값이\x20필요하면\x20getOrDefault(키,\x20기본값)을\x20쓰세요.','\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20throws\x20IOException\x20{','if\x20(v\x20%\x202\x20==\x200)\x20it.___;','i-1','isNumeric','드릴\x202\x20—\x20최댓값\x20찾기','this','public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20String\x20s\x20=\x20\x22a1b2c3\x22;\x0a\x20\x20\x20\x20\x20\x20\x20\x20String\x20result\x20=\x20s.replaceAll(\x22[0-9]\x22,\x20\x22\x22);\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(result);\x20\x20//\x20\x22abc\x22\x0a\x20\x20\x20\x20}\x0a}','int[][]\x20arr\x20=\x20{{3,2},{1,4},{2,1}};','return\x20a.___(b);','Java\x20코딩테스트에서\x20타입\x20변환은\x20필수입니다.\x20String\x20→\x20int는\x20Integer.parseInt(),\x20int\x20→\x20String은\x20String.valueOf()\x20또는\x20Integer.toString()을\x20씁니다.','if\x20(s.___(\x20\x22yes\x22\x20))','//\x20═══════════════════════════════════════════════════\x0a//\x20Java\x20입출력\x20전체\x20패턴\x20요약\x0a//\x20═══════════════════════════════════════════════════\x0a\x0a//\x20──\x201.\x20메모리\x20구조\x20──\x0aint\x20x\x20=\x2010;\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Stack:\x20x\x20=\x2010\x20(값\x20직접)\x0aString\x20s\x20=\x20\x22Hello\x22;\x20\x20\x20\x20\x20\x20//\x20Stack:\x20주소값\x20→\x20Heap:\x20\x22Hello\x22\x0aint[]\x20arr\x20=\x20{1,2,3};\x20\x20\x20\x20\x20//\x20Stack:\x20주소값\x20→\x20Heap:\x20[1,2,3]\x0a\x0a//\x20──\x202.\x20타입\x20시스템\x20──\x0aint\x20\x20\x20\x20age\x20\x20=\x2025;\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x204바이트,\x20-21억~21억\x0along\x20\x20\x20big\x20\x20=\x201234567890123L;\x20\x20\x20\x20\x20\x20//\x208바이트,\x20L\x20접미사\x20필수!\x0adouble\x20pi\x20\x20\x20=\x203.14159;\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x208바이트,\x20기본\x20실수형\x0afloat\x20\x20f\x20\x20\x20\x20=\x203.14f;\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x204바이트,\x20f\x20접미사\x20필수!\x0achar\x20\x20\x20grade\x20=\x20\x27A\x27;\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x202바이트,\x20작은따옴표\x0aboolean\x20ok\x20\x20=\x20true;\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20참/거짓\x0aString\x20name\x20=\x20\x22홍길동\x22;\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20참조형,\x20Heap\x20저장\x0a\x0a//\x20──\x203.\x20Scanner\x20(간편\x20입력)\x20──\x0aimport\x20java.util.Scanner;\x0aScanner\x20sc\x20=\x20new\x20Scanner(System.in);\x0aString\x20word\x20\x20=\x20sc.next();\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20단어\x20하나\x20(공백\x20전까지)\x0aString\x20line\x20\x20=\x20sc.nextLine();\x20\x20\x20\x20\x20\x20//\x20한\x20줄\x20전체\x0aint\x20\x20\x20\x20n\x20\x20\x20\x20\x20=\x20sc.nextInt();\x20\x20\x20\x20\x20\x20\x20//\x20정수\x20바로\x20읽기\x0adouble\x20d\x20\x20\x20\x20\x20=\x20sc.nextDouble();\x20\x20\x20\x20//\x20실수\x20바로\x20읽기\x0a\x0a//\x20──\x204.\x20BufferedReader\x20(빠른\x20입력,\x20대량\x20데이터\x20필수)\x20──\x0aimport\x20java.io.*;\x0aimport\x20java.util.StringTokenizer;\x0aBufferedReader\x20br\x20=\x20new\x20BufferedReader(new\x20InputStreamReader(System.in));\x0aint\x20num\x20=\x20Integer.parseInt(br.readLine().trim());\x0aStringTokenizer\x20st\x20=\x20new\x20StringTokenizer(br.readLine());\x0aint\x20a\x20=\x20Integer.parseInt(st.nextToken());\x0aint\x20b\x20=\x20Integer.parseInt(st.nextToken());\x0a\x0a//\x20──\x205.\x20출력\x20──\x0aSystem.out.println(\x22줄바꿈\x20포함\x22);\x20\x20//\x20println\x0aSystem.out.print(\x22줄바꿈\x20없음\x22);\x20\x20\x20\x20//\x20print\x0aSystem.out.printf(\x22정수:%d\x20실수:%.2f%n\x22,\x20n,\x20pi);\x20\x20//\x20포맷\x20출력\x0a//\x20포맷:\x20%d=정수,\x20%f=실수,\x20%s=문자열,\x20%c=문자,\x20%n=줄바꿈\x0a\x0a//\x20──\x206.\x20형변환\x20──\x0a//\x20자동\x20(작은→큰):\x20int\x20→\x20long\x20→\x20double\x0aint\x20i\x20=\x20100;\x0along\x20l\x20=\x20i;\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20int\x20→\x20long\x20자동\x0adouble\x20dd\x20=\x20i;\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20int\x20→\x20double\x20자동\x0a\x0a//\x20명시적\x20(큰→작은):\x20소수점\x20버림!\x0adouble\x20d2\x20=\x203.99;\x0aint\x20i2\x20=\x20(int)d2;\x20\x20\x20\x20\x20\x20\x20\x20//\x203\x20(소수점\x20버림)\x0a\x0a//\x20String\x20↔\x20기본형\x0aint\x20\x20\x20\x20parsed\x20=\x20Integer.parseInt(\x2242\x22);\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20String\x20→\x20int\x0adouble\x20dParsed\x20=\x20Double.parseDouble(\x223.14\x22);\x20\x20\x20\x20//\x20String\x20→\x20double\x0along\x20\x20\x20lParsed\x20=\x20Long.parseLong(\x22999999999999\x22);\x20//\x20String\x20→\x20long\x0aString\x20str1\x20=\x20String.valueOf(42);\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20int\x20→\x20String\x0aString\x20str2\x20=\x20Integer.toString(42);\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20int\x20→\x20String\x0a\x0a//\x20──\x207.\x20산술·비트\x20연산\x20──\x0a//\x205/2=2\x20(정수!),\x205.0/2=2.5,\x207%3=1\x0a//\x20long\x20오버플로우\x20주의:\x20(long)a\x20*\x20b\x20형태로\x20캐스팅\x0along\x20safe\x20=\x20(long)1_000_000\x20*\x201_000_000;\x20\x20\x20\x20\x20\x20\x20//\x2010^12\x20안전\x0a//\x20Math\x20유틸\x20(import\x20불필요)\x0aMath.max(a,b);\x20Math.min(a,b);\x20Math.abs(-5);\x0aMath.sqrt(16.0);\x20Math.pow(2,10);\x20Math.round(3.5);','containsKey()는\x20HashMap에\x20해당\x20키가\x20있으면\x20true를\x20반환합니다.','import\x20java.util.*;\x0apublic\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20List<String>\x20list\x20=\x20new\x20ArrayList<>(Arrays.asList(\x22banana\x22,\x22fig\x22,\x22apple\x22,\x22kiwi\x22));\x0a\x20\x20\x20\x20\x20\x20\x20\x20list.sort((a,\x20b)\x20->\x20a.length()\x20-\x20b.length());\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(list);\x20\x20//\x20[fig,\x20kiwi,\x20apple,\x20banana]\x0a\x20\x20\x20\x20}\x0a}','\x20\x20\x20\x20curSum\x20=\x20Math.max(arr[i],\x20curSum\x20+\x20arr[i]);','subArray','Collections\x20유틸과\x20ArrayList\x20고급','\x20\x20\x20\x20seen.put(nums[i],\x20i);','chain','null','ArrayList<___>\x20list\x20=\x20new\x20ArrayList<>();','Iterator<String>\x20it\x20=\x20list.iterator();','abstract','int\x20len\x20=\x20s.___();','int\x20max\x20=\x20Collections.max(list);','System.out.println(Arrays.toString(copy));','\x20\x20\x20\x20return\x20fib(n-1)\x20+\x20fib(n-2);','size==0','\x20\x20\x20\x20System.out.println(sum);','드릴\x203\x20—\x20toString()으로\x20변환','int\x20↔\x20String\x20변환\x20완전\x20정리','new\x20PriorityQueue<>(Collections.___());','int\x20n\x20=\x20Integer.parseInt(\x22ff\x22,\x2016);','maxSum','음수의\x20절댓값을\x20구하는\x20코드를\x20완성하세요.','import\x20java.util.*;\x0apublic\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20List<Integer>\x20list\x20=\x20new\x20ArrayList<>(Arrays.asList(5,\x202,\x208,\x201));\x0a\x20\x20\x20\x20\x20\x20\x20\x20list.sort((a,\x20b)\x20->\x20a\x20-\x20b);\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(list);\x20\x20//\x20[1,\x202,\x205,\x208]\x0a\x20\x20\x20\x20}\x0a}','String\x20s\x20=\x20\x22Java\x20Programming\x22;','import\x20java.util.*;\x0apublic\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20int[]\x20nums\x20=\x20{2,\x207,\x2011,\x2015};\x0a\x20\x20\x20\x20\x20\x20\x20\x20int\x20target\x20=\x209;\x0a\x20\x20\x20\x20\x20\x20\x20\x20HashMap<Integer,\x20Integer>\x20seen\x20=\x20new\x20HashMap<>();\x0a\x20\x20\x20\x20\x20\x20\x20\x20for\x20(int\x20i\x20=\x200;\x20i\x20<\x20nums.length;\x20i++)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20int\x20need\x20=\x20target\x20-\x20nums[i];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(seen.containsKey(need))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(seen.get(need)\x20+\x20\x22\x20\x22\x20+\x20i);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20break;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20seen.put(nums[i],\x20i);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a}','test','Collections.reverseOrder()는\x20내림차순\x20Comparator를\x20반환합니다.\x20int[]가\x20아닌\x20Integer[]에만\x20사용\x20가능합니다.','add','//\x20정규식\x0as.matches(\x22[0-9]+\x22)\x20\x20\x20\x20\x20\x20\x20//\x20숫자만\x20구성\x0as.matches(\x22[a-zA-Z]+\x22)\x20\x20\x20\x20//\x20영문자만\x0as.replaceAll(\x22\x5c\x5cs+\x22,\x20\x22\x22)\x20//\x20공백\x20모두\x20제거\x0as.replaceAll(\x22[^0-9]\x22,\x20\x22\x22)\x20//\x20숫자\x20외\x20모두\x20제거\x0a\x0a//\x20Character\x20유틸\x0aCharacter.isDigit(c)\x20\x20\x20\x20\x20\x20//\x20숫자\x20문자?\x0aCharacter.isLetter(c)\x20\x20\x20\x20\x20//\x20영문자?\x0aCharacter.isAlphabetic(c)\x20//\x20알파벳?\x0aCharacter.isUpperCase(c)\x20\x20//\x20대문자?\x0aCharacter.isLowerCase(c)\x20\x20//\x20소문자?\x0aCharacter.toUpperCase(c)\x20\x20//\x20대문자로\x20변환\x0aCharacter.toLowerCase(c)\x20\x20//\x20소문자로\x20변환','완전탐색\x20—\x20브루트포스\x20패턴','Arrays\x20유틸리티\x20클래스','int\x20n\x20=\x20Integer.parseInt(\x22ff\x22,\x20___);','System.out.println(\x222\x20x\x20\x22\x20+\x20j\x20+\x20\x22\x20=\x20\x22\x20+\x20___\x20);','💡\x20핵심\x20포인트\x0a•\x20for문:\x20for(초기화;\x20조건;\x20증감)\x20세\x20부분을\x20세미콜론(;)으로\x20구분\x0a•\x20Python의\x20range(1,6)은\x20Java의\x20for(int\x20i=1;\x20i<=5;\x20i++)에\x20해당\x0a•\x20향상된\x20for문(for-each)은\x20인덱스\x20없이\x20값만\x20순회\x20(수정\x20불가)\x0a•\x20break는\x20반복\x20종료,\x20continue는\x20현재\x20회차만\x20건너뜀\x0a•\x20중첩\x20반복문에서\x20break는\x20가장\x20안쪽\x20반복만\x20종료','import\x20java.util.*;\x0apublic\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20Queue<Integer>\x20q\x20=\x20new\x20LinkedList<>();\x0a\x20\x20\x20\x20\x20\x20\x20\x20q.offer(10);\x20q.offer(20);\x20q.offer(30);\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(q.poll());\x20\x20//\x2010\x20(FIFO)\x0a\x20\x20\x20\x20}\x0a}','드릴\x202\x20—\x20n진수\x20파싱','연도가\x20윤년인지\x20판별하는\x20조건문을\x20완성하세요.\x20(4의\x20배수이고\x20100의\x20배수가\x20아니거나,\x20400의\x20배수)','N줄에\x20걸쳐\x20입력되는\x20데이터를\x20<code>BufferedReader</code>로\x20읽어\x20처리하는\x20패턴을\x20익힙니다.','<code>do-while</code>\x20문과\x20<code>while(true)\x20+\x20break</code>\x20패턴을\x20익힙니다.\x20최소\x20한\x20번은\x20실행해야\x20할\x20때\x20유용합니다.','static\x20boolean\x20isEven(int\x20n)\x20{','int[]\x20arr\x20=\x20{1,\x202,\x203,\x204,\x205};','import\x20java.util.*;\x0apublic\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20String[]\x20words\x20=\x20{\x22banana\x22,\x20\x22fig\x22,\x20\x22apple\x22};\x0a\x20\x20\x20\x20\x20\x20\x20\x20Arrays.sort(words,\x20(a,\x20b)\x20->\x20a.length()\x20-\x20b.length());\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(Arrays.toString(words));\x20\x20//\x20[fig,\x20apple,\x20banana]\x0a\x20\x20\x20\x20}\x0a}','String\x20s\x20=\x20\x2212345\x22;','for\x20(int\x20i\x20=\x201;\x20i\x20<=\x20n;\x20i++)\x20{','import\x20java.util.*;\x0apublic\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20HashMap<String,\x20Integer>\x20map\x20=\x20new\x20HashMap<>();\x0a\x20\x20\x20\x20\x20\x20\x20\x20map.put(\x22a\x22,\x201);\x20map.put(\x22b\x22,\x202);\x0a\x20\x20\x20\x20\x20\x20\x20\x20for\x20(Map.Entry<String,\x20Integer>\x20e\x20:\x20map.entrySet())\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(e.getKey()\x20+\x20\x22:\x20\x22\x20+\x20e.getValue());\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a}','}\x20catch\x20(___\x20e)\x20{\x20return\x200;\x20}','round','real','long\x20result\x20=\x20(long)\x20Math.pow(2,\x2010);','이중\x20루프에서\x20바깥\x20루프까지\x20한\x20번에\x20탈출하는\x20레이블\x20break를\x20완성하세요.','trim','Map<int,\x20List<int>>\x20graph\x20→\x20ArrayList<Integer>[]\x20대응','\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{','NumberFormatException','(Java)','재귀\x20—\x20메서드\x20호출과\x20DFS','total','combine','배열의\x20앞\x203개\x20원소만\x20복사하는\x20코드를\x20완성하세요.','String.compareTo()는\x20사전순\x20비교\x20결과를\x20정수로\x20반환합니다.\x20오름차순\x20정렬에\x20바로\x20사용할\x20수\x20있습니다.','코딩테스트에서\x20입력\x20문자열을\x20파싱하는\x20작업이\x20빈번합니다.\x20split,\x20trim,\x20startsWith,\x20endsWith,\x20indexOf,\x20replace\x20등을\x20자유롭게\x20사용할\x20수\x20있어야\x20합니다.','드릴\x201\x20—\x20재귀\x20기저\x20조건','정규식과\x20문자열\x20검사','Math\x20유틸과\x20int\x20오버플로우\x20처리','for\x20(int\x20i\x20=\x200;\x20i\x20<\x20mat.length;\x20i++)\x20{','InputException','elHTM','비트\x20연산은\x202진수\x20단위로\x20연산합니다.\x20홀짝\x20판별,\x20부분집합\x20탐색,\x20집합\x20표현에\x20자주\x20씁니다.\x20n개\x20원소의\x20모든\x20부분집합을\x20O(2^n)으로\x20탐색하는\x20핵심\x20기법입니다.','삼항\x20연산자:\x20조건\x20?\x20참일때값\x20:\x20거짓일때값.\x20Python과\x20순서가\x20다릅니다!','코딩테스트에서\x20그래프\x20문제는\x20대부분\x20ArrayList\x20배열(인접\x20리스트)로\x20표현합니다.\x20graph[i]는\x20노드\x20i와\x20연결된\x20이웃\x20노드들의\x20리스트입니다.','ArrayList를\x20오름차순으로\x20정렬하는\x20코드를\x20완성하세요.','ArrayList<Integer>[]\x20graph\x20=\x20new\x20ArrayList[n\x20+\x201];','isEmpty()가\x20true이면\x20큐가\x20비어있습니다.\x20BFS\x20루프\x20종료\x20조건입니다.','q.offer(new\x20int[]{0,\x200,\x200});','list.add(\x22Java\x22);\x20list.add(\x22Python\x22);','길이\x20오름차순,\x20같으면\x20사전순으로\x20정렬하는\x20람다를\x20완성하세요.','TreeMap은\x20키가\x20자동으로\x20정렬되는\x20Map입니다.\x20PriorityQueue는\x20항상\x20최솟값(기본)이\x20poll()로\x20나옵니다.\x20다익스트라,\x20그리디\x20알고리즘에서\x20자주\x20씁니다.','Java\x20클래스\x20구조와\x20main\x20메서드','import\x20java.io.*;\x0aimport\x20java.util.StringTokenizer;\x0a\x0aBufferedReader\x20br\x20=\x20new\x20BufferedReader(new\x20InputStreamReader(System.in));\x0a//\x20throws\x20IOException\x20또는\x20try-catch\x20필요\x0a\x0aString\x20line\x20=\x20br.readLine();\x20\x20//\x20한\x20줄\x20읽기\x0aint\x20n\x20=\x20Integer.parseInt(br.readLine().trim());\x20\x20//\x20정수\x20한\x20개\x0a\x0aStringTokenizer\x20st\x20=\x20new\x20StringTokenizer(br.readLine());\x0aint\x20a\x20=\x20Integer.parseInt(st.nextToken());\x20\x20//\x20첫\x20번째\x20토큰\x0aint\x20b\x20=\x20Integer.parseInt(st.nextToken());\x20\x20//\x20두\x20번째\x20토큰','Java는\x20객체지향\x20언어로\x20모든\x20코드가\x20클래스\x20안에\x20존재합니다.\x20프로그램\x20진입점은\x20public\x20static\x20void\x20main(String[]\x20args)이며,\x20이\x20시그니처를\x20정확히\x20작성해야\x20합니다.\x20static\x20키워드는\x20객체\x20생성\x20없이\x20클래스\x20이름으로\x20직접\x20호출할\x20수\x20있게\x20합니다.\x20코딩테스트에서는\x20대부분\x20단일\x20클래스에서\x20작성합니다.','카데인:\x20현재\x20원소\x20단독\x20vs\x20이전\x20구간에\x20현재\x20원소를\x20더한\x20것\x20중\x20큰\x20쪽을\x20선택합니다.','\x20\x20\x20\x20return\x20\x22(\x22\x20+\x20x\x20+\x20\x22,\x20\x22\x20+\x20y\x20+\x20\x22)\x22;','descending','String\x20s\x20=\x20\x22Hello,\x20Java!\x22;','드릴\x202\x20—\x20안전한\x20문자열\x20비교','for\x20(var\x20row\x20in\x20mat):\x20for\x20(var\x20v\x20in\x20row)\x20→\x20동일\x20구조','Exception','💡\x20\x22결과가\x20매우\x20클\x20수\x20있습니다\x22\x20=\x20long\x20사용\x20신호!\x2010^9\x20이상\x20곱셈은\x20항상\x20(long)\x20캐스팅\x20먼저.','\x20\x20\x20\x20System.out.println(\x22범위\x20초과\x22);','Java에서\x20예외는\x20checked(컴파일\x20타임)와\x20unchecked(런타임)로\x20나뉩니다.\x20IOException은\x20checked이므로\x20throws나\x20try-catch로\x20처리해야\x20합니다.','ArrayList<String>\x20list\x20=\x20new\x20ArrayList<>();','인덱스\x207부터\x20끝까지\x20부분\x20문자열을\x20추출하는\x20코드를\x20완성하세요.','String\x20s\x20=\x20String.format(\x22%.2f\x22,\x20x);','RegExp(r\x27[0-9]+\x27)\x20→\x20\x22[0-9]+\x22\x20(matches)\x0aString.fromCharCode\x20/\x20codeUnitAt\x20→\x20Character\x20클래스','드릴\x203\x20—\x20배열\x20초기화\x20(DP\x20초기값)','Queue의\x20poll()은\x20맨\x20앞\x20원소를\x20제거하고\x20반환합니다.\x20BFS의\x20핵심\x20연산입니다.','println은\x20줄바꿈\x20포함,\x20print는\x20줄바꿈\x20없이\x20출력합니다.','//\x20Java\x20조건문의\x20모든\x20것\x0aint\x20score\x20=\x2085;\x0a\x0a//\x20──\x201.\x20if\x20/\x20else\x20if\x20/\x20else\x20──\x0aif\x20(score\x20>=\x2090)\x20{\x0a\x20\x20\x20\x20System.out.println(\x22A\x22);\x0a}\x20else\x20if\x20(score\x20>=\x2080)\x20{\x20\x20\x20\x20\x20\x20//\x20Python의\x20elif\x20→\x20Java의\x20else\x20if\x0a\x20\x20\x20\x20System.out.println(\x22B\x22);\x0a}\x20else\x20if\x20(score\x20>=\x2070)\x20{\x0a\x20\x20\x20\x20System.out.println(\x22C\x22);\x0a}\x20else\x20{\x0a\x20\x20\x20\x20System.out.println(\x22F\x22);\x0a}\x0a\x0a//\x20──\x202.\x20비교\x20연산자\x20──\x0a//\x20==\x20\x20같다\x20(기본형),\x20!=\x20\x20다름,\x20>\x20\x20크다,\x20>=\x20\x20크거나같다,\x20<\x20\x20작다,\x20<=\x20\x20작거나같다\x0a\x0a//\x20──\x203.\x20논리\x20연산자\x20──\x0a//\x20&&\x20\x20AND\x20(둘\x20다\x20참)\x20\x20||\x20\x20OR\x20(하나라도\x20참)\x20\x20!\x20\x20NOT\x20(반전)\x0aif\x20(score\x20>=\x2080\x20&&\x20score\x20<\x2090)\x20{\x0a\x20\x20\x20\x20System.out.println(\x22B등급\x22);\x0a}\x0aif\x20(score\x20<\x200\x20||\x20score\x20>\x20100)\x20{\x0a\x20\x20\x20\x20System.out.println(\x22잘못된\x20점수\x22);\x0a}\x0a\x0a//\x20──\x204.\x20삼항\x20연산자\x20──\x0aString\x20result\x20=\x20(score\x20>=\x2060)\x20?\x20\x22합격\x22\x20:\x20\x22불합격\x22;\x0aint\x20max\x20=\x20(score\x20>\x2080)\x20?\x20score\x20:\x2080;\x0a\x0a//\x20──\x205.\x20String\x20비교\x20(중요!)\x20──\x0aString\x20s\x20=\x20\x22hello\x22;\x0aif\x20(s.equals(\x22hello\x22))\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{\x20/*\x20✅\x20내용\x20비교\x20*/\x20}\x0aif\x20(\x22hello\x22.equals(s))\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{\x20/*\x20✅\x20NPE\x20방지용\x20*/\x20}\x0aif\x20(s.equalsIgnoreCase(\x22HELLO\x22))\x20{\x20/*\x20✅\x20대소문자\x20무시\x20*/\x20}\x0a//\x20if\x20(s\x20==\x20\x22hello\x22)\x20→\x20❌\x20주소\x20비교라\x20위험!\x0a\x0a//\x20──\x206.\x20switch\x20문\x20──\x0aint\x20day\x20=\x203;\x0aswitch\x20(day)\x20{\x0a\x20\x20\x20\x20case\x201:\x20System.out.println(\x22월요일\x22);\x20break;\x0a\x20\x20\x20\x20case\x202:\x20System.out.println(\x22화요일\x22);\x20break;\x0a\x20\x20\x20\x20case\x203:\x20System.out.println(\x22수요일\x22);\x20break;\x0a\x20\x20\x20\x20default:\x20System.out.println(\x22기타\x22);\x20break;\x0a\x20\x20\x20\x20//\x20break\x20없으면\x20다음\x20case도\x20실행됨\x20(fall-through\x20주의!)\x0a}\x0a\x0a//\x20여러\x20case\x20묶기\x0aswitch\x20(score\x20/\x2010)\x20{\x0a\x20\x20\x20\x20case\x2010:\x20case\x209:\x20System.out.println(\x22A\x22);\x20break;\x0a\x20\x20\x20\x20case\x208:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(\x22B\x22);\x20break;\x0a\x20\x20\x20\x20default:\x20\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(\x22C\x22);\x0a}\x0a\x0a//\x20──\x207.\x20자주\x20쓰는\x20패턴\x20──\x0aboolean\x20isEven\x20=\x20(score\x20%\x202\x20==\x200);\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20짝수\x20판별\x0aboolean\x20inRange\x20=\x20(score\x20>=\x200\x20&&\x20score\x20<=\x20100);\x20//\x20범위\x20체크\x0aboolean\x20isMultiple\x20=\x20(score\x20%\x203\x20==\x200);\x20\x20\x20\x20\x20\x20\x20//\x20배수\x20판별','Queue<Integer>\x20queue\x20=\x20new\x20LinkedList<>();','Java\x20조건문은\x20소괄호()에\x20조건식,\x20중괄호{}에\x20실행\x20코드를\x20씁니다.\x20Python의\x20elif는\x20Java에서\x20else\x20if\x20(두\x20단어)입니다.\x20세미콜론(;)은\x20문장\x20끝에\x20필수입니다.','public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20int\x20a\x20=\x201_000_000,\x20b\x20=\x201_000_000;\x0a\x20\x20\x20\x20\x20\x20\x20\x20long\x20result\x20=\x20(long)a\x20*\x20b;\x20\x20//\x2010^12\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(result);\x20\x20//\x201000000000000\x0a\x20\x20\x20\x20}\x0a}','HashMap\x20—\x20키-값\x20저장소\x20(Python\x20dict)','loop','public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20int[]\x20arr\x20=\x20{-2,\x201,\x20-3,\x204,\x20-1,\x202,\x201,\x20-5,\x204};\x0a\x20\x20\x20\x20\x20\x20\x20\x20int\x20maxSum\x20=\x20arr[0];\x0a\x20\x20\x20\x20\x20\x20\x20\x20int\x20curSum\x20=\x20arr[0];\x0a\x20\x20\x20\x20\x20\x20\x20\x20for\x20(int\x20i\x20=\x201;\x20i\x20<\x20arr.length;\x20i++)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20curSum\x20=\x20Math.max(arr[i],\x20curSum\x20+\x20arr[i]);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20maxSum\x20=\x20Math.max(maxSum,\x20curSum);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(maxSum);\x20\x20//\x206\x0a\x20\x20\x20\x20}\x0a}','public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20int\x20score\x20=\x2085;\x0a\x20\x20\x20\x20\x20\x20\x20\x20String\x20grade;\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(score\x20>=\x2090)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20grade\x20=\x20\x22A\x22;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x20else\x20if\x20(score\x20>=\x2080)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20grade\x20=\x20\x22B\x22;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20grade\x20=\x20\x22C\x22;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(grade);\x20\x20//\x20B\x0a\x20\x20\x20\x20}\x0a}','줄바꿈\x20없이\x20출력하는\x20메서드를\x20완성하세요.<br><code>System.out.___(\x22Hello\x20\x22);</code>','리스트를\x20오름차순으로\x20정렬하는\x20람다를\x20완성하세요.','import\x20java.util.*;\x0apublic\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20Queue<Integer>\x20q\x20=\x20new\x20LinkedList<>();\x0a\x20\x20\x20\x20\x20\x20\x20\x20q.offer(1);\x20q.offer(2);\x20q.offer(3);\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(q.poll());\x20//\x201\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(q.poll());\x20//\x202\x0a\x20\x20\x20\x20}\x0a}','pow(a,b).toInt()\x20→\x20(long)Math.pow(a,b)','Python과의\x20주요\x20차이점:\x0a•\x20for\x20구조:\x20for\x20i\x20in\x20range(n)\x20(Python)\x20→\x20for(int\x20i=0;\x20i<n;\x20i++)\x20(Java)\x0a•\x20컬렉션\x20순회:\x20for\x20x\x20in\x20list\x20(Python)\x20→\x20for(int\x20x\x20:\x20arr)\x20(Java)\x0a•\x20증감:\x20i\x20+=\x201\x20(Python)\x20→\x20i++\x20또는\x20i\x20+=\x201\x20(Java)\x0a•\x20while:\x20동일한\x20구조\x0a•\x20break/continue:\x20동일한\x20기능\x0a•\x20enumerate:\x20for\x20i,\x20v\x20in\x20enumerate(list)\x20(Python)\x20→\x20인덱스\x20직접\x20관리\x20(Java)','String\x20s\x20=\x20\x2242\x22;','n번\x20반복해서\x20readLine()으로\x20한\x20줄씩\x20읽습니다.','System.out.println(map.lastKey());','public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20static\x20class\x20Item\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20private\x20String\x20name;\x0a\x20\x20\x20\x20\x20\x20\x20\x20Item(String\x20name)\x20{\x20this.name\x20=\x20name;\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20public\x20String\x20getName()\x20{\x20return\x20name;\x20}\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20Item\x20item\x20=\x20new\x20Item(\x22사과\x22);\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(item.getName());\x20\x20//\x20사과\x0a\x20\x20\x20\x20}\x0a}','\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20System.out.print(i\x20+\x20\x22\x20\x22);','InputReader','read','int\x20sum\x20=\x200,\x20n\x20=\x201;','import\x20java.util.HashMap;\x0apublic\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20int[]\x20arr\x20=\x20{1,\x202,\x201,\x203,\x202,\x201};\x0a\x20\x20\x20\x20\x20\x20\x20\x20HashMap<Integer,\x20Integer>\x20map\x20=\x20new\x20HashMap<>();\x0a\x20\x20\x20\x20\x20\x20\x20\x20for\x20(int\x20x\x20:\x20arr)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20map.put(x,\x20map.getOrDefault(x,\x200)\x20+\x201);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(map);\x0a\x20\x20\x20\x20}\x0a}','void','import\x20java.util.Arrays;\x0apublic\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20int\x20n\x20=\x205;\x0a\x20\x20\x20\x20\x20\x20\x20\x20int[]\x20dist\x20=\x20new\x20int[n\x20+\x201];\x0a\x20\x20\x20\x20\x20\x20\x20\x20Arrays.fill(dist,\x20Integer.MAX_VALUE);\x0a\x20\x20\x20\x20\x20\x20\x20\x20dist[0]\x20=\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(dist[0]);\x20\x20//\x200\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(dist[1]);\x20\x20//\x202147483647\x0a\x20\x20\x20\x20}\x0a}','import\x20java.io.*;\x0aimport\x20java.util.StringTokenizer;\x0apublic\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20throws\x20IOException\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20BufferedReader\x20br\x20=\x20new\x20BufferedReader(new\x20InputStreamReader(System.in));\x0a\x20\x20\x20\x20\x20\x20\x20\x20StringTokenizer\x20st\x20=\x20new\x20StringTokenizer(br.readLine());\x0a\x20\x20\x20\x20\x20\x20\x20\x20int\x20a\x20=\x20Integer.parseInt(st.nextToken());\x0a\x20\x20\x20\x20\x20\x20\x20\x20int\x20b\x20=\x20Integer.parseInt(st.nextToken());\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(a\x20+\x20b);\x0a\x20\x20\x20\x20}\x0a}','ArrayList를\x20for-each로\x20순회하는\x20코드의\x20빈칸을\x20채우세요.','set','int\x20idx\x20=\x20Arrays.binarySearch(arr,\x208);','list.sort((a,\x20b)\x20->\x20Math.abs(a)\x20-\x20Math.abs(b));','Java에서\x20Python의\x20elif는\x20\x27else\x20if\x27\x20두\x20단어로\x20씁니다.','드릴\x204\x20—\x20Deque\x20(양방향\x20큐)','for\x20(int\x20i\x20=\x200;\x20i\x20<\x20nums.length;\x20i++)\x20{','contains()는\x20HashSet에\x20해당\x20원소가\x20있으면\x20true를\x20반환합니다.\x20O(1)\x20탐색이\x20가능합니다.','람다식\x20(a,\x20b)\x20->\x20a\x20-\x20b\x20는\x20Comparator입니다.\x20반환이\x20양수면\x20a가\x20뒤로,\x20음수면\x20a가\x20앞으로\x20정렬됩니다.','StringBuffer\x20sb\x20=\x20StringBuffer()\x20→\x20StringBuilder\x20sb\x20=\x20new\x20StringBuilder()\x0asb.write(x)\x20→\x20sb.append(x)\x0asb.toString()\x20동일','new\x20키워드\x20없이\x20객체를\x20생성하는\x20static\x20메서드\x20패턴을\x20완성하세요.','삼항\x20연산자로\x20나이에\x20따라\x20\x27성인\x27/\x27미성년자\x27를\x20결정하는\x20코드를\x20완성하세요.<br><code>String\x20result\x20=\x20(age\x20>=\x2018)\x20___\x20\x22성인\x22\x20:\x20\x22미성년자\x22;</code>','substr','bigger','드릴\x203\x20—\x20Arrays.copyOfRange','high','16진수\x20문자열\x20\x22ff\x22를\x2010진수\x20정수로\x20변환하는\x20코드를\x20완성하세요.','💡\x20break를\x20빠뜨리면\x20다음\x20case로\x20계속\x20실행됩니다.\x20이를\x20fall-through라\x20합니다.\x20의도하지\x20않으면\x20버그!','for\x20(int\x20i\x20=\x200;\x20i\x20<\x20___;\x20i++)','public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20int\x20a\x20=\x205,\x20b\x20=\x209;\x0a\x20\x20\x20\x20\x20\x20\x20\x20int\x20m\x20=\x20Math.max(a,\x20b);\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(m);\x20\x20//\x209\x0a\x20\x20\x20\x20}\x0a}','\x22기본값\x22','드릴\x203\x20—\x202D\x20배열\x20다중\x20기준\x20정렬','완전탐색\x20(브루트포스)\x20패턴','assign','int\x20len\x20=\x20arr.length;','Character.___(c1)','IOException','dp[i][j]\x20=\x20dp[i-1][j-1]\x20+\x20___;','\x20\x20\x20\x20return\x20n\x20%\x202\x20==\x200;','for\x20(int\x20i\x20=\x202;\x20i\x20<=\x20Math.sqrt(n);\x20i++)\x20{','💡\x20do-while\x20끝의\x20while\x20(조건);\x20세미콜론(;)을\x20빠뜨리면\x20컴파일\x20에러!\x20while\x20뒤\x20세미콜론\x20필수.','Python과의\x20주요\x20차이점:\x0a•\x20배열\x20크기:\x20Python\x20list는\x20가변,\x20Java\x20배열은\x20고정\x0a•\x20접근:\x20list[i]\x20(Python)\x20→\x20arr[i]\x20(배열),\x20list.get(i)\x20(ArrayList)\x0a•\x20추가:\x20list.append(x)\x20(Python)\x20→\x20list.add(x)\x20(ArrayList)\x0a•\x20삭제:\x20list.pop()\x20(Python)\x20→\x20list.remove(index)\x20(ArrayList)\x0a•\x20길이:\x20len(list)\x20(Python)\x20→\x20arr.length\x20(배열),\x20list.size()\x20(ArrayList)\x0a•\x20정렬:\x20sorted(list)\x20(Python)\x20→\x20Arrays.sort(arr),\x20Collections.sort(list)\x20(Java)','chars()','Queue의\x20맨\x20앞\x20원소를\x20제거하고\x20반환하는\x20메서드를\x20완성하세요.','import\x20java.util.*;\x0apublic\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20Queue<Integer>\x20q\x20=\x20new\x20LinkedList<>(Arrays.asList(1,2,3));\x0a\x20\x20\x20\x20\x20\x20\x20\x20while\x20(!q.isEmpty())\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(q.poll());\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a}','String\x20메서드와\x20StringBuilder','드릴\x201\x20—\x20Queue\x20offer/poll\x20순서','Static','public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20double\x20x\x20=\x203.14159;\x0a\x20\x20\x20\x20\x20\x20\x20\x20String\x20s\x20=\x20String.format(\x22%.2f\x22,\x20x);\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(s);\x20\x20//\x203.14\x0a\x20\x20\x20\x20}\x0a}','public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20int\x20n\x20=\x205;\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(n\x20>\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(\x22양수\x22);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x20else\x20if\x20(n\x20<\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(\x22음수\x22);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(\x220\x22);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a}','new\x20BufferedReader(new\x20___(System.in));','s.length()는\x20메서드\x20(괄호\x20있음).\x20배열의\x20.length와\x20다릅니다!','public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20static\x20boolean\x20isPrime(int\x20n)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(n\x20<\x202)\x20return\x20false;\x0a\x20\x20\x20\x20\x20\x20\x20\x20for\x20(int\x20i\x20=\x202;\x20i\x20<=\x20(int)Math.sqrt(n);\x20i++)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(n\x20%\x20i\x20==\x200)\x20return\x20false;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20true;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(isPrime(17));\x20\x20//\x20true\x0a\x20\x20\x20\x20}\x0a}','descOrder','public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20static\x20class\x20Counter\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20private\x20int\x20count\x20=\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20private\x20Counter()\x20{}\x20\x20//\x20private\x20생성자\x0a\x20\x20\x20\x20\x20\x20\x20\x20public\x20static\x20Counter\x20create()\x20{\x20return\x20new\x20Counter();\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20public\x20void\x20increment()\x20{\x20count++;\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20public\x20int\x20getCount()\x20{\x20return\x20count;\x20}\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20Counter\x20c\x20=\x20Counter.create();\x0a\x20\x20\x20\x20\x20\x20\x20\x20c.increment();\x20c.increment();\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(c.getCount());\x20\x20//\x202\x0a\x20\x20\x20\x20}\x0a}','Integer.parseInt()가\x20변환\x20불가\x20문자열을\x20받으면\x20NumberFormatException을\x20던집니다.','replace(대상,\x20교체)는\x20모든\x20일치\x20부분을\x20교체한\x20새\x20String을\x20반환합니다.','int[]\x20dy\x20=\x20{1,\x20-1,\x200,\x200};','절댓값\x20기준:\x20Math.abs(a)\x20-\x20Math.abs(b)이면\x20절댓값\x20오름차순입니다.','💡\x20제네릭\x20배열\x20생성\x20시\x20경고가\x20나지만\x20동작에는\x20문제없습니다.','char\x20c\x20=\x20\x275\x27;','여러\x20줄\x20입력\x20패턴','PriorityQueue<Integer>\x20maxPq\x20=\x20new\x20PriorityQueue<>(Collections.reverseOrder());','arr.sort()\x20→\x20Arrays.sort(arr)\x0aarr.sublist(a,b)\x20→\x20Arrays.copyOfRange(arr,a,b)\x0aList.filled(n,v)\x20→\x20Arrays.fill(arr,v)','Java\x20배열은\x20크기가\x20고정되어\x20생성\x20후\x20변경\x20불가능합니다.\x20동적으로\x20크기가\x20변하는\x20리스트가\x20필요하면\x20ArrayList를\x20사용합니다.\x20배열은\x20기본형(int,\x20double\x20등)을\x20직접\x20저장할\x20수\x20있지만,\x20ArrayList는\x20제네릭을\x20사용해\x20참조형(Integer,\x20Double\x20등)만\x20저장\x20가능합니다.\x20코딩테스트에서는\x20입력을\x20배열로\x20받고,\x20중간\x20처리는\x20ArrayList로\x20하는\x20경우가\x20많습니다.','행과\x20열\x20모두\x20[0,\x20n)\x20범위\x20내에\x20있어야\x20유효한\x20좌표입니다.','create','비트\x20연산\x20기초\x20—\x20비트마스킹','if\x20(nx\x20>=\x200\x20&&\x20nx\x20<\x20n\x20&&\x20ny\x20>=\x200\x20&&\x20ny\x20<\x20n)\x20{','||\x20는\x20OR\x20연산자입니다.\x20두\x20조건\x20중\x20하나라도\x20참이면\x20참입니다.','💡\x20\x22\x22\x20+\x2042\x20로도\x20String\x20변환이\x20되지만\x20코드가\x20불명확해집니다.\x20String.valueOf(n)이\x20명확합니다.','드릴\x203\x20—\x20레이블\x20break','💡\x20코딩테스트에서는\x20main에\x20throws\x20IOException을\x20붙이는\x20것이\x20가장\x20간단합니다.','7022sdnDaj','코딩테스트\x20핵심인\x20완전탐색(브루트포스)\x20패턴을\x20Java로\x20구현합니다.\x20모든\x20경우의\x20수를\x20탐색합니다.','\x20\x20\x20\x20if\x20(!visited[i])\x20dfs(i);','정렬된\x20순서로\x20키를\x20관리하는\x20<code>TreeMap</code>과\x20우선순위\x20큐\x20<code>PriorityQueue</code>를\x20익힙니다.','INFINITY','\x20\x20\x20\x20int\x20n\x20=\x20Integer.parseInt(\x22abc\x22);','드릴\x204\x20—\x20문자열\x20다중\x20기준\x20정렬','largest','Integer.___(n)','드릴\x201\x20—\x20else\x20if\x20키워드','System.out.println(Arrays.toString(words));','Java\x20for문:\x20for(초기화;\x20조건;\x20증감)\x20{}\x20Python의\x20range(1,6)은\x20for(int\x20i=1;\x20i<=5;\x20i++)에\x20해당합니다.','소괄호\x20안에\x20변환하려는\x20타입명을\x20쓰는\x20것이\x20캐스팅\x20문법입니다.','call','StringBuilder에\x20문자열을\x20추가하는\x20메서드를\x20완성하세요.<br><code>sb.___(\x20\x22Hello\x22\x20);</code>','for\x20(int\x20i\x20=\x203;\x20i\x20<=\x20n;\x20i++)\x20{','배열이나\x20컬렉션을\x20순회하는\x20<code>for-each</code>\x20문법을\x20익힙니다.\x20Python의\x20<code>for\x20x\x20in\x20arr</code>에\x20해당합니다.','드릴\x203\x20—\x20System.out.println\x20출력\x20구조','getChars()','import\x20java.util.*;\x0apublic\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20PriorityQueue<Integer>\x20maxPq\x20=\x20new\x20PriorityQueue<>(Collections.reverseOrder());\x0a\x20\x20\x20\x20\x20\x20\x20\x20maxPq.offer(3);\x20maxPq.offer(7);\x20maxPq.offer(1);\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(maxPq.poll());\x20\x20//\x207\x0a\x20\x20\x20\x20}\x0a}','HashMap을\x20이용해\x20O(n)으로\x20Two\x20Sum을\x20해결하는\x20코드를\x20완성하세요.','💡\x20trim()을\x20빠뜨리면\x20개행\x20문자가\x20남아\x20parseInt에서\x20NumberFormatException이\x20발생할\x20수\x20있습니다.','aDlhW','static\x20class\x20Dog\x20___\x20Animal\x20{','String\x20result\x20=\x20sb.toString();','드릴\x201\x20—\x20HashSet으로\x20중복\x20제거','\x22\x20\x22','0-9','String\x20s\x20=\x20\x22Hello,\x20Python!\x22;','1662604dmcEAs','int\x20sum\x20=\x200,\x20i\x20=\x201;','int\x20root\x20=\x20(int)\x20Math.sqrt(n);','import\x20java.util.Scanner;\x0aScanner\x20sc\x20=\x20new\x20Scanner(System.in);\x0a\x0aint\x20n\x20=\x20sc.nextInt();\x20\x20\x20\x20\x20\x20\x20\x20//\x20정수\x20읽기\x0adouble\x20d\x20=\x20sc.nextDouble();\x20\x20//\x20실수\x20읽기\x0aString\x20word\x20=\x20sc.next();\x20\x20\x20\x20\x20//\x20단어\x20(공백\x20전까지)\x0aString\x20line\x20=\x20sc.nextLine();\x20//\x20한\x20줄\x20전체','import\x20java.util.*;\x0apublic\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20Integer[]\x20arr\x20=\x20{Integer.MAX_VALUE,\x20Integer.MIN_VALUE,\x200};\x0a\x20\x20\x20\x20\x20\x20\x20\x20Arrays.sort(arr,\x20(a,\x20b)\x20->\x20Integer.compare(a,\x20b));\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(Arrays.toString(arr));\x0a\x20\x20\x20\x20}\x0a}','숫자\x20문자에서\x20\x270\x27을\x20빼면\x20해당\x20정수값이\x20됩니다.\x20아스키\x20코드\x20차이\x20활용입니다.','import\x20java.util.Arrays;\x0apublic\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20int[]\x20arr\x20=\x20{10,\x2020,\x2030,\x2040,\x2050};\x0a\x20\x20\x20\x20\x20\x20\x20\x20int[]\x20sub\x20=\x20Arrays.copyOfRange(arr,\x202,\x205);\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(Arrays.toString(sub));\x20\x20//\x20[30,\x2040,\x2050]\x0a\x20\x20\x20\x20}\x0a}','System.out.println(sum);','if\x20(a\x20___\x20Dog)','int[]\x20arr\x20=\x20{5,\x202,\x208,\x201,\x209};','if\x20((n\x20___\x201)\x20==\x201)','System.out.println(p.x\x20+\x20\x22,\x20\x22\x20+\x20p.y);','\x5c\x5cs','public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20static\x20class\x20Box\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20private\x20int\x20size;\x0a\x20\x20\x20\x20\x20\x20\x20\x20Box(int\x20size)\x20{\x20this.size\x20=\x20size;\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20public\x20int\x20getSize()\x20{\x20return\x20size;\x20}\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20Box\x20b\x20=\x20new\x20Box(5);\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(b.getSize());\x20\x20//\x205\x0a\x20\x20\x20\x20}\x0a}','향상된\x20for문은\x20배열이나\x20컬렉션의\x20모든\x20원소를\x20순서대로\x20방문합니다.\x20인덱스가\x20필요\x20없을\x20때\x20사용하면\x20코드가\x20간결해집니다.','int.parse(s)\x20→\x20Integer.parseInt(s)\x0an.toString()\x20→\x20String.valueOf(n)\x0an.toRadixString(2)\x20→\x20Integer.toBinaryString(n)','드릴\x202\x20—\x20default\x20분기','return\x20b[1]\x20-\x20a[1];','int\x20n\x20=\x20list.___();','피보나치를\x20메모이제이션으로\x20구현할\x20때\x20캐시를\x20확인하는\x20코드를\x20완성하세요.','public\x20class\x20Main\x20{','드릴\x202\x20—\x20홀짝\x20판별','int\x20n\x20=\x20sc.nextInt();','문자열\x20배열을\x20길이\x20오름차순,\x20같으면\x20사전순으로\x20정렬하는\x20코드를\x20완성하세요.','if\x20(n\x20<=\x201)\x20return\x201;','import\x20java.util.Scanner;','for\x20(int\x20d\x20=\x200;\x20d\x20<\x204;\x20d++)\x20{','toCharArray()는\x20String을\x20char[]\x20배열로\x20변환합니다.\x20개별\x20문자를\x20수정할\x20수\x20있습니다.','System.out.println(reversed);','debu','static\x20int\x20fib(int\x20n)\x20{','Arrays.sort(arr,\x20Collections.___());','코딩테스트에서\x20입력이\x20많을\x20때\x20Scanner는\x20느립니다.\x20BufferedReader\x20+\x20StringTokenizer\x20조합이\x20표준\x20빠른\x20입력\x20패턴입니다.\x20readLine()은\x20한\x20줄을\x20문자열로\x20읽고,\x20StringTokenizer로\x20공백\x20구분\x20토큰을\x20분리합니다.','드릴\x203\x20—\x20TreeMap\x20자동\x20정렬','public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20String\x20→\x20int\x0a\x20\x20\x20\x20\x20\x20\x20\x20int\x20n\x20=\x20Integer.parseInt(\x2242\x22);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20int\x20→\x20String\x0a\x20\x20\x20\x20\x20\x20\x20\x20String\x20s1\x20=\x20String.valueOf(42);\x0a\x20\x20\x20\x20\x20\x20\x20\x20String\x20s2\x20=\x20Integer.toString(42);\x0a\x20\x20\x20\x20\x20\x20\x20\x20String\x20s3\x20=\x20\x22\x22\x20+\x2042;\x20\x20\x20//\x20간단하지만\x20비추\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20int\x20→\x20이진/8진/16진\x20문자열\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(Integer.toBinaryString(10));\x20//\x20\x221010\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(Integer.toOctalString(8));\x20\x20\x20//\x20\x2210\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(Integer.toHexString(255));\x20\x20\x20//\x20\x22ff\x22\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x2016진수\x20문자열\x20→\x20int\x0a\x20\x20\x20\x20\x20\x20\x20\x20int\x20hex\x20=\x20Integer.parseInt(\x22ff\x22,\x2016);\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20255\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(hex);\x0a\x20\x20\x20\x20}\x0a}','생성자에서\x20필드와\x20매개변수를\x20구분하는\x20코드를\x20완성하세요.','List','dx[]:\x20행\x20변화\x20(하,\x20상,\x20우,\x20좌).\x20dy[]:\x20열\x20변화.\x20{0,0,1,-1}과\x20{1,-1,0,0}\x20조합으로\x204방향.','System.out.println(sb.toString());','현재\x20원소의\x20보완값(need\x20=\x20target\x20-\x20nums[i])이\x20이미\x20본\x20값인지\x20HashMap에서\x20O(1)으로\x20확인합니다.','String\x20a\x20=\x20\x22hello\x22;\x0aString\x20b\x20=\x20\x22hello\x22;\x0a\x0aa\x20==\x20b\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20true일\x20수도\x20false일\x20수도\x20있음\x20(주소\x20비교)\x0aa.equals(b)\x20\x20\x20\x20//\x20true\x20(내용\x20비교,\x20안전!)\x0a\x0a//\x20NullPointerException\x20방지:\x20리터럴을\x20앞에\x0a\x22hello\x22.equals(s)\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20s가\x20null이어도\x20안전\x0as.equalsIgnoreCase(\x22HELLO\x22)\x20//\x20대소문자\x20무시\x20비교','종합\x20기본개념\x20—\x20반복문','정수의\x20제곱근을\x20구해\x20정수로\x20변환하는\x20코드를\x20완성하세요.','public\x20String\x20___()\x20{\x20return\x20name;\x20}','2\x20*\x20j','드릴\x204\x20—\x20방문\x20체크\x20시점','System.out.println(a\x20+\x20b);','드릴\x202\x20—\x20Character.isDigit','cur.remove(cur.size()\x20-\x201);\x20\x20//\x20복원','TreeMap은\x20키를\x20자동\x20정렬합니다.\x20PriorityQueue는\x20기본적으로\x20최솟값이\x20먼저\x20나오는\x20최소\x20힙입니다.','System.out.println(queue.poll());','String\x20reversed\x20=\x20new\x20StringBuilder(s).reverse().toString();','드릴\x202\x20—\x20contains\x20O(1)\x20탐색','for\x20(int\x20i\x20=\x201;\x20i\x20<=\x205;\x20___)','maximum','outer','if\x20((n\x20&\x201)\x20==\x201)\x20{','난이도\x20●○○','compareTo','드릴\x203\x20—\x20논리\x20연산자\x20&&','for\x20(int\x20i\x20=\x200;\x20i\x20<\x204;\x20i++)\x20{','종합\x20기본개념\x20—\x20조건문','binarySearch','import\x20java.io.*;\x0apublic\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20throws\x20IOException\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20BufferedReader\x20br\x20=\x20new\x20BufferedReader(new\x20InputStreamReader(System.in));\x0a\x20\x20\x20\x20\x20\x20\x20\x20int\x20n\x20=\x20Integer.parseInt(br.readLine().trim());\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(n);\x0a\x20\x20\x20\x20}\x0a}','for\x20(int\x20mask\x20=\x200;\x20mask\x20<\x20(1\x20<<\x20n);\x20mask++)\x20{','mat','Collections.sort(list,\x20Collections.___());','for\x20(int[]\x20row\x20:\x20___)','public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20static\x20boolean\x20isPrime(int\x20n)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(n\x20<\x202)\x20return\x20false;\x0a\x20\x20\x20\x20\x20\x20\x20\x20for\x20(int\x20i\x20=\x202;\x20i\x20<=\x20Math.sqrt(n);\x20i++)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(n\x20%\x20i\x20==\x200)\x20return\x20false;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20true;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(isPrime(17));\x20\x20//\x20true\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(isPrime(15));\x20\x20//\x20false\x0a\x20\x20\x20\x20}\x0a}','System.out.print(\x22Hello\x20\x22);','public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20static\x20class\x20Shape\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20String\x20color;\x0a\x20\x20\x20\x20\x20\x20\x20\x20Shape(String\x20color)\x20{\x20this.color\x20=\x20color;\x20}\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20static\x20class\x20Circle\x20extends\x20Shape\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20int\x20radius;\x0a\x20\x20\x20\x20\x20\x20\x20\x20Circle(String\x20color,\x20int\x20radius)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20super(color);\x20\x20//\x20부모\x20생성자\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20this.radius\x20=\x20radius;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20Circle\x20c\x20=\x20new\x20Circle(\x22red\x22,\x205);\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(c.color\x20+\x20\x22\x20\x22\x20+\x20c.radius);\x20\x20//\x20red\x205\x0a\x20\x20\x20\x20}\x0a}','for\x20(int\x20j\x20=\x200;\x20j\x20<\x20mat[i].___;\x20j++)','드릴\x201\x20—\x20trim으로\x20공백\x20제거','public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20int\x20year\x20=\x202024;\x0a\x20\x20\x20\x20\x20\x20\x20\x20boolean\x20isLeap\x20=\x20(year\x20%\x204\x20==\x200\x20&&\x20year\x20%\x20100\x20!=\x200)\x20||\x20(year\x20%\x20400\x20==\x200);\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(isLeap);\x20\x20//\x20true\x0a\x20\x20\x20\x20}\x0a}','\x20\x20\x20\x20int\x20nx\x20=\x20x\x20+\x20dx[d];','\x20\x20\x20\x20int\x20ny\x20=\x20y\x20+\x20dy[d];','최댓값\x20초기값은\x20배열의\x20첫\x20번째\x20원소로\x20설정합니다.','드릴\x204\x20—\x20printf\x20포맷\x20출력','정수를\x20String으로\x20변환한\x20뒤\x20각\x20자리\x20숫자를\x20합산하는\x20코드를\x20완성하세요.','QRnHA','N개의\x20정수를\x20N줄로\x20입력받아\x20합산하는\x20코드의\x20빈칸을\x20채우세요.','public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20int\x20day\x20=\x201;\x0a\x20\x20\x20\x20\x20\x20\x20\x20switch\x20(day)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20case\x201:\x20System.out.println(\x22월요일\x22);\x20break;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20case\x202:\x20System.out.println(\x22화요일\x22);\x20break;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20default:\x20System.out.println(\x22기타\x22);\x20break;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a}','entrySet','import\x20java.util.*;\x0apublic\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20ArrayList<String>\x20list\x20=\x20new\x20ArrayList<>(Arrays.asList(\x22a\x22,\x20\x22b\x22,\x20\x22c\x22));\x0a\x20\x20\x20\x20\x20\x20\x20\x20list.add(\x22d\x22);\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(list);\x20\x20//\x20[a,\x20b,\x20c,\x20d]\x0a\x20\x20\x20\x20}\x0a}','import\x20java.util.Arrays;\x0apublic\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20int[]\x20arr\x20=\x20{5,\x202,\x208,\x201,\x209};\x0a\x20\x20\x20\x20\x20\x20\x20\x20Arrays.sort(arr);\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20먼저\x20정렬!\x0a\x20\x20\x20\x20\x20\x20\x20\x20int\x20idx\x20=\x20Arrays.binarySearch(arr,\x208);\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(idx);\x20\x20//\x203\x0a\x20\x20\x20\x20}\x0a}','Comparator\x20심화\x20—\x20복합\x20기준\x20정렬','\x20\x20\x20\x20for\x20(int\x20j\x20=\x200;\x20j\x20<\x20mat[i].length;\x20j++)\x20{','while\x20(it.hasNext())\x20{','if\x20(a[0]\x20!=\x20b[0])\x20return\x20a[0]\x20-\x20b[0];','for\x20(int\x20x\x20:\x20arr)\x20{','public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20String\x20s\x20=\x20null;\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20안전:\x20리터럴을\x20앞에\x20둠\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(\x22hello\x22.equals(s))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(\x22일치\x22);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(\x22불일치\x22);\x20\x20//\x20출력됨\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a}','public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20여기에\x20코드\x20작성\x0a\x20\x20\x20\x20}\x0a}','Java\x20String의\x20핵심\x20메서드들을\x20익힙니다.\x20Python\x20문자열\x20메서드와\x20이름이\x20다른\x20것에\x20주의하세요.','public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20int\x20n\x20=\x205;\x0a\x20\x20\x20\x20\x20\x20\x20\x20int\x20nx\x20=\x203,\x20ny\x20=\x205;\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(nx\x20>=\x200\x20&&\x20nx\x20<\x20n\x20&&\x20ny\x20>=\x200\x20&&\x20ny\x20<\x20n)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(\x22범위\x20내\x22);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(\x22범위\x20초과\x22);\x20\x20//\x20출력됨\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a}','두\x20int를\x20곱할\x20때\x20오버플로우를\x20방지하는\x20캐스팅을\x20완성하세요.','null은\x20==\x20로\x20비교합니다.\x20문자열/Integer\x20같은\x20참조형은\x20.equals()를\x20써야\x20값을\x20비교할\x20수\x20있습니다.','<code>HashSet</code>을\x20사용해\x20중복을\x20제거하거나\x20원소\x20포함\x20여부를\x20O(1)에\x20확인하는\x20방법을\x20익힙니다.','<div\x20style=\x22line-height:1.7\x22>\x0a<b>🔁\x20반복문\x20—\x20카테고리\x20핵심\x20미리보기</b><br><br>\x0aJava\x20<code>for</code>문은\x20<b>초기화\x20;\x20조건\x20;\x20증감</b>\x20세\x20부분을\x20세미콜론으로\x20구분합니다.<br><br>\x0a<b>⚠️\x20Python\x20range()\x20대응\x20Java\x20for문\x20차이</b><br>\x0a•\x20<code>range(5)</code>\x20→\x20<code>for(int\x20i=0;\x20i<5;\x20i++)</code><br>\x0a•\x20<code>range(1,6)</code>\x20→\x20<code>for(int\x20i=1;\x20i<=5;\x20i++)</code><br>\x0a•\x20<code>range(0,10,2)</code>\x20→\x20<code>for(int\x20i=0;\x20i<10;\x20i+=2)</code><br>\x0a•\x20<code>for\x20x\x20in\x20arr</code>\x20→\x20<code>for(int\x20x\x20:\x20arr)</code>\x20(for-each)<br><br>\x0a<b>📌\x20핵심\x20패턴</b><br>\x0a•\x20<code>break</code>\x20—\x20반복\x20완전\x20종료\x20 •\x20<code>continue</code>\x20—\x20현재\x20회차\x20건너뜀<br>\x0a•\x20중첩\x20반복문에서\x20<code>break</code>는\x20<b>가장\x20안쪽\x20루프</b>만\x20종료\x0a</div>','HashMap,\x20HashSet,\x20Stack,\x20Queue,\x20Collections,\x20빈도\x20카운팅','ArrayDeque를\x20스택으로\x20사용할\x20때\x20요소를\x20넣는\x20메서드를\x20완성하세요.','substring(시작인덱스)는\x20해당\x20인덱스부터\x20끝까지\x20반환합니다.','Arrays.___(arr,\x20-1);','Python과의\x20주요\x20차이점:\x0a•\x20길이:\x20len(s)\x20(Python)\x20→\x20s.length()\x20(Java)\x0a•\x20문자\x20접근:\x20s[i]\x20(Python)\x20→\x20s.charAt(i)\x20(Java)\x0a•\x20부분\x20문자열:\x20s[a:b]\x20(Python)\x20→\x20s.substring(a,\x20b)\x20(Java)\x0a•\x20분리:\x20s.split(\x27,\x27)\x20동일하지만\x20Java는\x20배열\x20반환\x0a•\x20불변성:\x20둘\x20다\x20불변이지만\x20Java는\x20StringBuilder\x20필수\x0a•\x20뒤집기:\x20s[::-1]\x20(Python)\x20→\x20new\x20StringBuilder(s).reverse().toString()\x20(Java)','contains()\x20메서드는\x20문자열이\x20특정\x20부분\x20문자열을\x20포함하면\x20true를\x20반환합니다.','<code>matches()</code>와\x20<code>replaceAll()</code>로\x20정규식을\x20활용하는\x20방법과\x20<code>Character</code>\x20클래스의\x20문자\x20검사\x20메서드를\x20익힙니다.','int\x20n\x20=\x20Integer.___(\x2242\x22);','while\x20(!q.isEmpty())\x20{','드릴\x203\x20—\x20한\x20줄\x20여러\x20정수\x20입력','elif','클래스\x20&\x20구조','String\x20s\x20=\x20\x22apple,banana,cherry\x22;','드릴\x203\x20—\x20삼항으로\x20null\x20기본값','n+1','mul','<code>Scanner</code>를\x20사용해\x20정수\x20하나를\x20입력받아\x20출력하는\x20코드를\x20완성하세요.','드릴\x202\x20—\x20try-catch\x20구조','ArrayList\x20기본\x20조작','DFS에서\x20방문\x20여부를\x20체크하는\x20코드를\x20완성하세요.','System.out.println(Integer.toBinaryString(n));','종합\x20기본개념\x20—\x20배열\x20&\x20ArrayList','remove()','반복\x20문자열\x20연결\x20시\x20<code>StringBuilder</code>를\x20사용하는\x20이유와\x20방법을\x20익힙니다.','System.out.println(maxPq.poll());','드릴\x201\x20—\x20int를\x20String으로\x20변환','j\x20*\x202','null\x20check:\x20==\x20null\x20동일\x0aobj?.method()\x20→\x20옵셔널\x20체이닝\x20없음','protected','char\x20c\x20=\x20s.charAt(0);','Math\x20클래스\x20—\x20수학\x20유틸','import\x20java.util.*;\x0apublic\x20class\x20Main\x20{\x0a\x20\x20\x20\x20//\x20함수형\x20인터페이스\x20(추상\x20메서드\x201개)\x0a\x20\x20\x20\x20interface\x20Compareable\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20int\x20compare(int\x20a,\x20int\x20b);\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20람다로\x20구현\x0a\x20\x20\x20\x20\x20\x20\x20\x20Compareable\x20asc\x20=\x20(a,\x20b)\x20->\x20a\x20-\x20b;\x0a\x20\x20\x20\x20\x20\x20\x20\x20Compareable\x20desc\x20=\x20(a,\x20b)\x20->\x20b\x20-\x20a;\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20int[]\x20arr\x20=\x20{3,\x201,\x204,\x201,\x205};\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Comparator\x20람다\x20(코딩테스트\x20핵심!)\x0a\x20\x20\x20\x20\x20\x20\x20\x20List<Integer>\x20list\x20=\x20new\x20ArrayList<>(Arrays.asList(3,\x201,\x204,\x201,\x205));\x0a\x20\x20\x20\x20\x20\x20\x20\x20list.sort((a,\x20b)\x20->\x20a\x20-\x20b);\x20\x20\x20//\x20오름차순\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(list);\x20\x20\x20\x20\x20//\x20[1,\x201,\x203,\x204,\x205]\x0a\x20\x20\x20\x20\x20\x20\x20\x20list.sort((a,\x20b)\x20->\x20b\x20-\x20a);\x20\x20\x20//\x20내림차순\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(list);\x20\x20\x20\x20\x20//\x20[5,\x204,\x203,\x201,\x201]\x0a\x20\x20\x20\x20}\x0a}','SplayTreeMap\x20→\x20TreeMap\x0a직접\x20구현\x20or\x20package\x20→\x20PriorityQueue','___.sort(list);','코딩테스트에서\x20Stack은\x20ArrayDeque로\x20대체하는\x20것이\x20권장됩니다.\x20BFS는\x20Queue,\x20DFS는\x20Stack(또는\x20재귀)을\x20씁니다.','이진\x20탐색과\x20최솟값/최댓값','large','\x20\x20\x20\x20if\x20(x\x20%\x202\x20!=\x200)\x20continue;','\x20\x20\x20\x20grade\x20=\x20\x22C\x22;','System.out.println(q.poll());','int는\x20약\x2021억까지만\x20저장됩니다.\x2010^6\x20×\x2010^6\x20=\x2010^12는\x20int\x20범위\x20초과입니다.\x20큰\x20수\x20연산\x20시\x20(long)a\x20*\x20b\x20형태로\x20캐스팅합니다.\x20Math\x20메서드는\x20import\x20없이\x20사용\x20가능합니다.','import\x20java.util.HashMap;\x0apublic\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20HashMap<String,\x20Integer>\x20map\x20=\x20new\x20HashMap<>();\x0a\x20\x20\x20\x20\x20\x20\x20\x20map.put(\x22apple\x22,\x203);\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(map.get(\x22apple\x22));\x20\x20//\x203\x0a\x20\x20\x20\x20}\x0a}','ArrayList<String>\x20list\x20=\x20new\x20ArrayList<>(Arrays.asList(\x22a\x22,\x20\x22b\x22,\x20\x22c\x22));','드릴\x202\x20—\x20스트림\x20최댓값','}\x20else\x20if\x20(n\x20<\x200)\x20{','<code>Math.max()</code>,\x20<code>Math.min()</code>,\x20<code>Math.abs()</code>,\x20<code>Math.sqrt()</code>\x20등\x20코딩테스트\x20필수\x20수학\x20메서드를\x20익힙니다.','System.out.___(\x22Hello\x22);','\x20\x20\x20\x20if\x20(sum\x20>\x20100)\x20break;','DP는\x20큰\x20문제를\x20작은\x20부분\x20문제로\x20나누고,\x20중복\x20계산을\x20메모이제이션으로\x20제거합니다.\x20탑다운(재귀+메모)과\x20바텀업(반복+배열)\x20두\x20방식이\x20있습니다.','clean','Arrays.sort(arr);','split(\x22.\x22)','public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20int[]\x20arr\x20=\x20{3,\x201,\x204,\x201,\x205,\x209};\x0a\x20\x20\x20\x20\x20\x20\x20\x20int\x20min\x20=\x20arr[0];\x0a\x20\x20\x20\x20\x20\x20\x20\x20for\x20(int\x20x\x20:\x20arr)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(x\x20<\x20min)\x20min\x20=\x20x;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(min);\x20\x20//\x201\x0a\x20\x20\x20\x20}\x0a}','공백으로\x20구분된\x20값은\x20split(\x22\x20\x22)로\x20분리합니다.','for\x20(Map.Entry<String,\x20Integer>\x20e\x20:\x20map.entrySet())\x20{','String\x20s\x20=\x20list.___(0);','for\x20(int\x20mask\x20=\x201;\x20mask\x20<\x20(1\x20<<\x20n);\x20mask++)\x20{','\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(i\x20+\x20\x22\x20\x22\x20+\x20j);','합이\x20100을\x20넘는\x20순간\x20반복을\x20멈추는\x20코드를\x20완성하세요.','s.length\x20→\x20s.length()\x0as[i]\x20→\x20s.charAt(i)\x0as.substring(a,b)\x20동일\x0as.contains(sub)\x20동일\x0as.split(\x27,\x27)\x20→\x20s.split(\x22,\x22)\x20String[]반환','poll()은\x20최솟값을\x20제거하고\x20반환합니다.\x20peek()는\x20제거\x20없이\x20조회합니다.','드릴\x203\x20—\x20생성자와\x20객체\x20생성','bvzEH','readName','기본형\x20배열(int[])의\x20정렬은\x20Arrays.sort()를\x20사용합니다.','\x20\x20\x20\x20System.out.println(\x22Dog\x20타입입니다\x22);','드릴\x202\x20—\x20Scanner\x20nextInt()\x20메서드','\x20\x20\x20\x20@Override','if\x20/\x20else\x20if\x20/\x20else,\x20비교·논리\x20연산자,\x20삼항\x20연산자,\x20switch','정렬된\x20배열에서\x20이진\x20탐색으로\x20값\x205의\x20인덱스를\x20찾는\x20코드를\x20완성하세요.','Deque<Integer>\x20deque\x20=\x20new\x20ArrayDeque<>();','for\x20(int\x20j\x20=\x20i\x20+\x201;\x20j\x20<\x20nums.___;\x20j++)','continue','드릴\x204\x20—\x20this\x20키워드','드릴\x204\x20—\x20char와\x20int\x20변환','입출력\x20&\x20자료형','map.___(\x22apple\x22,\x203);','드릴\x202\x20—\x20getOrDefault\x20빈도\x20카운팅','드릴\x201\x20—\x20BufferedReader\x20선언','final','String\x20s\x20=\x20null;','Math.abs()는\x20절댓값을\x20반환합니다.\x20Python의\x20abs()와\x20동일합니다.','드릴\x204\x20—\x20문자열\x20replace','37103dWavrI','정수\x20n이\x20짝수인지\x20홀수인지\x20판별하는\x20조건을\x20완성하세요.<br><code>if\x20(n\x20%\x202\x20___\x200)</code>','\x20\x20\x20\x20String\x20type()\x20{\x20return\x20\x22자동차\x22;\x20}','System.out.println(map.get(\x22apple\x22));','드릴\x203\x20—\x20finally\x20블록','convert','int[]\x20copy\x20=\x20Arrays.copyOf(arr,\x203);','//\x20선언\x20방법\x201:\x20크기만\x20지정\x0aint[]\x20arr\x20=\x20new\x20int[5];\x20\x20\x20\x20\x20\x20\x20\x20//\x20[0,\x200,\x200,\x200,\x200]\x0a\x0a//\x20선언\x20방법\x202:\x20값과\x20함께\x0aint[]\x20arr2\x20=\x20{1,\x202,\x203,\x204,\x205};\x20//\x20[1,\x202,\x203,\x204,\x205]\x0a\x0a//\x202차원\x20배열\x0aint[][]\x20matrix\x20=\x20new\x20int[3][4];\x20//\x203행\x204열\x0a\x0a//\x20접근\x0aarr[0]\x20=\x2010;\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20쓰기\x0aint\x20v\x20=\x20arr[0];\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20읽기\x0aint\x20len\x20=\x20arr.length;\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20길이\x20(괄호\x20없음!)','Java\x20String의\x20matches(),\x20replaceAll(),\x20split()\x20메서드는\x20정규식을\x20지원합니다.\x20Character\x20클래스는\x20개별\x20문자의\x20종류(숫자/문자/대소문자)를\x20검사하는\x20정적\x20메서드를\x20제공합니다.','int\x20n\x20=\x20(int)\x20d;','\x5c\x5cd','String\x20sub\x20=\x20s.substring(7);','if\x20(\x22hello\x22.equals(s))\x20{','드릴\x202\x20—\x20Queue\x20poll()','드릴\x204\x20—\x202차원\x20배열\x20접근','💡\x20Java\x20정규식에서\x20\x5cd는\x20\x22\x5c\x5cd\x22로\x20이스케이프합니다.\x20matches()는\x20전체\x20매칭,\x20부분\x20매칭은\x20Pattern/Matcher를\x20씁니다.','dp[1]\x20=\x201;\x20dp[2]\x20=\x202;','pairs','\x20\x20\x20\x20System.out.println(i);','charAt','import\x20java.util.ArrayList;\x0apublic\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20ArrayList<Integer>\x20list\x20=\x20new\x20ArrayList<>();\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(list.size());\x20\x20//\x200\x0a\x20\x20\x20\x20}\x0a}','\x20\x20\x20\x20\x20\x20\x20\x20Scanner\x20sc\x20=\x20new\x20Scanner(System.in);','큐에\x20넣는\x20시점에\x20visited를\x20true로\x20설정해야\x20같은\x20노드가\x20여러\x20번\x20큐에\x20들어가는\x20것을\x20막습니다.','println\x20=\x20print\x20+\x20line(줄).\x20출력\x20후\x20자동으로\x20줄바꿈을\x20합니다.\x20print는\x20줄바꿈\x20없이\x20출력합니다.','import\x20java.util.*;\x0apublic\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20LinkedList를\x20Queue로\x20사용\x0a\x20\x20\x20\x20\x20\x20\x20\x20Queue<String>\x20queue\x20=\x20new\x20LinkedList<>();\x0a\x20\x20\x20\x20\x20\x20\x20\x20queue.offer(\x22first\x22);\x0a\x20\x20\x20\x20\x20\x20\x20\x20queue.offer(\x22second\x22);\x0a\x20\x20\x20\x20\x20\x20\x20\x20queue.offer(\x22third\x22);\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(queue.poll());\x20//\x20\x22first\x22\x20(FIFO)\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Iterator로\x20조건부\x20삭제\x0a\x20\x20\x20\x20\x20\x20\x20\x20List<Integer>\x20list\x20=\x20new\x20ArrayList<>(Arrays.asList(1,2,3,4,5,6));\x0a\x20\x20\x20\x20\x20\x20\x20\x20Iterator<Integer>\x20it\x20=\x20list.iterator();\x0a\x20\x20\x20\x20\x20\x20\x20\x20while\x20(it.hasNext())\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20int\x20val\x20=\x20it.next();\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(val\x20%\x202\x20==\x200)\x20it.remove();\x20\x20//\x20짝수\x20삭제\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(list);\x20\x20//\x20[1,\x203,\x205]\x0a\x20\x20\x20\x20}\x0a}','💡\x20DP\x203단계:\x20①상태\x20정의(dp[i]의\x20의미),\x20②점화식\x20도출,\x20③기저\x20조건\x20설정.\x20이\x20순서로\x20설계하세요.','public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20String\x20s\x20=\x20\x2242\x22;\x0a\x20\x20\x20\x20\x20\x20\x20\x20int\x20n\x20=\x20Integer.parseInt(s);\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(n\x20+\x201);\x20\x20//\x2043\x0a\x20\x20\x20\x20}\x0a}','\x20\x20\x20\x20\x20\x20\x20\x20if\x20(nums[i]\x20+\x20nums[j]\x20==\x20target)\x20{','System.out.println(s.matches(\x22[0-9]+\x22));','Stack\x20/\x20Queue\x20/\x20Deque\x20—\x20DFS/BFS\x20필수\x20자료구조','System.out.println(m);','Scanner는\x20Java의\x20기본\x20입력\x20클래스입니다.\x20nextInt(),\x20nextDouble(),\x20next(),\x20nextLine()\x20메서드로\x20각\x20타입을\x20읽습니다.\x20Python의\x20input()과\x20달리\x20타입별로\x20다른\x20메서드를\x20씁니다.','if\x20(n\x20%\x202\x20==\x200)\x20{','len()','비트\x20연산과\x20비트마스킹','memo[n]\x20=\x20fib(n-1)\x20+\x20fib(n-2);','Java에서\x20elif는\x20else\x20if\x20(두\x20단어)입니다.','Scanner에서\x20정수를\x20읽는\x20메서드는\x20next\x20+\x20타입\x20형태입니다.\x20nextInt(),\x20nextDouble(),\x20next()\x20등이\x20있습니다.','list.sort((a,\x20b)\x20=>\x20a.compareTo(b))\x20→\x20동일\x20구조','if\x20(a\x20>\x200\x20___\x20b\x20>\x200)','all','int[]\x20dx\x20=\x20{0,\x200,\x201,\x20-1};','visited[next]\x20=\x20true;\x20\x20//\x20큐에\x20넣을\x20때\x20체크!','배열\x20정렬은\x20Arrays.sort(),\x20출력은\x20Arrays.toString()을\x20사용합니다.','무방향\x20그래프에서\x20u→v와\x20v→u\x20모두\x20추가해야\x20양방향\x20연결이\x20됩니다.','for\x20(int\x20i=1;\x20i<=5;\x20i++)\x20동일\x0ai++\x20동일\x0ai\x20+=\x202\x20동일','Java에서\x20콘솔에\x20줄바꿈과\x20함께\x20출력하는\x20메서드의\x20전체\x20이름을\x20완성하세요.<br><code>System.out.___(\x22Hello\x22);</code>','THyNa','q.offer(1);\x20q.offer(2);\x20q.offer(3);','pow(2,10)\x20→\x20Math.pow(2,10)\x0amax(a,b)\x20→\x20Math.max(a,b)\x0aabs(x)\x20→\x20Math.abs(x)\x0asqrt(x)\x20→\x20Math.sqrt(x)','String\x20s\x20=\x20\x22YES\x22;','첫\x20열\x20오름차순,\x20같으면\x20둘째\x20열\x20내림차순으로\x20정렬하는\x20코드를\x20완성하세요.','public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20static\x20int\x20safeInt(String\x20s)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20Integer.parseInt(s.trim());\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x20catch\x20(NumberFormatException\x20e)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(safeInt(\x2242\x22));\x20\x20\x20//\x2042\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(safeInt(\x22abc\x22));\x20\x20//\x200\x0a\x20\x20\x20\x20}\x0a}','System.out.println(s.___());','//\x20═══════════════════════════════════════════════════\x0a//\x201.\x20Java\x20메모리\x20구조\x20(Stack\x20vs\x20Heap)\x0a//\x20═══════════════════════════════════════════════════\x0a//\x20Java는\x20메모리를\x20Stack과\x20Heap\x20두\x20영역으로\x20나눠\x20관리합니다.\x0a//\x0a//\x20┌─\x20Stack\x20메모리\x20─────────────────────────────────┐\x0a//\x20│\x20•\x20기본형(Primitive)\x20변수의\x20실제\x20값\x20저장\x20\x20\x20\x20\x20\x20\x20\x20│\x0a//\x20│\x20•\x20참조형\x20변수의\x20주소(참조)\x20저장\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20│\x0a//\x20│\x20•\x20메서드\x20호출\x20시\x20지역변수\x20저장\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20│\x0a//\x20│\x20•\x20빠르지만\x20크기\x20제한\x20있음\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20│\x0a//\x20└────────────────────────────────────────────────┘\x0a//\x0a//\x20┌─\x20Heap\x20메모리\x20──────────────────────────────────┐\x0a//\x20│\x20•\x20객체(Object)의\x20실제\x20데이터\x20저장\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20│\x0a//\x20│\x20•\x20배열,\x20String,\x20ArrayList\x20등\x20모두\x20여기\x20저장\x20\x20\x20\x20│\x0a//\x20│\x20•\x20Garbage\x20Collector가\x20자동으로\x20메모리\x20관리\x20\x20\x20\x20\x20│\x0a//\x20│\x20•\x20크지만\x20Stack보다\x20느림\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20│\x0a//\x20└────────────────────────────────────────────────┘\x0a\x0a//\x20──\x20예시:\x20메모리\x20할당\x20──\x0aint\x20x\x20=\x2010;\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Stack:\x20x\x20=\x2010\x20(값\x20직접\x20저장)\x0aString\x20s\x20=\x20\x22Hello\x22;\x20\x20\x20\x20\x20\x20//\x20Stack:\x20s\x20=\x20주소값\x20(예:\x200x1A2B)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Heap:\x20\x200x1A2B\x20위치에\x20\x22Hello\x22\x20저장\x0aint[]\x20arr\x20=\x20{1,\x202,\x203};\x20\x20\x20//\x20Stack:\x20arr\x20=\x20주소값\x20(예:\x200x3C4D)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Heap:\x20\x200x3C4D\x20위치에\x20[1,2,3]\x20저장\x0a\x0a//\x20═══════════════════════════════════════════════════\x0a//\x202.\x20Java\x20타입\x20시스템\x20(기본형\x20vs\x20참조형)\x0a//\x20═══════════════════════════════════════════════════\x0a//\x20┌─\x20기본형\x20(Primitive\x20Type)\x20─\x20Stack\x20저장\x20─────────┐\x0a//\x20│\x20byte\x20\x20\x20\x20(1바이트)\x20\x20-128\x20~\x20127\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20│\x0a//\x20│\x20short\x20\x20\x20(2바이트)\x20\x20-32,768\x20~\x2032,767\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20│\x0a//\x20│\x20int\x20\x20\x20\x20\x20(4바이트)\x20\x20-2,147,483,648\x20~\x202,147,483,647\x20│\x0a//\x20│\x20long\x20\x20\x20\x20(8바이트)\x20\x20-9경\x20~\x209경\x20(L\x20접미사\x20필수)\x20\x20\x20│\x0a//\x20│\x20float\x20\x20\x20(4바이트)\x20\x20소수점\x207자리\x20(f\x20접미사\x20필수)\x20│\x0a//\x20│\x20double\x20\x20(8바이트)\x20\x20소수점\x2015자리\x20(기본\x20실수형)\x20\x20│\x0a//\x20│\x20char\x20\x20\x20\x20(2바이트)\x20\x20유니코드\x20문자\x20하나\x20(\x27A\x27)\x20\x20\x20\x20\x20│\x0a//\x20│\x20boolean\x20(1비트)\x20\x20\x20\x20true\x20/\x20false\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20│\x0a//\x20└────────────────────────────────────────────────┘\x0a\x0a//\x20┌─\x20참조형\x20(Reference\x20Type)\x20─\x20Heap\x20저장\x20──────────┐\x0a//\x20│\x20String,\x20배열,\x20ArrayList,\x20HashMap\x20등\x20모든\x20객체\x20\x20\x20│\x0a//\x20│\x20null\x20값\x20가능\x20(기본형은\x20null\x20불가!)\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20│\x0a//\x20│\x20.equals()로\x20내용\x20비교,\x20==\x20는\x20주소\x20비교\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20│\x0a//\x20└────────────────────────────────────────────────┘\x0a\x0a//\x20──\x20타입\x20선언\x20예시\x20──\x0aint\x20age\x20=\x2025;\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20정수\x20(가장\x20많이\x20사용)\x0along\x20bigNum\x20=\x201234567890123L;\x20\x20\x20\x20//\x20큰\x20정수\x20(L\x20필수!)\x0adouble\x20pi\x20=\x203.14159;\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20실수\x20(기본)\x0afloat\x20f\x20=\x203.14f;\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20실수\x20(f\x20필수!)\x0achar\x20grade\x20=\x20\x27A\x27;\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20문자\x20하나\x20(작은따옴표!)\x0aboolean\x20isValid\x20=\x20true;\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20참/거짓\x0aString\x20name\x20=\x20\x22홍길동\x22;\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20문자열\x20(큰따옴표!)\x0a\x0a//\x20──\x20배열\x20선언\x20방식\x20(3가지)\x20──\x0aint[]\x20arr1\x20=\x20new\x20int[5];\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20크기\x205,\x200으로\x20초기화\x0aint[]\x20arr2\x20=\x20{1,\x202,\x203,\x204,\x205};\x20\x20\x20//\x20값\x20직접\x20초기화\x0aint[]\x20arr3\x20=\x20new\x20int[]{1,2,3};\x20\x20//\x20new\x20키워드\x20사용\x0a\x0a//\x20──\x202차원\x20배열\x20──\x0aint[][]\x20matrix\x20=\x20new\x20int[3][4];\x20\x20//\x203행\x204열\x0aint[][]\x20grid\x20=\x20{\x0a\x20\x20\x20\x20{1,\x202,\x203},\x0a\x20\x20\x20\x20{4,\x205,\x206}\x0a};\x0a\x0a//\x20═══════════════════════════════════════════════════\x0a//\x203.\x20입출력\x20(Scanner\x20vs\x20BufferedReader)\x0a//\x20═══════════════════════════════════════════════════\x0a//\x20──\x20Scanner\x20(간편하지만\x20느림)\x20──\x0aimport\x20java.util.Scanner;\x0aScanner\x20sc\x20=\x20new\x20Scanner(System.in);\x0a\x0aString\x20name\x20=\x20sc.next();\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20단어\x20하나\x20(공백\x20전까지)\x0aString\x20line\x20=\x20sc.nextLine();\x20\x20\x20\x20\x20\x20//\x20한\x20줄\x20전체\x0aint\x20n\x20=\x20sc.nextInt();\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20정수\x20바로\x20읽기\x0adouble\x20x\x20=\x20sc.nextDouble();\x20\x20\x20\x20\x20\x20\x20//\x20실수\x20바로\x20읽기\x0a\x0a//\x20──\x20한\x20줄에\x20여러\x20값\x20입력\x20(공백\x20구분)\x20──\x0a//\x20입력:\x20\x223\x205\x22\x0aString[]\x20parts\x20=\x20sc.nextLine().split(\x22\x20\x22);\x0aint\x20a\x20=\x20Integer.parseInt(parts[0]);\x20\x20//\x203\x0aint\x20b\x20=\x20Integer.parseInt(parts[1]);\x20\x20//\x205\x0a\x0a//\x20──\x20BufferedReader\x20(빠른\x20입력,\x20대량\x20데이터용)\x20──\x0aimport\x20java.io.*;\x0aimport\x20java.util.StringTokenizer;\x0aBufferedReader\x20br\x20=\x20new\x20BufferedReader(new\x20InputStreamReader(System.in));\x0aStringTokenizer\x20st\x20=\x20new\x20StringTokenizer(br.readLine());\x0aint\x20a\x20=\x20Integer.parseInt(st.nextToken());\x0aint\x20b\x20=\x20Integer.parseInt(st.nextToken());\x0a\x0a//\x20──\x20출력\x20──\x0aSystem.out.println(\x22안녕하세요\x22);\x20\x20\x20\x20//\x20줄바꿈\x20포함\x20출력\x0aSystem.out.print(n);\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20줄바꿈\x20없이\x20출력\x0aSystem.out.printf(\x22값:\x20%d%n\x22,\x20n);\x20\x20//\x20포맷\x20출력\x20(printf)\x0aSystem.out.printf(\x22%.2f%n\x22,\x20x);\x20\x20\x20//\x20소수점\x202자리\x20고정\x0a\x0a//\x20──\x20printf\x20포맷\x20지정자\x20──\x0a//\x20%d\x20\x20정수\x20(decimal)\x0a//\x20%f\x20\x20실수\x20(float)\x0a//\x20%s\x20\x20문자열\x20(string)\x0a//\x20%c\x20\x20문자\x20(character)\x0a//\x20%n\x20\x20줄바꿈\x20(플랫폼\x20독립적)\x0a\x0a//\x20═══════════════════════════════════════════════════\x0a//\x204.\x20형변환\x20(Type\x20Casting)\x0a//\x20═══════════════════════════════════════════════════\x0a//\x20──\x20자동\x20형변환\x20(작은\x20타입\x20→\x20큰\x20타입)\x20──\x0aint\x20i\x20=\x20100;\x0along\x20l\x20=\x20i;\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20int\x20→\x20long\x20(자동)\x0adouble\x20d\x20=\x20i;\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20int\x20→\x20double\x20(자동)\x0a\x0a//\x20──\x20명시적\x20형변환\x20(큰\x20타입\x20→\x20작은\x20타입)\x20──\x0adouble\x20d2\x20=\x203.14;\x0aint\x20i2\x20=\x20(int)d2;\x20\x20\x20\x20\x20\x20\x20\x20//\x203\x20(소수점\x20버림!)\x0a\x0a//\x20──\x20String\x20↔\x20기본형\x20변환\x20──\x0aint\x20i\x20=\x20Integer.parseInt(\x2242\x22);\x20\x20\x20\x20\x20\x20\x20\x20//\x20String\x20→\x20int\x0adouble\x20d\x20=\x20Double.parseDouble(\x223.14\x22);\x20//\x20String\x20→\x20double\x0along\x20l\x20=\x20Long.parseLong(\x22123456\x22);\x20\x20\x20\x20\x20//\x20String\x20→\x20long\x0a\x0aString\x20s1\x20=\x20String.valueOf(42);\x20\x20\x20\x20\x20\x20\x20\x20//\x20int\x20→\x20String\x0aString\x20s2\x20=\x20Integer.toString(42);\x20\x20\x20\x20\x20\x20//\x20int\x20→\x20String\x0aString\x20s3\x20=\x20\x22\x22\x20+\x2042;\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20int\x20→\x20String\x20(간편)\x0a\x0a//\x20═══════════════════════════════════════════════════\x0a//\x205.\x20산술\x20연산자\x0a//\x20═══════════════════════════════════════════════════\x0a//\x20+\x20\x20더하기\x20\x20\x20\x20\x20\x205\x20+\x203\x20=\x208\x0a//\x20-\x20\x20빼기\x20\x20\x20\x20\x20\x20\x20\x205\x20-\x203\x20=\x202\x0a//\x20*\x20\x20곱하기\x20\x20\x20\x20\x20\x205\x20*\x203\x20=\x2015\x0a//\x20/\x20\x20나누기\x20\x20\x20\x20\x20\x205\x20/\x202\x20=\x202\x20\x20\x20(정수끼리\x20→\x20정수!\x20주의!)\x0a//\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x205.0\x20/\x202\x20=\x202.5\x20(실수\x20포함\x20→\x20실수)\x0a//\x20%\x20\x20나머지\x20\x20\x20\x20\x20\x207\x20%\x203\x20=\x201\x20\x20\x20(홀짝\x20판별에\x20사용!)\x0a//\x20Math.pow(2,3)\x20=\x208.0\x20\x20(거듭제곱,\x20double\x20반환)\x0a\x0a//\x20──\x20복합\x20대입\x20연산자\x20──\x0aint\x20x\x20=\x2010;\x0ax\x20+=\x205;\x20\x20//\x20x\x20=\x20x\x20+\x205\x20\x20→\x2015\x0ax\x20-=\x203;\x20\x20//\x20x\x20=\x20x\x20-\x203\x20\x20→\x2012\x0ax\x20*=\x202;\x20\x20//\x20x\x20=\x20x\x20*\x202\x20\x20→\x2024\x0ax\x20/=\x204;\x20\x20//\x20x\x20=\x20x\x20/\x204\x20\x20→\x206\x0ax\x20%=\x204;\x20\x20//\x20x\x20=\x20x\x20%\x204\x20\x20→\x202\x0a\x0a//\x20──\x20증감\x20연산자\x20──\x0aint\x20a\x20=\x205;\x0aa++;\x20\x20\x20\x20\x20//\x20a\x20=\x20a\x20+\x201\x20\x20→\x206\x20(후위\x20증가)\x0a++a;\x20\x20\x20\x20\x20//\x20a\x20=\x20a\x20+\x201\x20\x20→\x207\x20(전위\x20증가)\x0aa--;\x20\x20\x20\x20\x20//\x20a\x20=\x20a\x20-\x201\x20\x20→\x206\x20(후위\x20감소)\x0a--a;\x20\x20\x20\x20\x20//\x20a\x20=\x20a\x20-\x201\x20\x20→\x205\x20(전위\x20감소)','💡\x20핵심\x20포인트\x0a•\x20Java는\x20강타입\x20언어:\x20모든\x20변수는\x20타입\x20선언\x20필수\x20(Python은\x20동적\x20타입)\x0a•\x20기본형(int,\x20double\x20등)은\x20Stack에\x20값\x20저장,\x20참조형(String,\x20배열\x20등)은\x20Heap에\x20객체\x20저장\x0a•\x20int/int는\x20정수\x20나눗셈!\x205/2\x20=\x202\x20(소수점\x20버림).\x20실수\x20결과가\x20필요하면\x20(double)5/2\x20또는\x205.0/2\x0a•\x20String\x20비교는\x20.equals()\x20사용!\x20==\x20는\x20주소\x20비교\x20(기본형만\x20==\x20사용\x20가능)\x0a•\x20배열\x20선언:\x20int[]\x20arr\x20(크기\x20고정),\x20ArrayList<Integer>\x20list\x20(크기\x20가변)\x0a•\x20BufferedReader가\x20Scanner보다\x20빠름\x20(대량\x20입력\x20시\x20필수)','typeof','max','1부터\x20n까지의\x20합을\x20구하는\x20코드에서\x20누적\x20변수\x20초기화\x20위치를\x20올바르게\x20배치하세요.','클래스\x20구조,\x20main\x20메서드,\x20접근제어자,\x20static,\x20생성자,\x20메서드','RuntimeException','list.add(3);\x20list.add(1);\x20list.add(2);','public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20static\x20class\x20Point\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20int\x20x,\x20y;\x0a\x20\x20\x20\x20\x20\x20\x20\x20Point(int\x20x,\x20int\x20y)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20this.x\x20=\x20x;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20this.y\x20=\x20y;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20Point\x20p\x20=\x20new\x20Point(3,\x204);\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(p.x\x20+\x20\x22,\x20\x22\x20+\x20p.y);\x20\x20//\x203,\x204\x0a\x20\x20\x20\x20}\x0a}','드릴\x201\x20—\x20홀짝\x20판별\x20(비트\x20AND)','드릴\x202\x20—\x20DFS\x20visited\x20체크','Arrays.binarySearch()는\x20정렬된\x20배열에서\x20O(log\x20n)으로\x20값을\x20탐색합니다.\x20배열의\x20최솟값/최댓값은\x20직접\x20반복하거나\x20Java\x20스트림을\x20활용합니다.','toBinaryString','int[]\x20dist\x20=\x20new\x20int[n\x20+\x201];','public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20int[]\x20arr\x20=\x20{1,\x202,\x203,\x204,\x205};\x0a\x20\x20\x20\x20\x20\x20\x20\x20int\x20len\x20=\x20arr.length;\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(len);\x20\x20//\x205\x0a\x20\x20\x20\x20}\x0a}','String.format으로\x20소수점\x202자리\x20포맷\x20문자열을\x20만드는\x20코드를\x20완성하세요.','💡\x20Integer는\x20-128~127\x20범위에서\x20객체를\x20캐시합니다.\x20이\x20범위\x20밖에선\x20==\x20가\x20false가\x20될\x20수\x20있습니다.\x20항상\x20.equals()\x20사용!','public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20int\x20pow8\x20=\x201\x20<<\x203;\x20\x20//\x202^3\x20=\x208\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(pow8);\x20\x20//\x208\x0a\x20\x20\x20\x20}\x0a}','n\x20&\x201\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20홀수\x20여부\x0a1\x20<<\x20k\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x202^k\x0amask\x20>>\x20i\x20&\x201\x20\x20//\x20i번째\x20비트\x0amask\x20|=\x20(1<<i)\x20//\x20비트\x20켜기','HashSet은\x20중복을\x20허용하지\x20않습니다.\x20중복\x20제거나\x20O(1)\x20포함\x20여부\x20확인에\x20유용합니다.','Array','String\x20파싱\x20—\x20split,\x20trim,\x20startsWith','System.out.println(add(3,\x205));','System.out.println(queue.peek());','import\x20java.util.Arrays;\x0apublic\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20int[]\x20arr\x20=\x20{10,\x2020,\x2030,\x2040,\x2050};\x0a\x20\x20\x20\x20\x20\x20\x20\x20int[]\x20copy\x20=\x20Arrays.copyOf(arr,\x203);\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(Arrays.toString(copy));\x20\x20//\x20[10,\x2020,\x2030]\x0a\x20\x20\x20\x20}\x0a}','\x20\x20\x20\x20this.radius\x20=\x20radius;','드릴\x202\x20—\x20HashMap으로\x20O(n)\x20Two\x20Sum','(2\x20*\x20j)','Override','if\x20(___.equals(s))','BufferedReader.readLine()은\x20체크드\x20예외(checked\x20exception)인\x20IOException을\x20던질\x20수\x20있습니다.','드릴\x203\x20—\x20비트마스크\x20특정\x20비트\x20확인','toString','public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20double\x20x\x20=\x203.14159;\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.printf(\x22%.2f%n\x22,\x20x);\x0a\x20\x20\x20\x20}\x0a}','\x20\x20\x20\x20dp[i]\x20=\x20dp[i-1]\x20+\x20dp[i-2];','name','💡\x20main이\x20static이므로,\x20main에서\x20호출하는\x20메서드도\x20static이어야\x20합니다.\x20코딩테스트에서\x20모든\x20보조\x20메서드를\x20static으로\x20선언하세요.','string','드릴\x203\x20—\x20직접\x20최솟값\x20탐색','System.out.println(deque.peek());','import\x20java.util.*;\x0apublic\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20Deque<Integer>\x20deque\x20=\x20new\x20ArrayDeque<>();\x0a\x20\x20\x20\x20\x20\x20\x20\x20deque.push(1);\x20deque.push(2);\x20deque.push(3);\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(deque.pop());\x20\x20//\x203\x0a\x20\x20\x20\x20}\x0a}','last','<div\x20style=\x22line-height:1.7\x22>\x0a<b>📐\x20Math\x20유틸\x20&\x20오버플로우\x20—\x20코딩테스트\x20함정\x20방지</b><br><br>\x0a<b>📌\x20자주\x20쓰는\x20Math\x20메서드</b><br>\x0a•\x20<code>Math.max(a,b)</code>\x20·\x20<code>Math.min(a,b)</code>\x20·\x20<code>Math.abs(x)</code><br>\x0a•\x20<code>Math.sqrt(x)</code>\x20→\x20double\x20 •\x20<code>Math.pow(a,b)</code>\x20→\x20double<br>\x0a•\x20<code>Math.floor/ceil/round</code>\x20—\x20내림/올림/반올림<br><br>\x0a<b>⚠️\x20int\x20오버플로우\x20—\x20코딩테스트\x20함정!</b><br>\x0a•\x20int\x20최대값:\x20약\x20<b>21억</b><br>\x0a•\x20<code>int\x20×\x20int</code>가\x2021억\x20초과\x20→\x20<code>(long)a\x20*\x20b</code>\x20필수!<br>\x0a•\x20\x22결과가\x20매우\x20클\x20수\x20있다\x22\x20=\x20long\x20사용\x20신호\x0a</div>','readLine','i++','ArrayList에서\x20인덱스로\x20원소를\x20읽을\x20때는\x20.get(인덱스)를\x20씁니다.','\x20\x20\x20\x20System.out.println(x);','String.valueOf()는\x20기본형을\x20String으로\x20변환하는\x20메서드입니다.','ArrayList','int[]\x20arr\x20=\x20new\x20int[___];','Arrays\x20유틸\x20—\x20정렬·복사·채우기','public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20int\x20day\x20=\x203;\x0a\x20\x20\x20\x20\x20\x20\x20\x20switch\x20(day)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20case\x201:\x20System.out.println(\x22월요일\x22);\x20break;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20case\x202:\x20System.out.println(\x22화요일\x22);\x20break;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20case\x203:\x20System.out.println(\x22수요일\x22);\x20break;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20case\x204:\x20System.out.println(\x22목요일\x22);\x20break;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20case\x205:\x20System.out.println(\x22금요일\x22);\x20break;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20default:\x20System.out.println(\x22주말\x22);\x20break;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a}','char[]\x20chars\x20=\x20s.___();','int\x20n\x20=\x2025;','<div\x20style=\x22line-height:1.7\x22>\x0a<b>🔢\x20비트\x20연산\x20—\x20코딩테스트\x20중급\x20필수</b><br><br>\x0a<b>📌\x20비트\x20연산자</b><br>\x0a•\x20<code>&</code>\x20AND\x20 •\x20<code>|</code>\x20OR\x20 •\x20<code>^</code>\x20XOR\x20 •\x20<code>~</code>\x20NOT<br>\x0a•\x20<code><<</code>\x20왼쪽\x20시프트\x20(×2)\x20 •\x20<code>>></code>\x20오른쪽\x20시프트\x20(÷2)<br><br>\x0a<b>📌\x20자주\x20쓰는\x20패턴</b><br>\x0a•\x20홀짝:\x20<code>n\x20&\x201\x20==\x201</code>\x20(홀수)\x20 •\x202의\x20거듭제곱:\x20<code>1\x20<<\x20k</code><br>\x0a•\x20i번째\x20비트\x20확인:\x20<code>(mask\x20>>\x20i)\x20&\x201</code><br>\x0a•\x20부분집합:\x20<code>for(int\x20m=0;\x20m<(1<<n);\x20m++)</code>\x0a</div>','copyOfRange(arr,\x20from,\x20to)는\x20[from,\x20to)\x20범위를\x20복사합니다.\x20to는\x20포함되지\x20않습니다.','public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20String\x20s\x20=\x20\x22Hello\x22;\x0a\x20\x20\x20\x20\x20\x20\x20\x20char\x20c\x20=\x20s.charAt(0);\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(c);\x20\x20//\x20\x27H\x27\x0a\x20\x20\x20\x20}\x0a}','public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20char\x20c\x20=\x20\x275\x27;\x0a\x20\x20\x20\x20\x20\x20\x20\x20int\x20n\x20=\x20c\x20-\x20\x270\x27;\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(n);\x20\x20//\x205\x0a\x20\x20\x20\x20}\x0a}','\x20\x20\x20\x20System.out.println(\x22일치\x22);','문자열\x20내용\x20비교는\x20.equals()\x20메서드를\x20사용합니다.','★★★\x20필수기초','double','Java의\x20for문은\x20초기화,\x20조건,\x20증감\x20세\x20부분을\x20세미콜론(;)으로\x20구분합니다.\x20Python의\x20for\x20i\x20in\x20range()와\x20달리\x20직접\x20카운터를\x20관리합니다.','public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20int\x20age\x20=\x2020;\x0a\x20\x20\x20\x20\x20\x20\x20\x20String\x20result\x20=\x20(age\x20>=\x2018)\x20?\x20\x22성인\x22\x20:\x20\x22미성년자\x22;\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(result);\x0a\x20\x20\x20\x20}\x0a}','\x20\x20\x20\x20\x20\x20\x20\x20break;','System.out.println(c.getCount());','드릴\x201\x20—\x20extends\x20상속','positive','ZlGLq','DP\x20구조\x20동일.\x20Map<int,int>으로\x20메모이제이션.','hasElement','switch에서\x20일치하는\x20case가\x20없을\x20때\x20실행되는\x20키워드를\x20완성하세요.','\x20\x20\x20\x20if\x20((mask\x20>>\x20i\x20&\x201)\x20==\x201)\x20{','입출력,\x20자료형,\x20메모리\x20구조','드릴\x201\x20—\x20static\x20메서드\x20선언','조건문','드릴\x202\x20—\x20복합\x20기준\x20(길이\x20→\x20사전순)','public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20int\x20i\x20=\x2042;\x0a\x20\x20\x20\x20\x20\x20\x20\x20double\x20d\x20=\x20(double)\x20i;\x20\x20\x20\x20\x20\x20\x20//\x20int\x20→\x20double\x20(명시적\x20캐스팅)\x0a\x20\x20\x20\x20\x20\x20\x20\x20String\x20s\x20=\x20String.valueOf(i);\x20//\x20int\x20→\x20String\x0a\x20\x20\x20\x20\x20\x20\x20\x20int\x20back\x20=\x20Integer.parseInt(s);\x20//\x20String\x20→\x20int\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(d);\x20\x20\x20\x20\x20\x20\x20//\x2042.0\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(back);\x20\x20\x20\x20//\x2042\x0a\x20\x20\x20\x20}\x0a}','💡\x20핵심\x20포인트\x0a•\x20String은\x20불변!\x20반복\x20연결\x20시\x20StringBuilder\x20필수\x20(성능\x20차이\x20큼)\x0a•\x20문자\x20접근:\x20s.charAt(i)\x20(Python의\x20s[i])\x0a•\x20길이:\x20s.length()\x20(괄호\x20있음,\x20배열은\x20.length\x20괄호\x20없음)\x0a•\x20문자\x20\x275\x27\x20→\x20숫자\x205:\x20c\x20-\x20\x270\x27\x20(아스키\x20코드\x20차이\x20이용)\x0a•\x20StringBuilder.reverse()로\x20문자열\x20뒤집기','isDigit','Java\x20프로그램의\x20시작점인\x20main\x20메서드의\x20올바른\x20시그니처에서\x20빈칸을\x20채우세요.<br><code>public\x20___\x20void\x20main(String[]\x20args)</code>','class\x20부모\x20{\x0a\x20\x20\x20\x20int\x20x;\x0a\x20\x20\x20\x20부모(int\x20x)\x20{\x20this.x\x20=\x20x;\x20}\x0a\x20\x20\x20\x20void\x20method()\x20{\x20...\x20}\x0a}\x0a\x0aclass\x20자식\x20extends\x20부모\x20{\x0a\x20\x20\x20\x20자식(int\x20x)\x20{\x20super(x);\x20}\x20\x20//\x20부모\x20생성자\x20호출\x0a\x20\x20\x20\x20@Override\x0a\x20\x20\x20\x20void\x20method()\x20{\x20...\x20}\x20\x20\x20\x20\x20\x20//\x20재정의\x0a}\x0a\x0a//\x20다형성:\x20부모\x20타입으로\x20참조\x0a부모\x20obj\x20=\x20new\x20자식(5);\x0aobj.method();\x20\x20//\x20자식의\x20method()\x20실행','2차원\x20배열의\x201행\x202열\x20원소를\x20읽는\x20코드를\x20완성하세요.<br><code>int\x20v\x20=\x20matrix[___][___];</code>','드릴\x202\x20—\x20행렬\x20합산','String\x20result\x20=\x20String.___(\x22-\x22,\x20parts);','드릴\x204\x20—\x20Comparator\x20람다\x20정렬','bfs','드릴\x201\x20—\x20인접\x20리스트\x20초기화','\x20\x20\x20\x20System.out.println(Arrays.toString(row));','import\x20java.io.*;\x0aimport\x20java.util.StringTokenizer;\x0a\x0apublic\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20throws\x20IOException\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20BufferedReader\x20br\x20=\x20new\x20BufferedReader(new\x20InputStreamReader(System.in));\x0a\x20\x20\x20\x20\x20\x20\x20\x20int\x20n\x20=\x20Integer.parseInt(br.readLine().trim());\x0a\x20\x20\x20\x20\x20\x20\x20\x20int\x20total\x20=\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20for\x20(int\x20i\x20=\x200;\x20i\x20<\x20n;\x20i++)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20StringTokenizer\x20st\x20=\x20new\x20StringTokenizer(br.readLine());\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20int\x20a\x20=\x20Integer.parseInt(st.nextToken());\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20int\x20b\x20=\x20Integer.parseInt(st.nextToken());\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20total\x20+=\x20a\x20+\x20b;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(total);\x0a\x20\x20\x20\x20}\x0a}','람다\x20Comparator:\x20(a,\x20b)\x20->\x20반환값.\x20반환이\x20음수면\x20a가\x20앞,\x20양수면\x20b가\x20앞.\x20복합\x20기준은\x20if문으로\x20단계적으로\x20처리합니다.','target','Sort','완전탐색은\x20모든\x20경우를\x20다\x20시도합니다.\x20이중\x20for문으로\x20모든\x20쌍을\x20확인하는\x20것이\x20기본\x20패턴입니다.','}\x20___\x20{','import\x20java.util.Arrays;\x0apublic\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20int[]\x20arr\x20=\x20{3,\x201,\x204,\x201,\x205};\x0a\x20\x20\x20\x20\x20\x20\x20\x20Arrays.sort(arr);\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(Arrays.toString(arr));\x0a\x20\x20\x20\x20}\x0a}','134008TtdDqf','println','char\x20c\x20=\x20s.___(0);','flip','format','모든\x20문제의\x20입력\x20처리에\x20사용.\x20Java\x20특유의\x20Scanner/BufferedReader를\x20먼저\x20마스터해야\x20합니다.\x20Java의\x20메모리\x20구조(Stack/Heap)와\x20타입\x20시스템을\x20이해하면\x20코드\x20동작\x20원리를\x20정확히\x20파악할\x20수\x20있습니다.','\x20\x20\x20\x20default:\x20System.out.println(\x22기타\x22);\x20break;','Scanner에서\x20정수를\x20읽는\x20메서드는\x20next\x20+\x20타입\x20형태입니다.','💡\x20arr.length\x20(괄호\x20X)\x20vs\x20list.size()\x20(괄호\x20O).\x20배열은\x20속성,\x20ArrayList는\x20메서드입니다.','2단부터\x209단까지\x20구구단을\x20이중\x20for문으로\x20출력하는\x20코드를\x20완성하세요.','public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20static\x20class\x20Animal\x20{\x20String\x20sound()\x20{\x20return\x20\x22...\x22;\x20}\x20}\x0a\x20\x20\x20\x20static\x20class\x20Dog\x20extends\x20Animal\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20@Override\x0a\x20\x20\x20\x20\x20\x20\x20\x20String\x20sound()\x20{\x20return\x20\x22멍멍\x22;\x20}\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20Dog\x20d\x20=\x20new\x20Dog();\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(d.sound());\x20\x20//\x20멍멍\x0a\x20\x20\x20\x20}\x0a}','split(\x22,\x22)','\x20\x20\x20\x20\x20\x20\x20\x20if\x20((mask\x20>>\x20i\x20&\x201)\x20==\x201)\x20sum\x20+=\x20arr[i];','크기\x205인\x20int\x20배열을\x20선언하는\x20코드를\x20완성하세요.<br><code>int[]\x20arr\x20=\x20new\x20int[___];</code>','StringBuilder\x20sb\x20=\x20new\x20StringBuilder();','graph[v].add(u);','public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20static\x20class\x20Person\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20private\x20String\x20name;\x20\x20//\x20외부에서\x20직접\x20접근\x20불가\x0a\x20\x20\x20\x20\x20\x20\x20\x20private\x20int\x20age;\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20Person(String\x20name,\x20int\x20age)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20this.name\x20=\x20name;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20this.age\x20=\x20age;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20public\x20String\x20getName()\x20{\x20return\x20name;\x20}\x20\x20//\x20getter\x0a\x20\x20\x20\x20\x20\x20\x20\x20public\x20int\x20getAge()\x20\x20\x20\x20\x20{\x20return\x20age;\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20public\x20void\x20setAge(int\x20age)\x20{\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20setter\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(age\x20>=\x200)\x20this.age\x20=\x20age;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20@Override\x0a\x20\x20\x20\x20\x20\x20\x20\x20public\x20String\x20toString()\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20name\x20+\x20\x22\x20(\x22\x20+\x20age\x20+\x20\x22)\x22;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20Person\x20p\x20=\x20new\x20Person(\x22홍길동\x22,\x2025);\x0a\x20\x20\x20\x20\x20\x20\x20\x20p.setAge(26);\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(p.getName());\x20\x20//\x20홍길동\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(p);\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20홍길동\x20(26)\x0a\x20\x20\x20\x20}\x0a}','Java의\x20HashMap은\x20Python의\x20dict에\x20해당하며\x20키-값\x20쌍으로\x20데이터를\x20저장합니다.\x20HashSet은\x20Python의\x20set으로\x20중복\x20없는\x20집합을\x20표현합니다.\x20Stack은\x20LIFO(후입선출),\x20Queue는\x20FIFO(선입선출)\x20구조입니다.\x20getOrDefault()를\x20이용한\x20빈도\x20카운팅\x20패턴이\x20코딩테스트의\x20단골\x20문제입니다.','1\x20<<\x20n\x20=\x202^n\x20=\x20가능한\x20부분집합\x20수.\x20mask\x200~2^n-1이\x20모든\x20부분집합을\x20표현합니다.','드릴\x202\x20—\x20Iterator\x20hasNext/next','public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20int\x20sum\x20=\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20for\x20(int\x20i\x20=\x201;\x20i\x20<=\x2010;\x20i++)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(i\x20%\x203\x20==\x200)\x20continue;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20sum\x20+=\x20i;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(sum);\x20\x20//\x2037\x0a\x20\x20\x20\x20}\x0a}','String\x20result\x20=\x20(s\x20!=\x20null)\x20?\x20s\x20:\x20\x22기본값\x22;','import\x20java.util.Arrays;\x0apublic\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20int[]\x20arr\x20=\x20new\x20int[5];\x0a\x20\x20\x20\x20\x20\x20\x20\x20Arrays.fill(arr,\x20-1);\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(Arrays.toString(arr));\x20\x20//\x20[-1,\x20-1,\x20-1,\x20-1,\x20-1]\x0a\x20\x20\x20\x20}\x0a}','난이도\x20●●●','\x20\x20\x20\x20sum\x20+=\x20c\x20-\x20\x270\x27;','짝수만\x20출력하고\x20홀수는\x20건너뛰는\x20코드를\x20완성하세요.','System.out.println(s);','public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20//\x20두\x20수의\x20합이\x20target인\x20쌍\x20찾기\x20(O(n²))\x0a\x20\x20\x20\x20static\x20int[]\x20twoSum(int[]\x20nums,\x20int\x20target)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20for\x20(int\x20i\x20=\x200;\x20i\x20<\x20nums.length;\x20i++)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20for\x20(int\x20j\x20=\x20i\x20+\x201;\x20j\x20<\x20nums.length;\x20j++)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(nums[i]\x20+\x20nums[j]\x20==\x20target)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20new\x20int[]{i,\x20j};\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20new\x20int[]{-1,\x20-1};\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20int[]\x20nums\x20=\x20{2,\x207,\x2011,\x2015};\x0a\x20\x20\x20\x20\x20\x20\x20\x20int[]\x20result\x20=\x20twoSum(nums,\x209);\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(result[0]\x20+\x20\x22,\x20\x22\x20+\x20result[1]);\x20\x20//\x200,\x201\x0a\x20\x20\x20\x20}\x0a}','finally','BufferedReader\x20빠른\x20입력','BufferedReader\x20사용\x20시\x20main\x20메서드에\x20예외\x20선언이\x20필요합니다.\x20빈칸을\x20채우세요.<br><code>public\x20static\x20void\x20main(String[]\x20args)\x20throws\x20___</code>','Arrays.fill(arr,\x20-1);','parse','String[]\x20parts\x20=\x20br.readLine().split(\x22___\x22);','matrix','qwzzD','객체를\x20출력할\x20때\x20호출되는\x20메서드를\x20완성하세요.','if\x20(memo[n]\x20!=\x200)\x20return\x20memo[n];','@___\x20String\x20type()\x20{\x20return\x20\x22자동차\x22;\x20}','StringBuffer','for\x20i\x20in\x20range(n):\x20x\x20=\x20int(input())\x20→\x20동일\x20구조','Java에서\x20객체를\x20생성할\x20때는\x20new\x20키워드를\x20사용합니다.','for\x20(char\x20c\x20:\x20s.toCharArray())\x20{','💡\x20Comparator\x20람다:\x20(a,\x20b)\x20->\x20a\x20-\x20b에서\x20양수\x20반환\x20시\x20a가\x20b보다\x20뒤로,\x20음수\x20반환\x20시\x20a가\x20b보다\x20앞으로\x20이동합니다.','int\x20n\x20=\x201234;','includes','드릴\x204\x20—\x20char\x20배열로\x20문자열\x20처리','}\x20else\x20if\x20(score\x20>=\x2080)\x20{','\x20\x20\x20\x20System.out.println(\x22짝수\x22);','if\x20(s\x20==\x20null)\x20{','💡\x20for\x20(int\x20i\x20=\x200;\x20i\x20<\x20n;\x20i++)\x20패턴이\x20가장\x20많이\x20쓰입니다.\x20i\x20<\x20n\x20이면\x200부터\x20n-1까지\x20(총\x20n번).','System.out.println(result);','HashSet은\x20Python의\x20set과\x20동일한\x20개념입니다.\x20중복\x20원소를\x20허용하지\x20않으며,\x20contains()로\x20O(1)\x20포함\x20여부\x20확인이\x20가능합니다.','extends로\x20부모\x20클래스를\x20상속하고\x20@Override로\x20메서드를\x20재정의합니다.\x20부모\x20생성자는\x20super()로\x20호출합니다.','정적\x20팩토리\x20메서드:\x20static으로\x20선언된\x20메서드가\x20객체를\x20생성해\x20반환합니다.','long\x20result\x20=\x20(___)a\x20*\x20b;','배열을\x20정렬한\x20후\x20이진\x20탐색하는\x20코드의\x20순서를\x20올바르게\x20배치하세요.','switch\x20문과\x20fall-through','substring','switch','대량\x20입력에\x20유리한\x20<code>BufferedReader</code>와\x20<code>StringTokenizer</code>를\x20활용한\x20입력\x20패턴을\x20익힙니다.','public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20int\x20x\x20=\x20-7;\x0a\x20\x20\x20\x20\x20\x20\x20\x20int\x20result\x20=\x20Math.abs(x);\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(result);\x20\x20//\x207\x0a\x20\x20\x20\x20}\x0a}','switch\x20(변수)\x20{\x0a\x20\x20\x20\x20case\x20값1:\x0a\x20\x20\x20\x20\x20\x20\x20\x20실행코드1;\x0a\x20\x20\x20\x20\x20\x20\x20\x20break;\x20\x20\x20\x20\x20\x20\x20//\x20반드시\x20break!\x0a\x20\x20\x20\x20case\x20값2:\x0a\x20\x20\x20\x20case\x20값3:\x20\x20\x20\x20\x20\x20\x20\x20//\x20여러\x20case를\x20묶을\x20수\x20있음\x0a\x20\x20\x20\x20\x20\x20\x20\x20실행코드2;\x0a\x20\x20\x20\x20\x20\x20\x20\x20break;\x0a\x20\x20\x20\x20default:\x0a\x20\x20\x20\x20\x20\x20\x20\x20기본실행;\x0a\x20\x20\x20\x20\x20\x20\x20\x20break;\x0a}\x0a\x0a//\x20Java\x2014+\x20화살표\x20switch\x20(더\x20안전)\x0aString\x20result\x20=\x20switch\x20(day)\x20{\x0a\x20\x20\x20\x20case\x201\x20->\x20\x22월\x22;\x0a\x20\x20\x20\x20case\x202\x20->\x20\x22화\x22;\x0a\x20\x20\x20\x20default\x20->\x20\x22기타\x22;\x0a};','import\x20java.util.*;\x0apublic\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20TreeMap:\x20키\x20자동\x20정렬\x0a\x20\x20\x20\x20\x20\x20\x20\x20TreeMap<Integer,\x20String>\x20map\x20=\x20new\x20TreeMap<>();\x0a\x20\x20\x20\x20\x20\x20\x20\x20map.put(3,\x20\x22셋\x22);\x20map.put(1,\x20\x22하나\x22);\x20map.put(2,\x20\x22둘\x22);\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(map);\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20{1=하나,\x202=둘,\x203=셋}\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(map.firstKey());\x20//\x201\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(map.lastKey());\x20\x20//\x203\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20PriorityQueue:\x20최솟값\x20우선\x0a\x20\x20\x20\x20\x20\x20\x20\x20PriorityQueue<Integer>\x20pq\x20=\x20new\x20PriorityQueue<>();\x0a\x20\x20\x20\x20\x20\x20\x20\x20pq.offer(5);\x20pq.offer(1);\x20pq.offer(3);\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(pq.poll());\x20\x20\x20//\x201\x20(최솟값\x20먼저)\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(pq.poll());\x20\x20\x20//\x203\x0a\x20\x20\x20\x20}\x0a}','pq.offer(5);\x20pq.offer(1);\x20pq.offer(3);','int[]\x20arr\x20=\x20{3,\x201,\x204,\x201,\x205,\x209};','String\x20s\x20=\x20\x22hello\x22;','드릴\x204\x20—\x20자리수\x20합\x20구하기','Stack을\x20사용해\x20원소를\x20넣고\x20꺼내는\x20코드를\x20완성하세요.','sub','PriorityQueue에서\x20최솟값을\x20꺼내는\x20메서드를\x20완성하세요.','___\x20int\x20add(int\x20a,\x20int\x20b)','System.in\x20(바이트\x20스트림)을\x20문자\x20스트림으로\x20변환하는\x20클래스가\x20InputStreamReader입니다.','public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20int[]\x20arr\x20=\x20{1,\x202,\x203};\x0a\x20\x20\x20\x20\x20\x20\x20\x20int\x20n\x20=\x20arr.length;\x0a\x20\x20\x20\x20\x20\x20\x20\x20for\x20(int\x20mask\x20=\x201;\x20mask\x20<\x20(1\x20<<\x20n);\x20mask++)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20int\x20sum\x20=\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20for\x20(int\x20i\x20=\x200;\x20i\x20<\x20n;\x20i++)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20((mask\x20>>\x20i\x20&\x201)\x20==\x201)\x20sum\x20+=\x20arr[i];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(sum);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a}','int\x20need\x20=\x20___\x20-\x20nums[i];','그래프는\x20new\x20ArrayList[N+1]로\x20배열을\x20만들고,\x20각\x20인덱스에\x20ArrayList를\x20초기화합니다.\x20for(int\x20next\x20:\x20graph[cur])로\x20이웃\x20노드를\x20순회합니다.','💡\x20(a,b)\x20->\x20a-b는\x20Integer.MIN_VALUE가\x20있을\x20때\x20오버플로우!\x20Integer.compare(a,b)가\x20안전합니다.','반복문\x20(for\x20/\x20while\x20/\x20향상된\x20for)','동적\x20프로그래밍\x20(DP)','if\x20(n\x20<=\x201)\x20___\x20n;','Arrays.copyOf(원본,\x20길이)는\x20원본의\x20앞\x20n개\x20원소를\x20새\x20배열로\x20복사합니다.','if\x20/\x20else\x20if\x20/\x20else\x20조건문','//\x20do-while:\x20최소\x20한\x20번\x20실행\x0ado\x20{\x0a\x20\x20\x20\x20//\x20실행\x20코드\x0a}\x20while\x20(조건);\x0a\x0a//\x20while(true)\x20+\x20break\x0awhile\x20(true)\x20{\x0a\x20\x20\x20\x20//\x20실행\x20코드\x0a\x20\x20\x20\x20if\x20(종료조건)\x20break;\x0a}\x0a\x0a//\x20레이블\x20break\x20(이중\x20루프\x20탈출)\x0aouter:\x0afor\x20(int\x20i\x20=\x200;\x20i\x20<\x20n;\x20i++)\x20{\x0a\x20\x20\x20\x20for\x20(int\x20j\x20=\x200;\x20j\x20<\x20n;\x20j++)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(조건)\x20break\x20outer;\x20\x20//\x20바깥\x20루프까지\x20탈출\x0a\x20\x20\x20\x20}\x0a}','BFS\x20구조\x20동일.\x20Queue\x20대신\x20ListQueue\x20사용.','\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(\x22Hello!\x22);','정렬과\x20탐색','size()','fabs','public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20int\x20n\x20=\x2010;\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(Integer.toBinaryString(n));\x20//\x201010\x0a\x20\x20\x20\x20}\x0a}','check','System.out.println(stack.pop());','import\x20java.util.Arrays;\x0apublic\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20int[]\x20arr\x20=\x20{3,\x201,\x204,\x201,\x205,\x209};\x0a\x20\x20\x20\x20\x20\x20\x20\x20int\x20max\x20=\x20Arrays.stream(arr).max().getAsInt();\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(max);\x20\x20//\x209\x0a\x20\x20\x20\x20}\x0a}','System.out.println(isLeap);','String\x20s\x20=\x20String.___(42);','Queue를\x20활용한\x20BFS(너비우선탐색)\x20패턴을\x20Java로\x20구현합니다.\x20최단\x20거리\x20탐색에\x20필수입니다.','flip()','reverse()','드릴\x203\x20—\x20entrySet\x20순회','ArrayList를\x20내림차순으로\x20정렬하는\x20코드를\x20완성하세요.','\x20\x20\x20\x20sb.append(i).append(\x22\x5cn\x22);','MAX_INT','fpxNd','import\x20java.util.HashSet;\x0apublic\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20HashSet<Integer>\x20set\x20=\x20new\x20HashSet<>();\x0a\x20\x20\x20\x20\x20\x20\x20\x20set.add(1);\x20set.add(2);\x20set.add(3);\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(set.contains(2));\x20\x20//\x20true\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(set.contains(5));\x20\x20//\x20false\x0a\x20\x20\x20\x20}\x0a}','split(\x22,\x22)는\x20쉼표를\x20구분자로\x20분리합니다.\x20String[]을\x20반환합니다.','드릴\x204\x20—\x20비트마스크\x20완전탐색','String\x20조작','}\x20catch\x20(NumberFormatException\x20e)\x20{','드릴\x201\x20—\x20for-each\x20문법','Collections.sort(list,\x20Collections.reverseOrder());','💡\x20Arrays.sort()는\x20원본을\x20수정합니다.\x20원본\x20보존이\x20필요하면\x20Arrays.copyOf()로\x20복사\x20후\x20정렬하세요.','int\x20b\x20=\x20Integer.parseInt(parts[1]);','드릴\x204\x20—\x20반복\x20continue','다중\x20기준:\x20첫\x20번째\x20기준이\x20같을\x20때\x20두\x20번째\x20기준을\x20적용합니다.\x20b[1]\x20-\x20a[1]은\x20두\x20번째\x20열\x20내림차순.','Circle(String\x20color,\x20int\x20radius)\x20{','do\x20{','JNrOF','stack.push(3);','for\x20(int\x20i\x20=\x202;\x20i\x20<=\x20(int)Math.sqrt(n);\x20i++)\x20{','for\x20(int\x20i\x20=\x202;\x20i\x20<=\x209;\x20i++)\x20{','ArrayDeque는\x20Stack보다\x20빠른\x20Deque\x20구현체입니다.\x20push/pop으로\x20스택처럼\x20사용합니다.','else','드릴\x204\x20—\x20while과\x20break','public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20int\x20sum\x20=\x200,\x20i\x20=\x201;\x0a\x20\x20\x20\x20\x20\x20\x20\x20while\x20(true)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20sum\x20+=\x20i;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(sum\x20>\x20100)\x20break;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20i++;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(i);\x0a\x20\x20\x20\x20}\x0a}','드릴\x201\x20—\x20append\x20메서드','배열(Array)과\x20ArrayList','배열의\x20길이는\x20.length\x20(괄호\x20없음)입니다.\x20ArrayList의\x20.size()와\x20다릅니다.','double\x20d\x20=\x203.9;','드릴\x203\x20—\x20@Override\x20재정의','//\x20──\x20배열\x20선언과\x20초기화\x20──\x0aint[]\x20arr\x20=\x20new\x20int[5];\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20크기\x205,\x200으로\x20초기화\x0aint[]\x20arr2\x20=\x20{1,\x202,\x203,\x204,\x205};\x20\x20\x20\x20//\x20값\x20직접\x20초기화\x0aint[][]\x20matrix\x20=\x20new\x20int[3][4];\x20\x20\x20//\x202차원\x20배열\x20(3행\x204열)\x0a\x0a//\x20──\x20배열\x20기본\x20조작\x20──\x0aarr[0]\x20=\x2010;\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20인덱스로\x20값\x20설정\x0aint\x20val\x20=\x20arr[0];\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20인덱스로\x20값\x20읽기\x0aint\x20len\x20=\x20arr.length;\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20길이\x20(.length는\x20()\x20없음!)\x0a\x0a//\x20──\x20Arrays\x20유틸\x20(import\x20java.util.Arrays)\x20──\x0aArrays.sort(arr);\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20오름차순\x20정렬\x20(원본\x20수정!)\x0aArrays.sort(arr,\x20Collections.reverseOrder());\x20//\x20내림차순\x20(Integer[]만!)\x0aint[]\x20copy\x20=\x20Arrays.copyOf(arr,\x20arr.length);\x20\x20//\x20복사\x0aSystem.out.println(Arrays.toString(arr));\x20\x20\x20\x20\x20//\x20배열\x20출력\x0a\x0a//\x20──\x20ArrayList\x20(동적\x20크기\x20리스트)\x20──\x0aimport\x20java.util.ArrayList;\x0aArrayList<Integer>\x20list\x20=\x20new\x20ArrayList<>();\x0alist.add(10);\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20끝에\x20추가\x20(Python의\x20append)\x0alist.add(0,\x205);\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20인덱스\x200에\x20삽입\x0alist.remove(0);\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20인덱스\x200\x20삭제\x0alist.remove(Integer.valueOf(10));\x20//\x20값\x2010\x20삭제\x20(주의!)\x0aint\x20v\x20=\x20list.get(0);\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20인덱스로\x20읽기\x20(배열은\x20arr[0])\x0alist.set(0,\x2099);\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20인덱스\x200\x20값\x20변경\x0aint\x20size\x20=\x20list.size();\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20크기\x20(배열은\x20.length)\x0aCollections.sort(list);\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20정렬\x0alist.contains(10);\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20포함\x20여부\x0alist.clear();\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20모든\x20요소\x20삭제\x0a\x0a//\x20──\x20배열\x20↔\x20ArrayList\x20변환\x20──\x0aInteger[]\x20arr\x20=\x20{1,\x202,\x203};\x0aList<Integer>\x20fromArr\x20=\x20new\x20ArrayList<>(Arrays.asList(arr));\x0aInteger[]\x20toArr\x20=\x20list.toArray(new\x20Integer[0]);','default는\x20어떤\x20case에도\x20해당하지\x20않을\x20때\x20실행됩니다.\x20if문의\x20else와\x20같습니다.','Scanner를\x20사용해\x20정수를\x20읽는\x20메서드\x20이름의\x20빈칸을\x20채우세요.<br><code>int\x20n\x20=\x20sc.___Int();</code>','Integer[]\x20arr\x20=\x20{3,\x201,\x204,\x201,\x205,\x209};','array','import\x20java.util.*;\x0apublic\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20List<Integer>\x20list\x20=\x20new\x20ArrayList<>(Arrays.asList(3,\x201,\x204,\x201,\x205,\x209));\x0a\x20\x20\x20\x20\x20\x20\x20\x20int\x20max\x20=\x20Collections.max(list);\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(max);\x20\x20//\x209\x0a\x20\x20\x20\x20}\x0a}','try\x20{','소수\x20판별에서\x20루프\x20상한을\x20Math.sqrt로\x20설정하는\x20코드를\x20완성하세요.','Iterator로\x20리스트를\x20순회하는\x20코드를\x20완성하세요.','System.out.println(i);','must','\x20\x20\x20\x20System.out.println(part);','public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20static\x20long\x20factorial(int\x20n)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(n\x20<=\x201)\x20return\x201;\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20n\x20*\x20factorial(n\x20-\x201);\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(factorial(10));\x20\x20//\x203628800\x0a\x20\x20\x20\x20}\x0a}','Queue<Integer>\x20q\x20=\x20new\x20LinkedList<>();','💡\x20핵심\x20포인트\x0a•\x20main\x20시그니처:\x20public\x20static\x20void\x20main(String[]\x20args)\x20—\x20순서대로\x20외우기\x0a•\x20static\x20메서드는\x20객체\x20생성\x20없이\x20클래스명.메서드명()으로\x20호출\x0a•\x20코딩테스트에서는\x20모든\x20메서드를\x20static으로\x20작성하는\x20것이\x20편함\x0a•\x20생성자는\x20클래스명과\x20동일하며\x20반환\x20타입\x20없음\x0a•\x20this는\x20현재\x20객체를\x20가리킴','Java\x20배열\x20기초','if\x20(a.length()\x20!=\x20b.length())\x20return\x20a.length()\x20-\x20b.length();','public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20int\x20sum\x20=\x200,\x20n\x20=\x201;\x0a\x20\x20\x20\x20\x20\x20\x20\x20while\x20(true)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20sum\x20+=\x20n++;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(sum\x20>\x20100)\x20break;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(n\x20-\x201);\x20\x20//\x2014\x0a\x20\x20\x20\x20}\x0a}','String\x20s\x20=\x20\x22I\x20love\x20Java\x22;','이중\x20반복문으로\x202차원\x20배열을\x20행/열\x20방향으로\x20순회하는\x20패턴을\x20익힙니다.','dp[0]\x20=\x200;','//\x20Java\x20반복문의\x20모든\x20것\x0a\x0a//\x20──\x201.\x20기본\x20for\x20반복\x20──\x0afor\x20(int\x20i\x20=\x200;\x20i\x20<\x205;\x20i++)\x20{\x20\x20\x20\x20\x20\x20//\x200,1,2,3,4\x0a\x20\x20\x20\x20System.out.println(i);\x0a}\x0afor\x20(int\x20i\x20=\x201;\x20i\x20<=\x205;\x20i++)\x20{\x20\x20\x20\x20\x20//\x201,2,3,4,5\x20(Python:\x20range(1,6))\x0a\x20\x20\x20\x20System.out.println(i);\x0a}\x0afor\x20(int\x20i\x20=\x205;\x20i\x20>=\x201;\x20i--)\x20{\x20\x20\x20\x20\x20//\x205,4,3,2,1\x20(역순)\x0a\x20\x20\x20\x20System.out.println(i);\x0a}\x0afor\x20(int\x20i\x20=\x200;\x20i\x20<\x2010;\x20i\x20+=\x202)\x20{\x20\x20//\x200,2,4,6,8\x20(Python:\x20range(0,10,2))\x0a\x20\x20\x20\x20System.out.println(i);\x0a}\x0a\x0a//\x20──\x202.\x20향상된\x20for문\x20(for-each)\x20──\x0aint[]\x20arr\x20=\x20{10,\x2020,\x2030};\x0afor\x20(int\x20x\x20:\x20arr)\x20{\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Python:\x20for\x20x\x20in\x20arr:\x0a\x20\x20\x20\x20System.out.println(x);\x0a}\x0a\x0a//\x20──\x203.\x20while\x20/\x20do-while\x20──\x0aint\x20count\x20=\x200;\x0awhile\x20(count\x20<\x203)\x20{\x0a\x20\x20\x20\x20System.out.println(count);\x0a\x20\x20\x20\x20count++;\x0a}\x0ado\x20{\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20최소\x201번\x20실행\x20보장\x0a\x20\x20\x20\x20System.out.println(count);\x0a\x20\x20\x20\x20count++;\x0a}\x20while\x20(count\x20<\x205);\x0a\x0a//\x20──\x204.\x20break\x20/\x20continue\x20──\x0afor\x20(int\x20i\x20=\x200;\x20i\x20<\x2010;\x20i++)\x20{\x0a\x20\x20\x20\x20if\x20(i\x20==\x205)\x20break;\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20반복\x20완전\x20종료\x0a\x20\x20\x20\x20if\x20(i\x20%\x202\x20==\x200)\x20continue;\x20\x20\x20\x20\x20//\x20짝수\x20회차\x20건너뜀\x0a\x20\x20\x20\x20System.out.println(i);\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x201,\x203\x20출력\x0a}\x0a\x0a//\x20──\x205.\x20중첩\x20반복문\x20──\x0afor\x20(int\x20i\x20=\x202;\x20i\x20<=\x209;\x20i++)\x20{\x0a\x20\x20\x20\x20for\x20(int\x20j\x20=\x201;\x20j\x20<=\x209;\x20j++)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(i\x20+\x20\x22\x20x\x20\x22\x20+\x20j\x20+\x20\x22\x20=\x20\x22\x20+\x20(i*j));\x0a\x20\x20\x20\x20}\x0a}\x0a\x0a//\x20──\x206.\x20누적\x20패턴\x20(코딩테스트\x20핵심)\x20──\x0aint\x20total\x20=\x200;\x0afor\x20(int\x20x\x20:\x20arr)\x20total\x20+=\x20x;\x20\x20\x20\x20\x20//\x20합산\x0a\x0aint\x20max\x20=\x20arr[0];\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20최댓값\x0afor\x20(int\x20x\x20:\x20arr)\x20if\x20(x\x20>\x20max)\x20max\x20=\x20x;\x0a\x0aint\x20min\x20=\x20arr[0];\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20최솟값\x0afor\x20(int\x20x\x20:\x20arr)\x20if\x20(x\x20<\x20min)\x20min\x20=\x20x;','코딩테스트의\x2090%가\x20배열/리스트\x20조작.\x20Java\x20배열은\x20크기\x20고정,\x20ArrayList는\x20가변\x20크기입니다.\x20배열은\x20.length\x20(괄호\x20없음),\x20ArrayList는\x20.size()\x20(괄호\x20있음)\x20-\x20헷갈리기\x20쉬운\x20포인트!','n-1','import\x20java.util.Arrays;','import\x20java.util.Arrays;\x0apublic\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20int[][]\x20arr\x20=\x20{{3,2},{1,4},{2,1}};\x0a\x20\x20\x20\x20\x20\x20\x20\x20Arrays.sort(arr,\x20(a,\x20b)\x20->\x20a[0]\x20-\x20b[0]);\x0a\x20\x20\x20\x20\x20\x20\x20\x20for\x20(int[]\x20row\x20:\x20arr)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(Arrays.toString(row));\x0a\x20\x20\x20\x20}\x0a}','case','result','3×3\x20행렬을\x20행\x20우선으로\x20출력하는\x20이중\x20for문의\x20조건을\x20완성하세요.','import\x20java.util.HashSet;\x0apublic\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20int[]\x20arr\x20=\x20{1,\x202,\x202,\x203,\x203,\x203};\x0a\x20\x20\x20\x20\x20\x20\x20\x20HashSet<Integer>\x20set\x20=\x20new\x20HashSet<>();\x0a\x20\x20\x20\x20\x20\x20\x20\x20for\x20(int\x20x\x20:\x20arr)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20set.add(x);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(set.size());\x20\x20\x20\x20\x20//\x203\x20(중복\x20제거됨)\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(set.contains(2));\x20//\x20true\x0a\x20\x20\x20\x20}\x0a}','int\x20max\x20=\x20___[0];','s.matches(\x22___+\x22)','boolean','public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20int\x20n\x20=\x20Integer.parseInt(\x2242\x22);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x20catch\x20(Exception\x20e)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(\x22오류\x22);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x20finally\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(\x22항상\x20실행\x22);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a}','System.out.println(idx);','import\x20java.util.*;\x0apublic\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20Integer[]\x20arr\x20=\x20{3,\x201,\x204,\x201,\x205,\x209};\x0a\x20\x20\x20\x20\x20\x20\x20\x20Arrays.sort(arr,\x20Collections.reverseOrder());\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(Arrays.toString(arr));\x20\x20//\x20[9,\x205,\x204,\x203,\x201,\x201]\x0a\x20\x20\x20\x20}\x0a}','slice','count','public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20int\x20n\x20=\x2042;\x0a\x20\x20\x20\x20\x20\x20\x20\x20String\x20s\x20=\x20String.valueOf(n);\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(s);\x0a\x20\x20\x20\x20}\x0a}','이중\x20배열\x20순회:\x20바깥\x20for는\x20행(i),\x20안쪽\x20for는\x20열(j).\x20matrix.length는\x20행\x20수,\x20matrix[i].length는\x20열\x20수입니다.','HashSet<Integer>\x20set\x20=\x20new\x20HashSet<>();','if\x20(n\x20<\x202)\x20return\x20false;','if\x20(s.equals(\x22YES\x22))\x20{','드릴\x204\x20—\x20containsKey\x20확인','len','NumberFormatException을\x20catch해\x20기본값을\x20반환하면\x20안전한\x20파싱\x20패턴입니다.','System.out.printf(\x22%.2f%n\x22,\x20x);','문자\x20<code>\x275\x27</code>를\x20숫자\x20<code>5</code>로\x20변환하는\x20방법의\x20빈칸을\x20채우세요.<br><code>int\x20n\x20=\x20\x275\x27\x20-\x20___;</code>','int\x20n\x20=\x20arr.length;','//\x20──\x20HashMap\x20(Python\x20dict와\x20동일\x20개념)\x20──\x0aimport\x20java.util.HashMap;\x0aHashMap<String,\x20Integer>\x20map\x20=\x20new\x20HashMap<>();\x0amap.put(\x22apple\x22,\x203);\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20키-값\x20추가/수정\x0aint\x20v\x20=\x20map.get(\x22apple\x22);\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20값\x20조회\x20(없으면\x20null!)\x0amap.getOrDefault(\x22key\x22,\x200);\x20\x20\x20\x20\x20\x20\x20//\x20없으면\x20기본값\x20반환\x0amap.containsKey(\x22apple\x22);\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20키\x20존재\x20여부\x0amap.containsValue(3);\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20값\x20존재\x20여부\x0amap.remove(\x22apple\x22);\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20삭제\x0amap.size();\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20개수\x0a\x0afor\x20(Map.Entry<String,Integer>\x20e\x20:\x20map.entrySet())\x20{\x0a\x20\x20\x20\x20System.out.println(e.getKey()\x20+\x20\x22:\x20\x22\x20+\x20e.getValue());\x0a}\x0a\x0a//\x20──\x20빈도\x20카운팅\x20패턴\x20(핵심!)\x20──\x0afor\x20(int\x20x\x20:\x20arr)\x20{\x0a\x20\x20\x20\x20map.put(x,\x20map.getOrDefault(x,\x200)\x20+\x201);\x0a}\x0a\x0a//\x20──\x20HashSet\x20(Python\x20set과\x20동일)\x20──\x0aHashSet<Integer>\x20set\x20=\x20new\x20HashSet<>();\x0aset.add(1);\x0aset.contains(1);\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20포함\x20여부\x20O(1)\x0aset.remove(1);\x0a\x0a//\x20──\x20Stack\x20──\x0aStack<Integer>\x20stack\x20=\x20new\x20Stack<>();\x0astack.push(1);\x0aint\x20top\x20=\x20stack.pop();\x0aint\x20peek\x20=\x20stack.peek();\x0astack.isEmpty();\x0a\x0a//\x20──\x20Queue\x20(LinkedList로\x20구현)\x20──\x0aQueue<Integer>\x20queue\x20=\x20new\x20LinkedList<>();\x0aqueue.offer(1);\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20삽입\x0aint\x20front\x20=\x20queue.poll();\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20삭제+반환\x0aint\x20front2\x20=\x20queue.peek();\x20\x20\x20\x20\x20\x20\x20\x20//\x20삭제\x20없이\x20조회','first','Set<int>\x20set\x20=\x20{}\x20→\x20HashSet<Integer>\x0aset.add(x)\x20동일\x0aset.contains(x)\x20동일\x0aset.length\x20→\x20set.size()','int[]\x20dp\x20=\x20new\x20int[n\x20+\x201];','public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20String\x20s\x20=\x20\x22hello\x22;\x0a\x20\x20\x20\x20\x20\x20\x20\x20char[]\x20chars\x20=\x20s.toCharArray();\x0a\x20\x20\x20\x20\x20\x20\x20\x20for\x20(int\x20i\x20=\x200;\x20i\x20<\x20chars.length;\x20i++)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20chars[i]\x20=\x20Character.toUpperCase(chars[i]);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(new\x20String(chars));\x20\x20//\x20HELLO\x0a\x20\x20\x20\x20}\x0a}','break가\x20없으면\x20다음\x20case로\x20이어집니다.\x20각\x20case\x20끝에\x20break를\x20쓰세요.','\x20\x20\x20\x20System.out.println(\x22홀수\x22);','private\x20필드는\x20외부에서\x20직접\x20접근\x20불가합니다.\x20getter/setter로\x20접근을\x20제어하는\x20것이\x20캡슐화입니다.','other','cur.size()\x20-\x201은\x20마지막\x20인덱스입니다.\x20remove()로\x20마지막\x20원소를\x20삭제해\x20이전\x20상태로\x20복원합니다.','toStr','Collections','b[1]\x20-\x20a[1]은\x20두\x20번째\x20열\x20내림차순입니다.','sqrt','삼항\x20연산자로\x20null\x20대신\x20기본값을\x20반환하는\x20패턴입니다.','int','printf의\x20포맷\x20지정자는\x20%로\x20시작합니다.\x20%.2f는\x20소수점\x202자리\x20실수를\x20의미합니다.','matchCase','graph[v].add(___);','if\x20(a\x20instanceof\x20Dog)\x20{','try-catch-finally에서\x20항상\x20실행되는\x20키워드를\x20완성하세요.','if\x20(s.___(\x20\x22Java\x22\x20))','if\x20(s.contains(\x22Java\x22))\x20{','Integer.toBinaryString()은\x20정수를\x202진수\x20문자열로\x20변환합니다.','throws\x20___','String\x20result\x20=\x20s.replace(\x22Python\x22,\x20\x22Java\x22);','Arrays.sort()는\x20원본\x20배열을\x20변경합니다.\x20정렬\x20결과를\x20출력할\x20때는\x20Arrays.toString()을\x20씁니다.','public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20String\x20a\x20=\x20\x22ABCBDAB\x22,\x20b\x20=\x20\x22BDCAB\x22;\x0a\x20\x20\x20\x20\x20\x20\x20\x20int\x20m\x20=\x20a.length(),\x20n\x20=\x20b.length();\x0a\x20\x20\x20\x20\x20\x20\x20\x20int[][]\x20dp\x20=\x20new\x20int[m+1][n+1];\x0a\x20\x20\x20\x20\x20\x20\x20\x20for\x20(int\x20i\x20=\x201;\x20i\x20<=\x20m;\x20i++)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20for\x20(int\x20j\x20=\x201;\x20j\x20<=\x20n;\x20j++)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(a.charAt(i-1)\x20==\x20b.charAt(j-1))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20dp[i][j]\x20=\x20dp[i-1][j-1]\x20+\x201;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20dp[i][j]\x20=\x20Math.max(dp[i-1][j],\x20dp[i][j-1]);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(dp[m][n]);\x20\x20//\x204\x0a\x20\x20\x20\x20}\x0a}','for\x20(int[]\x20row\x20:\x20mat)\x20{','인접\x20리스트로\x20그래프\x20표현','switch는\x20하나의\x20값에\x20따라\x20여러\x20분기\x20중\x20하나를\x20실행합니다.\x20각\x20case\x20끝에\x20break를\x20써야\x20합니다.\x20break가\x20없으면\x20다음\x20case로\x20이어집니다(fall-through).','StringBuilder에서\x20일반\x20String을\x20얻으려면\x20.toString()을\x20호출합니다.','\x20\x20\x20\x20System.out.println(s);','BufferedReader\x20br\x20=\x20new\x20BufferedReader(new\x20InputStreamReader(System.in));','import\x20java.util.Scanner;\x0apublic\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20Scanner\x20sc\x20=\x20new\x20Scanner(System.in);\x0a\x20\x20\x20\x20\x20\x20\x20\x20String\x20s\x20=\x20sc.next();\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(s.equals(\x22YES\x22))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(\x22정답!\x22);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(\x22오답\x22);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a}','[5]','if\x20(map.___Key(\x22hello\x22))','계단\x20오르기\x20DP에서\x20점화식을\x20완성하세요.\x20한\x20번에\x201칸\x20또는\x202칸\x20오를\x20수\x20있습니다.','br.readLine()은\x20문자열을\x20반환하므로\x20Integer.parseInt()로\x20변환해야\x20합니다.','public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20static\x20boolean\x20isEven(int\x20n)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20n\x20%\x202\x20==\x200;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(isEven(4));\x20\x20//\x20true\x0a\x20\x20\x20\x20}\x0a}','여러\x20줄\x20입력\x20처리','double\x20result\x20=\x20(double)5\x20/\x202;','드릴\x201\x20—\x20Arrays.fill','public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20static\x20class\x20Animal\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20String\x20name;\x0a\x20\x20\x20\x20\x20\x20\x20\x20Animal(String\x20name)\x20{\x20this.name\x20=\x20name;\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20String\x20sound()\x20{\x20return\x20\x22...\x22;\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20static\x20class\x20Dog\x20extends\x20Animal\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20Dog(String\x20name)\x20{\x20super(name);\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20@Override\x0a\x20\x20\x20\x20\x20\x20\x20\x20String\x20sound()\x20{\x20return\x20\x22멍멍\x22;\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20static\x20class\x20Cat\x20extends\x20Animal\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20Cat(String\x20name)\x20{\x20super(name);\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20@Override\x0a\x20\x20\x20\x20\x20\x20\x20\x20String\x20sound()\x20{\x20return\x20\x22냐옹\x22;\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20Animal[]\x20animals\x20=\x20{new\x20Dog(\x22뽀삐\x22),\x20new\x20Cat(\x22나비\x22)};\x0a\x20\x20\x20\x20\x20\x20\x20\x20for\x20(Animal\x20a\x20:\x20animals)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(a.name\x20+\x20\x22:\x20\x22\x20+\x20a.sound());\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a}','reversed','getter의\x20이름은\x20관례적으로\x20get\x20+\x20필드명(첫\x20글자\x20대문자)\x20형태입니다.','무방향\x20그래프에서\x20u-v\x20간선을\x20양방향으로\x20추가하는\x20코드를\x20완성하세요.','poll','map.put(x,\x20map.___(x,\x200)\x20+\x201);','\x20\x20\x20\x20BufferedReader\x20br\x20=\x20new\x20BufferedReader(new\x20InputStreamReader(System.in));','public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20char\x20c1\x20=\x20\x275\x27;\x0a\x20\x20\x20\x20\x20\x20\x20\x20char\x20c2\x20=\x20\x27a\x27;\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(Character.isDigit(c1));\x20\x20//\x20true\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(Character.isDigit(c2));\x20\x20//\x20false\x0a\x20\x20\x20\x20}\x0a}','Scanner\x20—\x20정수/실수/문자열\x20입력','public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20int[]\x20dx\x20=\x20{0,\x200,\x201,\x20-1};\x0a\x20\x20\x20\x20\x20\x20\x20\x20int[]\x20dy\x20=\x20{1,\x20-1,\x200,\x200};\x0a\x20\x20\x20\x20\x20\x20\x20\x20int\x20x\x20=\x202,\x20y\x20=\x202;\x0a\x20\x20\x20\x20\x20\x20\x20\x20for\x20(int\x20d\x20=\x200;\x20d\x20<\x204;\x20d++)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20int\x20nx\x20=\x20x\x20+\x20dx[d];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20int\x20ny\x20=\x20y\x20+\x20dy[d];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(nx\x20+\x20\x22\x20\x22\x20+\x20ny);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a}','배열\x20&\x20ArrayList','System.out.println(pq.___());','NumberFormatException을\x20잡는\x20catch\x20절을\x20완성하세요.','//\x20인터페이스\x20선언\x0ainterface\x20Checker\x20{\x0a\x20\x20\x20\x20boolean\x20check(int\x20n);\x0a}\x0a\x0a//\x20람다로\x20구현\x0aChecker\x20isEven\x20=\x20n\x20->\x20n\x20%\x202\x20==\x200;\x0aChecker\x20isPositive\x20=\x20n\x20->\x20n\x20>\x200;\x0a\x0a//\x20Comparator\x20람다\x20(정렬에\x20필수!)\x0alist.sort((a,\x20b)\x20->\x20a\x20-\x20b);\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20오름차순\x0alist.sort((a,\x20b)\x20->\x20b\x20-\x20a);\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20내림차순\x0alist.sort((a,\x20b)\x20->\x20a.compareTo(b));\x20//\x20String\x20오름차순\x0a\x0a//\x202D\x20배열\x20정렬\x0aArrays.sort(arr2d,\x20(a,\x20b)\x20->\x20a[0]\x20-\x20b[0]);\x20//\x20첫\x20열\x20기준','String\x20s\x20=\x20String.valueOf(n);','드릴\x203\x20—\x20범위\x20체크','\x20\x20\x20\x20System.out.println(\x222\x20x\x20\x22\x20+\x20j\x20+\x20\x22\x20=\x20\x22\x20+\x20(2\x20*\x20j));','\x20\x20\x20\x20return\x20a\x20+\x20b;','드릴\x203\x20—\x20readLine으로\x20정수\x20파싱','for,\x20while,\x20break,\x20continue,\x20향상된\x20for문,\x20중첩\x20반복','import\x20java.util.*;\x0apublic\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20boolean[]\x20visited\x20=\x20new\x20boolean[5];\x0a\x20\x20\x20\x20\x20\x20\x20\x20Queue<Integer>\x20q\x20=\x20new\x20LinkedList<>();\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20올바른\x20방법:\x20큐에\x20넣을\x20때\x20체크\x0a\x20\x20\x20\x20\x20\x20\x20\x20visited[0]\x20=\x20true;\x0a\x20\x20\x20\x20\x20\x20\x20\x20q.offer(0);\x0a\x20\x20\x20\x20\x20\x20\x20\x20while\x20(!q.isEmpty())\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20int\x20cur\x20=\x20q.poll();\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20for\x20(int\x20next\x20=\x200;\x20next\x20<\x205;\x20next++)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!visited[next])\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20visited[next]\x20=\x20true;\x20\x20//\x20큐에\x20넣을\x20때\x20체크!\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20q.offer(next);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a}','StringBuilder','offer','if\x20((mask\x20>>\x20i\x20___\x201)\x20==\x201)','드릴\x202\x20—\x20double을\x20int로\x20캐스팅','counter','System.out.println();','\x20\x20\x20\x20Box(int\x20size)\x20{\x20this.size\x20=\x20size;\x20}','Error','💡\x20sb.reverse()는\x20StringBuilder\x20자체를\x20변경합니다.\x20팰린드롬\x20검사:\x20s.equals(new\x20StringBuilder(s).reverse().toString())','Math.pow(밑,\x20지수)는\x20double을\x20반환합니다.\x20큰\x20정수\x20결과면\x20(long)으로\x20캐스팅하세요.','코딩테스트에서\x20자주\x20쓰는\x20문자열\x20파싱\x20메서드들을\x20익힙니다.\x20<code>split</code>,\x20<code>trim</code>,\x20<code>startsWith</code>,\x20<code>endsWith</code>를\x20확인하세요.','StringBuilder\x20sb\x20=\x20new\x20___();','배열을\x20오름차순으로\x20정렬하는\x20코드를\x20완성하세요.','current','LinkedList','MAX_VALUE','Int','int\x20maxSum\x20=\x20arr[0];','&&\x20단락\x20평가:\x20왼쪽이\x20false면\x20오른쪽을\x20평가하지\x20않습니다.\x20s\x20!=\x20null이\x20false면\x20s.equals()를\x20호출하지\x20않아\x20안전합니다.','public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20String\x20s\x20=\x20\x22Hello\x22;\x0a\x20\x20\x20\x20\x20\x20\x20\x20int\x20len\x20=\x20s.length();\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(len);\x20\x20//\x205\x0a\x20\x20\x20\x20}\x0a}','int\x20idx\x20=\x20Arrays.binarySearch(arr,\x205);','instanceof','★★☆\x20고빈출','\x20\x20\x20\x20this.y\x20=\x20y;','import\x20java.io.*;\x0apublic\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20throws\x20IOException\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20BufferedReader\x20br\x20=\x20new\x20BufferedReader(new\x20InputStreamReader(System.in));\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(br.readLine());\x0a\x20\x20\x20\x20}\x0a}','visited[next]\x20=\x20___;\x20//\x20큐에\x20넣을\x20때\x20체크!'];a2_0x40e8=function(){return _0x2ba85b;};return a2_0x40e8();}const a2_0x13fd6f=a2_0x3676;(function(_0x1d17e6,_0x39d37d){const _0xc032ee=a2_0x3676,_0x37afcf=_0x1d17e6();while(!![]){try{const _0x32acae=-parseInt(_0xc032ee(0x40f))/0x1*(-parseInt(_0xc032ee(0x6b6))/0x2)+parseInt(_0xc032ee(0x773))/0x3+parseInt(_0xc032ee(0x42c))/0x4+-parseInt(_0xc032ee(0x2ea))/0x5+-parseInt(_0xc032ee(0x80f))/0x6*(parseInt(_0xc032ee(0x305))/0x7)+-parseInt(_0xc032ee(0x577))/0x8*(parseInt(_0xc032ee(0x6d0))/0x9)+-parseInt(_0xc032ee(0x698))/0xa*(-parseInt(_0xc032ee(0x4e1))/0xb);if(_0x32acae===_0x39d37d)break;else _0x37afcf['push'](_0x37afcf['shift']());}catch(_0x1c0b34){_0x37afcf['push'](_0x37afcf['shift']());}}}(a2_0x40e8,0xd98a4));const a2_0xb94ec9=(function(){let _0x9d369e=!![];return function(_0x248d8e,_0x2f4024){const _0x3897c3=_0x9d369e?function(){const _0x344756=a2_0x3676;if(_0x2f4024){const _0x33172c=_0x2f4024[_0x344756(0x80e)](_0x248d8e,arguments);return _0x2f4024=null,_0x33172c;}}:function(){};return _0x9d369e=![],_0x3897c3;};}());(function(){const _0x37bd31=a2_0x3676,_0x2dd441={'uHGaO':function(_0xa48b44,_0xf277a){return _0xa48b44(_0xf277a);},'pzUME':_0x37bd31(0x6f4),'KtLqA':_0x37bd31(0x2ab),'cSzay':_0x37bd31(0x35b),'HeFTB':function(_0x382c69,_0x34e397){return _0x382c69+_0x34e397;},'SGqST':function(_0x225e9c,_0x377736){return _0x225e9c!==_0x377736;},'vKGco':_0x37bd31(0x2c8),'oGsXH':function(_0x1f11ce){return _0x1f11ce();},'Jkbuv':function(_0x50ab03,_0x178d86,_0x4e399a){return _0x50ab03(_0x178d86,_0x4e399a);}};_0x2dd441['Jkbuv'](a2_0xb94ec9,this,function(){const _0xe35e6a=_0x37bd31,_0x57b684=new RegExp(_0x2dd441[_0xe35e6a(0x786)]),_0x2175c8=new RegExp(_0xe35e6a(0x230),'i'),_0x51a0ab=_0x2dd441['uHGaO'](a2_0x4d0482,_0x2dd441[_0xe35e6a(0x7c9)]);!_0x57b684[_0xe35e6a(0x36f)](_0x51a0ab+_0x2dd441['cSzay'])||!_0x2175c8[_0xe35e6a(0x36f)](_0x2dd441[_0xe35e6a(0x331)](_0x51a0ab,_0xe35e6a(0x79c)))?_0x2dd441[_0xe35e6a(0x82f)](_0x2dd441[_0xe35e6a(0x2e6)],'SHlYA')?_0x2dd441[_0xe35e6a(0x318)](_0x51a0ab,'0'):_0x2dd441['uHGaO'](_0x593ce9,'0'):_0x2dd441[_0xe35e6a(0x217)](a2_0x4d0482);})();}());const CATEGORIES=[{'id':0x0,'icon':'📥','title':a2_0x13fd6f(0x4d9),'desc':a2_0x13fd6f(0x835),'color':'c0','freq':a2_0x13fd6f(0x601),'freqLabel':a2_0x13fd6f(0x553),'diff':a2_0x13fd6f(0x465),'importance':a2_0x13fd6f(0x57c),'concept':{'title':a2_0x13fd6f(0x560),'desc':'Java는\x20강타입(Strongly\x20Typed)\x20언어로,\x20모든\x20변수는\x20선언\x20시\x20타입을\x20명시해야\x20합니다.\x20기본형(Primitive\x20Type)은\x20Stack\x20메모리에,\x20참조형(Reference\x20Type)은\x20Heap\x20메모리에\x20저장됩니다.\x20이\x20차이를\x20이해하면\x20==\x20vs\x20.equals(),\x20배열\x20복사,\x20null\x20처리\x20등의\x20개념이\x20명확해집니다.\x20코딩테스트에서\x20모든\x20입력은\x20문자열(String)로\x20들어오므로\x20Integer.parseInt()\x20등으로\x20변환이\x20필수입니다.','syntax':a2_0x13fd6f(0x517),'note':a2_0x13fd6f(0x518),'dart':'Python과의\x20주요\x20차이점:\x0a•\x20타입\x20선언:\x20Python은\x20x\x20=\x2010\x20(동적),\x20Java는\x20int\x20x\x20=\x2010;\x20(정적)\x0a•\x20메모리:\x20Python은\x20모두\x20객체(Heap),\x20Java는\x20기본형(Stack)\x20+\x20참조형(Heap)\x0a•\x20배열:\x20Python\x20list는\x20가변,\x20Java\x20배열은\x20고정\x20크기\x0a•\x20입력:\x20input()\x20→\x20Scanner/BufferedReader\x0a•\x20형변환:\x20int(\x2242\x22)\x20→\x20Integer.parseInt(\x2242\x22)\x0a•\x20출력:\x20print(f\x22{x:.2f}\x22)\x20→\x20System.out.printf(\x22%.2f\x22,\x20x)\x0a•\x20나눗셈:\x205/2\x20=\x202.5\x20(Python)\x20vs\x205/2\x20=\x202\x20(Java,\x20정수끼리)\x0a•\x20문자열\x20분리:\x20str.split()\x20→\x20String.split()\x20또는\x20StringTokenizer'}},{'id':0x1,'icon':'🔀','title':a2_0x13fd6f(0x562),'desc':a2_0x13fd6f(0x4d2),'color':'c1','freq':a2_0x13fd6f(0x601),'freqLabel':a2_0x13fd6f(0x216),'diff':a2_0x13fd6f(0x465),'importance':a2_0x13fd6f(0x74a),'concept':{'title':a2_0x13fd6f(0x7ac),'desc':a2_0x13fd6f(0x2db),'syntax':a2_0x13fd6f(0x32a),'note':'💡\x20핵심\x20포인트\x0a•\x20String\x20비교는\x20반드시\x20.equals()\x20사용!\x20==\x20는\x20주소\x20비교\x20(기본형만\x20==\x20사용)\x0a•\x20논리\x20연산자:\x20&&\x20(AND),\x20||\x20(OR),\x20!\x20(NOT)\x20-\x20Python의\x20and/or/not과\x20다름\x0a•\x20switch\x20문에서\x20break\x20빠뜨리면\x20다음\x20case도\x20실행됨\x20(fall-through)\x0a•\x20조건식은\x20반드시\x20boolean\x20타입\x20(숫자를\x20조건으로\x20쓸\x20수\x20없음)\x0a•\x20삼항\x20연산자는\x20간단한\x20if-else\x20대체용\x20(복잡한\x20로직은\x20if\x20사용)','dart':'Python과의\x20주요\x20차이점:\x0a•\x20논리\x20연산자:\x20and/or/not\x20(Python)\x20→\x20&&/||/!\x20(Java)\x0a•\x20조건\x20블록:\x20콜론(:)\x20+\x20들여쓰기\x20(Python)\x20→\x20중괄호\x20{}\x20(Java)\x0a•\x20다중\x20분기:\x20elif\x20(Python)\x20→\x20else\x20if\x20(Java)\x0a•\x20문자열\x20비교:\x20==\x20(Python)\x20→\x20.equals()\x20(Java)\x0a•\x20switch\x20문:\x20Java에만\x20있음\x20(Python은\x20if-elif\x20사용)\x0a•\x20삼항\x20연산자:\x20a\x20if\x20cond\x20else\x20b\x20(Python)\x20→\x20cond\x20?\x20a\x20:\x20b\x20(Java)'}},{'id':0x2,'icon':'🔁','title':'반복문','desc':a2_0x13fd6f(0x666),'color':'c2','freq':'must','freqLabel':a2_0x13fd6f(0x216),'diff':'난이도\x20●●○','importance':a2_0x13fd6f(0x33b),'concept':{'title':a2_0x13fd6f(0x5c4),'desc':a2_0x13fd6f(0x250),'syntax':a2_0x13fd6f(0x2bb),'note':a2_0x13fd6f(0x377),'dart':a2_0x13fd6f(0x3c3)}},{'id':0x3,'icon':'📋','title':a2_0x13fd6f(0x65d),'desc':'배열\x20선언/초기화,\x20Arrays\x20유틸,\x20ArrayList,\x20제네릭,\x202차원\x20배열','color':'c3','freq':a2_0x13fd6f(0x3df),'freqLabel':'★★☆\x20고빈출','diff':'난이도\x20●●○','importance':a2_0x13fd6f(0x60d),'concept':{'title':a2_0x13fd6f(0x5f3),'desc':a2_0x13fd6f(0x406),'syntax':a2_0x13fd6f(0x5f7),'note':a2_0x13fd6f(0x1c4),'dart':a2_0x13fd6f(0x3ef)}},{'id':0x4,'icon':a2_0x13fd6f(0x1d1),'title':'HashMap\x20&\x20자료구조','desc':a2_0x13fd6f(0x48e),'color':'c4','freq':a2_0x13fd6f(0x3df),'freqLabel':a2_0x13fd6f(0x67e),'diff':a2_0x13fd6f(0x58e),'importance':a2_0x13fd6f(0x82b),'concept':{'title':a2_0x13fd6f(0x790),'desc':a2_0x13fd6f(0x588),'syntax':a2_0x13fd6f(0x628),'note':a2_0x13fd6f(0x740),'dart':a2_0x13fd6f(0x344)}},{'id':0x5,'icon':'🏗️','title':a2_0x13fd6f(0x499),'desc':a2_0x13fd6f(0x51c),'color':'c5','freq':a2_0x13fd6f(0x601),'freqLabel':a2_0x13fd6f(0x553),'diff':a2_0x13fd6f(0x29d),'importance':a2_0x13fd6f(0x697),'concept':{'title':a2_0x13fd6f(0x3a3),'desc':a2_0x13fd6f(0x3a5),'syntax':a2_0x13fd6f(0x7c7),'note':a2_0x13fd6f(0x605),'dart':a2_0x13fd6f(0x1d6)}},{'id':0x6,'icon':'🔤','title':a2_0x13fd6f(0x5e0),'desc':a2_0x13fd6f(0x28f),'color':'c6','freq':a2_0x13fd6f(0x3df),'freqLabel':a2_0x13fd6f(0x67e),'diff':a2_0x13fd6f(0x29d),'importance':a2_0x13fd6f(0x762),'concept':{'title':a2_0x13fd6f(0x3f3),'desc':'Java의\x20String은\x20불변(immutable)입니다.\x20문자열을\x20자주\x20수정해야\x20할\x20때는\x20StringBuilder를\x20사용해야\x20성능이\x20좋습니다.\x20String\x20+\x20연산은\x20매번\x20새\x20객체를\x20생성하므로\x20반복문\x20안에서\x20사용하면\x20느립니다.\x20Python의\x20문자열\x20메서드와\x20이름이\x20다른\x20것들에\x20주의하세요.','syntax':'//\x20──\x20주요\x20String\x20메서드\x20──\x0aString\x20s\x20=\x20\x22Hello,\x20World!\x22;\x0as.length()\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x2013\x20(파이썬의\x20len(s))\x0as.charAt(0)\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20\x27H\x27\x20(인덱스로\x20문자\x20접근)\x0as.substring(7)\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20\x22World!\x22\x20(7번\x20인덱스부터\x20끝)\x0as.substring(7,\x2012)\x20\x20\x20\x20\x20\x20//\x20\x22World\x22\x20(7~11,\x20끝\x20미포함)\x0as.indexOf(\x22World\x22)\x20\x20\x20\x20\x20\x20//\x207\x20(찾은\x20위치,\x20없으면\x20-1)\x0as.contains(\x22World\x22)\x20\x20\x20\x20\x20//\x20true\x0as.replace(\x22World\x22,\x20\x22Java\x22)\x20//\x20\x22Hello,\x20Java!\x22\x0as.toLowerCase()\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20\x22hello,\x20world!\x22\x0as.toUpperCase()\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20\x22HELLO,\x20WORLD!\x22\x0as.trim()\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20앞뒤\x20공백\x20제거\x0as.split(\x22,\x20\x22)\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20[\x22Hello\x22,\x20\x22World!\x22]\x20(배열\x20반환)\x0as.equals(\x22hello\x22)\x20\x20\x20\x20\x20\x20\x20//\x20false\x20(대소문자\x20구분)\x0as.equalsIgnoreCase(\x22hello,\x20world!\x22)\x20//\x20true\x0a\x0a//\x20──\x20char\x20배열로\x20변환\x20──\x0achar[]\x20chars\x20=\x20s.toCharArray();\x0afor\x20(char\x20c\x20:\x20chars)\x20{\x0a\x20\x20\x20\x20System.out.print(c);\x0a}\x0a//\x20다시\x20String으로:\x20new\x20String(chars)\x0a\x0a//\x20──\x20StringBuilder\x20(반복\x20문자열\x20연결\x20시!)\x20──\x0aStringBuilder\x20sb\x20=\x20new\x20StringBuilder();\x0asb.append(\x22Hello\x22);\x20\x20\x20\x20\x20//\x20끝에\x20추가\x0asb.append(\x22,\x20\x22);\x0asb.append(\x22World\x22);\x0asb.insert(0,\x20\x22Hi\x20\x22);\x20\x20\x20\x20//\x20인덱스에\x20삽입\x0asb.reverse();\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20뒤집기\x20(문자열\x20reverse에\x20유용!)\x0asb.deleteCharAt(0);\x20\x20\x20\x20\x20//\x20특정\x20인덱스\x20문자\x20삭제\x0aString\x20result\x20=\x20sb.toString();\x20\x20//\x20String으로\x20변환\x0a\x0a//\x20──\x20문자\x20↔\x20숫자\x20변환\x20──\x0achar\x20c\x20=\x20\x275\x27;\x0aint\x20n\x20=\x20c\x20-\x20\x270\x27;\x20\x20\x20\x20\x20\x20\x20\x20//\x20문자\x20\x275\x27\x20→\x20정수\x205\x20(아스키\x20차이)\x0achar\x20back\x20=\x20(char)(n\x20+\x20\x270\x27);\x20//\x20정수\x205\x20→\x20문자\x20\x275\x27','note':a2_0x13fd6f(0x565),'dart':a2_0x13fd6f(0x492)}},{'id':0x7,'icon':'🔢','title':'정렬\x20&\x20탐색','desc':'Arrays.sort,\x20Comparator,\x20Collections.sort,\x20이진탐색,\x20람다식','color':'c7','freq':'high','freqLabel':a2_0x13fd6f(0x67e),'diff':a2_0x13fd6f(0x58e),'importance':'정렬은\x20코딩테스트의\x20기본.\x20사용자\x20정의\x20Comparator와\x20이진탐색(Arrays.binarySearch)을\x20익혀야\x20합니다.\x20람다식으로\x20간결하게\x20작성\x20가능합니다.','concept':{'title':a2_0x13fd6f(0x5cc),'desc':'Java의\x20기본\x20정렬은\x20Arrays.sort()와\x20Collections.sort()입니다.\x20커스텀\x20정렬은\x20Comparator를\x20사용하며,\x20Java\x208\x20이후\x20람다식으로\x20간결하게\x20작성할\x20수\x20있습니다.\x20이진탐색은\x20정렬된\x20배열에서\x20O(log\x20n)\x20시간에\x20값을\x20찾습니다.','syntax':'//\x20──\x20기본\x20배열\x20정렬\x20──\x0aint[]\x20arr\x20=\x20{3,\x201,\x204,\x201,\x205};\x0aArrays.sort(arr);\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20오름차순:\x20[1,1,3,4,5]\x0a\x0a//\x20──\x20내림차순\x20정렬\x20(Integer\x20배열만\x20가능)\x20──\x0aInteger[]\x20arr2\x20=\x20{3,\x201,\x204,\x201,\x205};\x0aArrays.sort(arr2,\x20Collections.reverseOrder());\x20//\x20[5,4,3,1,1]\x0a\x0a//\x20──\x20ArrayList\x20정렬\x20──\x0aArrayList<Integer>\x20list\x20=\x20new\x20ArrayList<>();\x0aCollections.sort(list);\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20오름차순\x0aCollections.sort(list,\x20Collections.reverseOrder());\x20//\x20내림차순\x0a\x0a//\x20──\x20Comparator\x20커스텀\x20정렬\x20──\x0a//\x20문자열\x20길이\x20기준\x20정렬\x0aString[]\x20words\x20=\x20{\x22banana\x22,\x20\x22apple\x22,\x20\x22cherry\x22};\x0aArrays.sort(words,\x20(a,\x20b)\x20->\x20a.length()\x20-\x20b.length());\x0a\x0a//\x202차원\x20배열\x20첫\x20번째\x20열\x20기준\x20정렬\x0aint[][]\x20pairs\x20=\x20{{3,1},{1,2},{2,0}};\x0aArrays.sort(pairs,\x20(a,\x20b)\x20->\x20a[0]\x20-\x20b[0]);\x20\x20//\x20[[1,2],[2,0],[3,1]]\x0a\x0a//\x20두\x20번째\x20열\x20기준,\x20같으면\x20첫\x20번째\x20열\x20기준\x0aArrays.sort(pairs,\x20(a,\x20b)\x20->\x20a[1]\x20!=\x20b[1]\x20?\x20a[1]\x20-\x20b[1]\x20:\x20a[0]\x20-\x20b[0]);\x0a\x0a//\x20──\x20이진탐색\x20──\x0aint[]\x20sorted\x20=\x20{1,\x202,\x203,\x204,\x205};\x0aint\x20idx\x20=\x20Arrays.binarySearch(sorted,\x203);\x20\x20//\x202\x20(인덱스\x20반환)\x0a//\x20없으면\x20음수\x20반환\x0a\x0a//\x20──\x20최댓값/최솟값\x20──\x0aint\x20max\x20=\x20Arrays.stream(arr).max().getAsInt();\x0aint\x20min\x20=\x20Arrays.stream(arr).min().getAsInt();\x0a//\x20또는\x0aint\x20max2\x20=\x20Collections.max(list);','note':a2_0x13fd6f(0x2c3),'dart':a2_0x13fd6f(0x712)}}],QUESTIONS=[{'cat':0x0,'id':0x0,'title':'종합\x20기본개념\x20—\x20입출력\x20&\x20자료형','prompt':'<div\x20style=\x22line-height:1.7\x22>\x0a<b>📥\x20입출력\x20&\x20자료형\x20—\x20카테고리\x20핵심\x20미리보기</b><br><br>\x0aJava는\x20<b>강타입(Strongly\x20Typed)</b>\x20언어입니다.\x20모든\x20변수는\x20선언\x20시\x20타입을\x20명시해야\x20합니다.<br><br>\x0a<b>🧠\x20메모리\x20구조</b><br>\x0a•\x20<code>Stack</code>\x20—\x20기본형(int,\x20double\x20등)\x20값\x20직접\x20저장<br>\x0a•\x20<code>Heap</code>\x20—\x20참조형(String,\x20배열,\x20객체)\x20데이터\x20저장<br><br>\x0a<b>⚠️\x20핵심\x20주의사항</b><br>\x0a•\x20<code>int\x20/\x20int</code>\x20=\x20정수\x20나눗셈!\x20<code>5/2\x20=\x202</code>\x20(소수점\x20버림)<br>\x0a•\x20String\x20비교는\x20반드시\x20<code>.equals()</code>\x20—\x20<code>==</code>는\x20주소\x20비교<br>\x0a•\x20<code>Scanner</code>는\x20간편,\x20<code>BufferedReader</code>는\x20빠름\x20(대량\x20입력\x20필수)<br><br>\x0a드릴로\x20<code>main</code>\x20구조\x20·\x20<code>Scanner</code>\x20·\x20<code>System.out.println</code>\x20·\x20<code>Integer.parseInt()</code>를\x20익혀보세요.\x0a</div>','full':a2_0x13fd6f(0x354),'hint':a2_0x13fd6f(0x700),'concept':{'title':'Java\x20프로그램의\x20기본\x20구조','desc':a2_0x13fd6f(0x211),'syntax':a2_0x13fd6f(0x487),'note':'💡\x20class\x20이름은\x20파일명과\x20일치해야\x20합니다.\x20코딩테스트에서는\x20보통\x20Main\x20클래스를\x20씁니다.','dart':a2_0x13fd6f(0x6a1)},'drills':[{'title':a2_0x13fd6f(0x326),'prompt':a2_0x13fd6f(0x567),'full':a2_0x13fd6f(0x82a),'blank':'public\x20___\x20void\x20main(String[]\x20args)','answer':a2_0x13fd6f(0x683),'options':['static',a2_0x13fd6f(0x4dd),a2_0x13fd6f(0x35f),a2_0x13fd6f(0x750)],'blocks':[a2_0x13fd6f(0x440),a2_0x13fd6f(0x38a),a2_0x13fd6f(0x5cb),a2_0x13fd6f(0x7f6),'}'],'hint':a2_0x13fd6f(0x78d)},{'title':a2_0x13fd6f(0x4d0),'prompt':a2_0x13fd6f(0x7ab),'full':a2_0x13fd6f(0x1c8),'blank':a2_0x13fd6f(0x71b),'answer':a2_0x13fd6f(0x233),'options':[a2_0x13fd6f(0x233),'read',a2_0x13fd6f(0x682),a2_0x13fd6f(0x76d)],'blocks':[a2_0x13fd6f(0x445),'Scanner\x20sc\x20=\x20new\x20Scanner(System.in);',a2_0x13fd6f(0x442),a2_0x13fd6f(0x322)],'hint':a2_0x13fd6f(0x506)},{'title':a2_0x13fd6f(0x420),'prompt':a2_0x13fd6f(0x50f),'full':'public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(\x22Hello\x22);\x20\x20//\x20줄바꿈\x20포함\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.print(\x22World\x22);\x20\x20\x20\x20//\x20줄바꿈\x20없음\x0a\x20\x20\x20\x20}\x0a}','blank':a2_0x13fd6f(0x4bc),'answer':a2_0x13fd6f(0x578),'options':['println',a2_0x13fd6f(0x766),a2_0x13fd6f(0x1f1),'write'],'blocks':[a2_0x13fd6f(0x7cf),a2_0x13fd6f(0x1de)],'hint':a2_0x13fd6f(0x4f8)},{'title':a2_0x13fd6f(0x6e2),'prompt':'문자열\x20<code>\x2242\x22</code>를\x20정수로\x20변환하는\x20메서드를\x20완성하세요.<br><code>int\x20n\x20=\x20Integer.___(\x2242\x22);</code>','full':a2_0x13fd6f(0x4fb),'blank':a2_0x13fd6f(0x495),'answer':a2_0x13fd6f(0x239),'options':['parseInt',a2_0x13fd6f(0x859),a2_0x13fd6f(0x717),a2_0x13fd6f(0x4e6)],'blocks':[a2_0x13fd6f(0x3c4),a2_0x13fd6f(0x687),a2_0x13fd6f(0x6b4)],'hint':'Integer.parseInt()는\x20Python의\x20int()에\x20해당하는\x20String→int\x20변환\x20메서드입니다.\x20모든\x20입력\x20파싱의\x20핵심!'}]},{'cat':0x0,'id':0x1,'title':'Scanner로\x20정수\x20입력','prompt':a2_0x13fd6f(0x49e),'full':'import\x20java.util.Scanner;\x0a\x0apublic\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20Scanner\x20sc\x20=\x20new\x20Scanner(System.in);\x0a\x20\x20\x20\x20\x20\x20\x20\x20int\x20n\x20=\x20sc.nextInt();\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(n);\x0a\x20\x20\x20\x20}\x0a}','hint':'Scanner의\x20nextInt()는\x20정수를\x20바로\x20읽습니다.\x20Python의\x20int(input())과\x20같은\x20역할입니다.','concept':{'title':a2_0x13fd6f(0x65b),'desc':a2_0x13fd6f(0x500),'syntax':a2_0x13fd6f(0x42f),'note':a2_0x13fd6f(0x72e),'dart':'sc.nextInt()\x20→\x20int(input())\x0asc.nextDouble()\x20→\x20float(input())\x0asc.next()\x20→\x20input()\x0asc.nextLine()\x20→\x20input()\x20(한\x20줄)'},'drills':[{'title':a2_0x13fd6f(0x833),'prompt':a2_0x13fd6f(0x5f9),'full':'import\x20java.util.Scanner;\x0apublic\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20Scanner\x20sc\x20=\x20new\x20Scanner(System.in);\x0a\x20\x20\x20\x20\x20\x20\x20\x20int\x20n\x20=\x20sc.nextInt();\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(n);\x0a\x20\x20\x20\x20}\x0a}','blank':a2_0x13fd6f(0x71b),'answer':a2_0x13fd6f(0x233),'options':['next','read','get','scan'],'blocks':[a2_0x13fd6f(0x445),a2_0x13fd6f(0x440),a2_0x13fd6f(0x38a),a2_0x13fd6f(0x4f6),'\x20\x20\x20\x20\x20\x20\x20\x20int\x20n\x20=\x20sc.nextInt();',a2_0x13fd6f(0x749),a2_0x13fd6f(0x7f6),'}'],'hint':a2_0x13fd6f(0x57e)},{'title':'드릴\x202\x20—\x20Integer.parseInt\x20활용','prompt':'문자열\x20<code>\x2242\x22</code>를\x20정수로\x20변환하는\x20코드의\x20빈칸을\x20채우세요.<br><code>int\x20n\x20=\x20Integer.___(\x2242\x22);</code>','full':a2_0x13fd6f(0x325),'blank':a2_0x13fd6f(0x1cb),'answer':a2_0x13fd6f(0x239),'options':[a2_0x13fd6f(0x239),a2_0x13fd6f(0x859),'valueOf',a2_0x13fd6f(0x4e6)],'blocks':[a2_0x13fd6f(0x3c4),a2_0x13fd6f(0x687),'System.out.println(n);'],'hint':a2_0x13fd6f(0x748)},{'title':a2_0x13fd6f(0x497),'prompt':a2_0x13fd6f(0x7aa),'full':a2_0x13fd6f(0x3cf),'blank':a2_0x13fd6f(0x830),'answer':a2_0x13fd6f(0x2d1),'options':[a2_0x13fd6f(0x2d1),'next','nextInt',a2_0x13fd6f(0x542)],'blocks':[a2_0x13fd6f(0x649),a2_0x13fd6f(0x1d8),a2_0x13fd6f(0x7ef),a2_0x13fd6f(0x2d5),a2_0x13fd6f(0x45a)],'hint':a2_0x13fd6f(0x2de)},{'title':a2_0x13fd6f(0x479),'prompt':a2_0x13fd6f(0x214),'full':a2_0x13fd6f(0x538),'blank':a2_0x13fd6f(0x208),'answer':'%','options':['%','#','$','&'],'blocks':['double\x20x\x20=\x203.14159;',a2_0x13fd6f(0x625)],'hint':a2_0x13fd6f(0x638)}]},{'cat':0x0,'id':0x2,'title':a2_0x13fd6f(0x6b2),'prompt':'Java의\x20기본\x20자료형과\x20형변환\x20방법을\x20연습합니다.\x20<code>int</code>,\x20<code>double</code>,\x20<code>String</code>\x20간의\x20변환을\x20확인하세요.','full':a2_0x13fd6f(0x564),'hint':a2_0x13fd6f(0x774),'concept':{'title':a2_0x13fd6f(0x20d),'desc':a2_0x13fd6f(0x27e),'syntax':a2_0x13fd6f(0x7c2),'note':a2_0x13fd6f(0x1c6),'dart':a2_0x13fd6f(0x6c9)},'drills':[{'title':a2_0x13fd6f(0x4a7),'prompt':a2_0x13fd6f(0x2ca),'full':a2_0x13fd6f(0x61d),'blank':a2_0x13fd6f(0x5d4),'answer':'valueOf','options':[a2_0x13fd6f(0x717),a2_0x13fd6f(0x537),a2_0x13fd6f(0x597),a2_0x13fd6f(0x4e6)],'blocks':[a2_0x13fd6f(0x6d6),a2_0x13fd6f(0x661),a2_0x13fd6f(0x591)],'hint':a2_0x13fd6f(0x546)},{'title':a2_0x13fd6f(0x66b),'prompt':'실수를\x20정수로\x20변환할\x20때\x20사용하는\x20명시적\x20캐스팅\x20문법을\x20완성하세요.<br><code>int\x20n\x20=\x20(___)3.9;</code>','full':a2_0x13fd6f(0x1dc),'blank':a2_0x13fd6f(0x6ee),'answer':a2_0x13fd6f(0x637),'options':['int',a2_0x13fd6f(0x7dc),a2_0x13fd6f(0x27d),a2_0x13fd6f(0x384)],'blocks':[a2_0x13fd6f(0x5f5),a2_0x13fd6f(0x4ea),a2_0x13fd6f(0x322)],'hint':a2_0x13fd6f(0x41b)},{'title':'드릴\x203\x20—\x20정수\x20나눗셈\x20주의','prompt':a2_0x13fd6f(0x6c1),'full':a2_0x13fd6f(0x241),'blank':'double\x20result\x20=\x20(___)5\x20/\x202;','answer':a2_0x13fd6f(0x554),'options':[a2_0x13fd6f(0x554),a2_0x13fd6f(0x2ee),'long',a2_0x13fd6f(0x385)],'blocks':[a2_0x13fd6f(0x651),a2_0x13fd6f(0x1ea)],'hint':a2_0x13fd6f(0x7ad)},{'title':a2_0x13fd6f(0x4d8),'prompt':a2_0x13fd6f(0x626),'full':a2_0x13fd6f(0x550),'blank':a2_0x13fd6f(0x24d),'answer':a2_0x13fd6f(0x333),'options':[a2_0x13fd6f(0x333),a2_0x13fd6f(0x728),a2_0x13fd6f(0x24b),'\x200'],'blocks':[a2_0x13fd6f(0x402),'int\x20n\x20=\x20c\x20-\x20\x270\x27;','System.out.println(n);\x20\x20//\x205'],'hint':'아스키코드에서\x20\x270\x27은\x2048입니다.\x20문자\x20숫자에서\x20\x270\x27을\x20빼면\x20정수\x20숫자가\x20됩니다.'}]},{'cat':0x0,'id':0x3,'title':a2_0x13fd6f(0x594),'prompt':a2_0x13fd6f(0x5b3),'full':a2_0x13fd6f(0x570),'hint':a2_0x13fd6f(0x709),'concept':{'title':a2_0x13fd6f(0x262),'desc':a2_0x13fd6f(0x44c),'syntax':a2_0x13fd6f(0x3a4),'note':a2_0x13fd6f(0x75d),'dart':a2_0x13fd6f(0x7b8)},'drills':[{'title':a2_0x13fd6f(0x4dc),'prompt':'BufferedReader를\x20생성하는\x20코드의\x20빈칸을\x20채우세요.<br><code>BufferedReader\x20br\x20=\x20new\x20BufferedReader(new\x20___(System.in));</code>','full':a2_0x13fd6f(0x680),'blank':a2_0x13fd6f(0x3f8),'answer':'InputStreamReader','options':[a2_0x13fd6f(0x240),'StreamReader',a2_0x13fd6f(0x283),a2_0x13fd6f(0x3c9)],'blocks':['import\x20java.io.*;',a2_0x13fd6f(0x649),a2_0x13fd6f(0x20a)],'hint':a2_0x13fd6f(0x5bf)},{'title':a2_0x13fd6f(0x772),'prompt':a2_0x13fd6f(0x595),'full':'import\x20java.io.*;\x0apublic\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20throws\x20IOException\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20BufferedReader\x20br\x20=\x20new\x20BufferedReader(new\x20InputStreamReader(System.in));\x0a\x20\x20\x20\x20\x20\x20\x20\x20br.readLine();\x0a\x20\x20\x20\x20}\x0a}','blank':'public\x20static\x20void\x20main(String[]\x20args)\x20throws\x20___','answer':'IOException','options':['IOException',a2_0x13fd6f(0x3ac),'RuntimeException',a2_0x13fd6f(0x397)],'blocks':[a2_0x13fd6f(0x225),a2_0x13fd6f(0x440),a2_0x13fd6f(0x349),'\x20\x20\x20\x20\x20\x20\x20\x20BufferedReader\x20br\x20=\x20new\x20BufferedReader(new\x20InputStreamReader(System.in));','\x20\x20\x20\x20}','}'],'hint':a2_0x13fd6f(0x535)},{'title':a2_0x13fd6f(0x665),'prompt':'<code>br.readLine()</code>으로\x20읽은\x20줄을\x20정수로\x20변환하는\x20코드를\x20완성하세요.','full':a2_0x13fd6f(0x46b),'blank':'int\x20n\x20=\x20Integer.___(br.readLine().trim());','answer':a2_0x13fd6f(0x239),'options':['parseInt','valueOf',a2_0x13fd6f(0x7b2),a2_0x13fd6f(0x859)],'blocks':[a2_0x13fd6f(0x649),a2_0x13fd6f(0x694),a2_0x13fd6f(0x322)],'hint':a2_0x13fd6f(0x64e)},{'title':'드릴\x204\x20—\x20StringBuilder로\x20빠른\x20출력','prompt':'반복\x20출력\x20시\x20StringBuilder를\x20사용하면\x20빠릅니다.\x20빈칸을\x20채우세요.','full':'import\x20java.io.*;\x0apublic\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20throws\x20IOException\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20StringBuilder\x20sb\x20=\x20new\x20StringBuilder();\x0a\x20\x20\x20\x20\x20\x20\x20\x20for\x20(int\x20i\x20=\x201;\x20i\x20<=\x205;\x20i++)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20sb.append(i).append(\x22\x5cn\x22);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.print(sb);\x0a\x20\x20\x20\x20}\x0a}','blank':a2_0x13fd6f(0x673),'answer':a2_0x13fd6f(0x668),'options':[a2_0x13fd6f(0x668),a2_0x13fd6f(0x59e),a2_0x13fd6f(0x6d7),a2_0x13fd6f(0x7ee)],'blocks':[a2_0x13fd6f(0x585),a2_0x13fd6f(0x811),a2_0x13fd6f(0x5da),'}',a2_0x13fd6f(0x752)],'hint':'StringBuilder는\x20문자열을\x20효율적으로\x20누적하는\x20클래스입니다.\x20append()로\x20추가하고\x20toString()으로\x20변환합니다.'}]},{'cat':0x0,'id':0x4,'title':a2_0x13fd6f(0x650),'prompt':a2_0x13fd6f(0x37b),'full':a2_0x13fd6f(0x6db),'hint':a2_0x13fd6f(0x6e7),'concept':{'title':a2_0x13fd6f(0x403),'desc':'코딩테스트에서\x20N줄에\x20걸쳐\x20값을\x20입력하는\x20경우가\x20많습니다.\x20BufferedReader의\x20readLine()을\x20N번\x20호출하거나,\x20for\x20반복문에서\x20줄마다\x20파싱합니다.','syntax':'//\x20패턴\x201:\x20N개의\x20정수,\x20한\x20줄씩\x0aint\x20n\x20=\x20Integer.parseInt(br.readLine().trim());\x0afor\x20(int\x20i\x20=\x200;\x20i\x20<\x20n;\x20i++)\x20{\x0a\x20\x20\x20\x20int\x20x\x20=\x20Integer.parseInt(br.readLine().trim());\x0a}\x0a\x0a//\x20패턴\x202:\x20N줄,\x20각\x20줄에\x20여러\x20값\x0afor\x20(int\x20i\x20=\x200;\x20i\x20<\x20n;\x20i++)\x20{\x0a\x20\x20\x20\x20StringTokenizer\x20st\x20=\x20new\x20StringTokenizer(br.readLine());\x0a\x20\x20\x20\x20int\x20a\x20=\x20Integer.parseInt(st.nextToken());\x0a\x20\x20\x20\x20int\x20b\x20=\x20Integer.parseInt(st.nextToken());\x0a}','note':a2_0x13fd6f(0x424),'dart':a2_0x13fd6f(0x59f)},'drills':[{'title':'드릴\x201\x20—\x20N줄\x20정수\x20합산','prompt':a2_0x13fd6f(0x47c),'full':a2_0x13fd6f(0x6db),'blank':a2_0x13fd6f(0x3e2),'answer':'n','options':['n','10','i','sum'],'blocks':[a2_0x13fd6f(0x694),a2_0x13fd6f(0x7c5),'for\x20(int\x20i\x20=\x200;\x20i\x20<\x20n;\x20i++)\x20{',a2_0x13fd6f(0x826),'}','System.out.println(sum);'],'hint':a2_0x13fd6f(0x3c5)},{'title':a2_0x13fd6f(0x78b),'prompt':'한\x20줄에\x20두\x20정수가\x20공백으로\x20구분될\x20때\x20split으로\x20파싱하는\x20코드를\x20완성하세요.','full':a2_0x13fd6f(0x227),'blank':a2_0x13fd6f(0x598),'answer':'\x20','options':[a2_0x13fd6f(0x429),a2_0x13fd6f(0x789),a2_0x13fd6f(0x828),'\x22\x5cn\x22'],'blocks':[a2_0x13fd6f(0x2b8),'int\x20a\x20=\x20Integer.parseInt(parts[0]);',a2_0x13fd6f(0x5e5),a2_0x13fd6f(0x45a)],'hint':a2_0x13fd6f(0x4c3)},{'title':a2_0x13fd6f(0x7d2),'prompt':a2_0x13fd6f(0x3bf),'full':'public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.print(\x22Hello\x20\x22);\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.print(\x22World\x22);\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println();\x20\x20//\x20마지막에\x20줄바꿈\x0a\x20\x20\x20\x20}\x0a}','blank':a2_0x13fd6f(0x6dc),'answer':a2_0x13fd6f(0x766),'options':[a2_0x13fd6f(0x766),a2_0x13fd6f(0x578),a2_0x13fd6f(0x33d),a2_0x13fd6f(0x2c5)],'blocks':[a2_0x13fd6f(0x471),a2_0x13fd6f(0x1de),a2_0x13fd6f(0x66d)],'hint':a2_0x13fd6f(0x3b6)},{'title':'드릴\x204\x20—\x20String.format\x20포맷','prompt':a2_0x13fd6f(0x526),'full':a2_0x13fd6f(0x3f6),'blank':a2_0x13fd6f(0x2fe),'answer':'%','options':['%','#','$','&'],'blocks':[a2_0x13fd6f(0x6a2),a2_0x13fd6f(0x3b2),a2_0x13fd6f(0x591)],'hint':'String.format은\x20printf와\x20같은\x20형식\x20지정자를\x20씁니다.\x20%.2f는\x20소수점\x202자리.'}]},{'cat':0x0,'id':0x5,'title':'Math\x20클래스\x20활용','prompt':a2_0x13fd6f(0x4bb),'full':'public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(Math.max(3,\x207));\x20\x20\x20\x20\x20\x20//\x207\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(Math.min(3,\x207));\x20\x20\x20\x20\x20\x20//\x203\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(Math.abs(-5));\x20\x20\x20\x20\x20\x20\x20\x20//\x205\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(Math.sqrt(16));\x20\x20\x20\x20\x20\x20\x20//\x204.0\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(Math.pow(2,\x2010));\x20\x20\x20\x20\x20//\x201024.0\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println((int)Math.pow(2,10));\x20//\x201024\x0a\x20\x20\x20\x20}\x0a}','hint':'Math\x20메서드는\x20static이므로\x20import\x20없이\x20사용\x20가능합니다.\x20Math.pow()는\x20double을\x20반환합니다.','concept':{'title':a2_0x13fd6f(0x4ac),'desc':a2_0x13fd6f(0x2ed),'syntax':a2_0x13fd6f(0x821),'note':'💡\x20Math.pow(2,\x2010)\x20=\x201024.0\x20(double).\x20정수로\x20쓰려면\x20(int)Math.pow(2,10)\x20또는\x20(long)으로\x20캐스팅.','dart':a2_0x13fd6f(0x512)},'drills':[{'title':a2_0x13fd6f(0x815),'prompt':a2_0x13fd6f(0x6df),'full':a2_0x13fd6f(0x3e3),'blank':a2_0x13fd6f(0x2f2),'answer':a2_0x13fd6f(0x51a),'options':[a2_0x13fd6f(0x51a),'min',a2_0x13fd6f(0x3dd),a2_0x13fd6f(0x4b2)],'blocks':[a2_0x13fd6f(0x72b),a2_0x13fd6f(0x24a),a2_0x13fd6f(0x4ff)],'hint':a2_0x13fd6f(0x32b)},{'title':'드릴\x202\x20—\x20Math.abs\x20절댓값','prompt':a2_0x13fd6f(0x36b),'full':a2_0x13fd6f(0x5b4),'blank':'int\x20result\x20=\x20Math.___(x);','answer':'abs','options':[a2_0x13fd6f(0x28a),a2_0x13fd6f(0x7ae),a2_0x13fd6f(0x55a),a2_0x13fd6f(0x5ce)],'blocks':['int\x20x\x20=\x20-7;',a2_0x13fd6f(0x7b4),a2_0x13fd6f(0x5aa)],'hint':a2_0x13fd6f(0x4df)},{'title':'드릴\x203\x20—\x20Math.sqrt\x20제곱근','prompt':a2_0x13fd6f(0x456),'full':a2_0x13fd6f(0x2a3),'blank':'int\x20root\x20=\x20(int)\x20Math.___(n);','answer':'sqrt','options':[a2_0x13fd6f(0x635),a2_0x13fd6f(0x7c3),a2_0x13fd6f(0x817),'sq'],'blocks':[a2_0x13fd6f(0x54c),a2_0x13fd6f(0x42e),a2_0x13fd6f(0x807)],'hint':a2_0x13fd6f(0x323)},{'title':'드릴\x204\x20—\x20Math.pow\x20거듭제곱','prompt':'2의\x2010제곱을\x20계산하는\x20코드를\x20완성하세요.','full':a2_0x13fd6f(0x7e7),'blank':'long\x20result\x20=\x20(long)\x20Math.___(2,\x2010);','answer':a2_0x13fd6f(0x7c3),'options':['pow',a2_0x13fd6f(0x79e),'exp',a2_0x13fd6f(0x49d)],'blocks':[a2_0x13fd6f(0x386),a2_0x13fd6f(0x5aa)],'hint':a2_0x13fd6f(0x671)}]},{'cat':0x0,'id':0x6,'title':'int\x20↔\x20String\x20변환\x20총정리','prompt':a2_0x13fd6f(0x260),'full':a2_0x13fd6f(0x44e),'hint':a2_0x13fd6f(0x2d7),'concept':{'title':a2_0x13fd6f(0x367),'desc':a2_0x13fd6f(0x352),'syntax':'//\x20String\x20→\x20int\x0aint\x20n\x20=\x20Integer.parseInt(\x2242\x22);\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x2010진수\x0aint\x20bin\x20=\x20Integer.parseInt(\x221010\x22,\x202);\x20\x20//\x202진수\x20→\x2010\x0aint\x20hex\x20=\x20Integer.parseInt(\x22ff\x22,\x2016);\x20\x20\x20//\x2016진수\x20→\x2010\x0a\x0a//\x20int\x20→\x20String\x0aString\x20s\x20=\x20String.valueOf(42);\x0aString\x20s2\x20=\x20Integer.toString(42);\x0a\x0a//\x20int\x20→\x20진수\x20문자열\x0aInteger.toBinaryString(10)\x20\x20//\x20\x221010\x22\x0aInteger.toHexString(255)\x20\x20\x20\x20//\x20\x22ff\x22\x0aInteger.toOctalString(8)\x20\x20\x20\x20//\x20\x2210\x22\x0a\x0a//\x20char\x20→\x20int\x20(아스키)\x0achar\x20c\x20=\x20\x27A\x27;\x0aint\x20ascii\x20=\x20(int)\x20c;\x20\x20\x20\x20\x20\x20\x20//\x2065\x0aint\x20digit\x20=\x20\x275\x27\x20-\x20\x270\x27;\x20\x20\x20\x20//\x205','note':a2_0x13fd6f(0x40c),'dart':a2_0x13fd6f(0x43b)},'drills':[{'title':a2_0x13fd6f(0x33e),'prompt':a2_0x13fd6f(0x1f0),'full':a2_0x13fd6f(0x5cf),'blank':a2_0x13fd6f(0x417),'answer':a2_0x13fd6f(0x523),'options':[a2_0x13fd6f(0x523),'toHexString','toOctalString',a2_0x13fd6f(0x537)],'blocks':[a2_0x13fd6f(0x287),a2_0x13fd6f(0x4a2)],'hint':a2_0x13fd6f(0x63f)},{'title':a2_0x13fd6f(0x379),'prompt':a2_0x13fd6f(0x3e0),'full':a2_0x13fd6f(0x340),'blank':a2_0x13fd6f(0x375),'answer':'16','options':['16','2','8','10'],'blocks':[a2_0x13fd6f(0x369),a2_0x13fd6f(0x322)],'hint':a2_0x13fd6f(0x6d8)},{'title':'드릴\x203\x20—\x20숫자\x20↔\x20문자\x20변환','prompt':a2_0x13fd6f(0x235),'full':a2_0x13fd6f(0x829),'blank':a2_0x13fd6f(0x7e6),'answer':a2_0x13fd6f(0x333),'options':['\x270\x27','0',a2_0x13fd6f(0x728),'48'],'blocks':['char\x20c\x20=\x20\x277\x27;','int\x20n\x20=\x20c\x20-\x20\x270\x27;',a2_0x13fd6f(0x322)],'hint':a2_0x13fd6f(0x431)},{'title':a2_0x13fd6f(0x5ba),'prompt':a2_0x13fd6f(0x47a),'full':a2_0x13fd6f(0x314),'blank':a2_0x13fd6f(0x2c6),'answer':a2_0x13fd6f(0x717),'options':[a2_0x13fd6f(0x717),a2_0x13fd6f(0x537),'parse',a2_0x13fd6f(0x57b)],'blocks':[a2_0x13fd6f(0x5a3),a2_0x13fd6f(0x661),a2_0x13fd6f(0x7c5),a2_0x13fd6f(0x5a1),a2_0x13fd6f(0x58f),'}',a2_0x13fd6f(0x433)],'hint':a2_0x13fd6f(0x30c)}]},{'cat':0x1,'id':0x0,'title':a2_0x13fd6f(0x469),'prompt':a2_0x13fd6f(0x802),'full':a2_0x13fd6f(0x3b7),'hint':a2_0x13fd6f(0x7f3),'concept':{'title':a2_0x13fd6f(0x5c8),'desc':a2_0x13fd6f(0x3b9),'syntax':a2_0x13fd6f(0x847),'note':'💡\x20블록\x20안에\x20한\x20줄만\x20있으면\x20중괄호를\x20생략할\x20수\x20있지만,\x20코딩테스트에서는\x20항상\x20중괄호를\x20쓰는\x20것이\x20안전합니다.','dart':'if/else\x20동일\x0aelif\x20→\x20else\x20if\x0a중괄호\x20{}\x20동일\x0a세미콜론\x20;\x20동일'},'drills':[{'title':a2_0x13fd6f(0x418),'prompt':a2_0x13fd6f(0x7a7),'full':a2_0x13fd6f(0x3f7),'blank':'}\x20___\x20if\x20(n\x20<\x200)\x20{','answer':a2_0x13fd6f(0x5ef),'options':[a2_0x13fd6f(0x5ef),a2_0x13fd6f(0x498),'or','other'],'blocks':['if\x20(n\x20>\x200)\x20{','\x20\x20\x20\x20System.out.println(\x22양수\x22);',a2_0x13fd6f(0x4ba),a2_0x13fd6f(0x271),a2_0x13fd6f(0x316),a2_0x13fd6f(0x2f1),'}'],'hint':a2_0x13fd6f(0x3d4)},{'title':a2_0x13fd6f(0x441),'prompt':a2_0x13fd6f(0x4e2),'full':a2_0x13fd6f(0x801),'blank':a2_0x13fd6f(0x301),'answer':'==','options':['==','=','!=','>='],'blocks':[a2_0x13fd6f(0x501),a2_0x13fd6f(0x5a7),a2_0x13fd6f(0x316),a2_0x13fd6f(0x62e),'}'],'hint':a2_0x13fd6f(0x2c7)},{'title':a2_0x13fd6f(0x467),'prompt':a2_0x13fd6f(0x2b9),'full':a2_0x13fd6f(0x313),'blank':a2_0x13fd6f(0x508),'answer':'&&','options':['&&','||',a2_0x13fd6f(0x7c4),'&'],'blocks':[a2_0x13fd6f(0x2fd),'\x20\x20\x20\x20System.out.println(\x22둘\x20다\x20양수\x22);','}'],'hint':a2_0x13fd6f(0x74d)},{'title':a2_0x13fd6f(0x73f),'prompt':a2_0x13fd6f(0x3db),'full':a2_0x13fd6f(0x556),'blank':'String\x20result\x20=\x20(age\x20>=\x2018)\x20___\x20\x22성인\x22\x20:\x20\x22미성년자\x22;','answer':'?','options':['?','if',a2_0x13fd6f(0x1cc),':'],'blocks':['int\x20age\x20=\x2020;',a2_0x13fd6f(0x777),'System.out.println(result);'],'hint':a2_0x13fd6f(0x39a)}]},{'cat':0x1,'id':0x1,'title':a2_0x13fd6f(0x6c2),'prompt':a2_0x13fd6f(0x73e),'full':a2_0x13fd6f(0x64a),'hint':a2_0x13fd6f(0x1cd),'concept':{'title':'String\x20비교:\x20.equals()\x20vs\x20==','desc':'Java에서\x20String은\x20참조\x20타입(객체)입니다.\x20==\x20는\x20두\x20변수가\x20같은\x20메모리\x20주소를\x20가리키는지\x20확인합니다.\x20문자열\x20내용을\x20비교하려면\x20반드시\x20.equals()\x20메서드를\x20사용해야\x20합니다.','syntax':a2_0x13fd6f(0x454),'note':a2_0x13fd6f(0x741),'dart':a2_0x13fd6f(0x23a)},'drills':[{'title':'드릴\x201\x20—\x20equals()\x20사용','prompt':a2_0x13fd6f(0x6ce),'full':'public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20String\x20s\x20=\x20\x22YES\x22;\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(s.equals(\x22YES\x22))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(\x22일치\x22);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a}','blank':a2_0x13fd6f(0x7fa),'answer':a2_0x13fd6f(0x1eb),'options':[a2_0x13fd6f(0x1eb),'==',a2_0x13fd6f(0x79a),a2_0x13fd6f(0x2b3)],'blocks':[a2_0x13fd6f(0x513),a2_0x13fd6f(0x621),a2_0x13fd6f(0x551),'}'],'hint':a2_0x13fd6f(0x552)},{'title':a2_0x13fd6f(0x2d8),'prompt':'대소문자를\x20무시하고\x20문자열을\x20비교하는\x20메서드를\x20완성하세요.<br><code>if\x20(s.___(\x20\x22yes\x22\x20))</code>','full':'public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20String\x20s\x20=\x20\x22YES\x22;\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(s.equalsIgnoreCase(\x22yes\x22))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(\x22일치\x20(대소문자\x20무시)\x22);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a}','blank':a2_0x13fd6f(0x353),'answer':'equalsIgnoreCase','options':['equalsIgnoreCase',a2_0x13fd6f(0x1eb),'compareIgnoreCase',a2_0x13fd6f(0x639)],'blocks':[a2_0x13fd6f(0x513),a2_0x13fd6f(0x218),a2_0x13fd6f(0x691),'}'],'hint':'equalsIgnoreCase()는\x20대소문자를\x20무시하고\x20문자열\x20내용을\x20비교합니다.'},{'title':a2_0x13fd6f(0x1da),'prompt':'문자열\x20s가\x20특정\x20부분\x20문자열을\x20포함하는지\x20확인하는\x20코드를\x20완성하세요.<br><code>if\x20(s.___(\x20\x22Java\x22\x20))</code>','full':a2_0x13fd6f(0x688),'blank':a2_0x13fd6f(0x63d),'answer':a2_0x13fd6f(0x209),'options':[a2_0x13fd6f(0x209),a2_0x13fd6f(0x5a4),'has',a2_0x13fd6f(0x7e3)],'blocks':[a2_0x13fd6f(0x609),a2_0x13fd6f(0x63e),'\x20\x20\x20\x20System.out.println(\x22Java\x20포함\x22);','}'],'hint':a2_0x13fd6f(0x493)},{'title':a2_0x13fd6f(0x856),'prompt':'switch문으로\x20요일을\x20판별하는\x20코드를\x20완성하세요.\x20빈칸을\x20채우세요.','full':a2_0x13fd6f(0x47d),'blank':'___\x20(day)\x20{','answer':a2_0x13fd6f(0x5b2),'options':[a2_0x13fd6f(0x5b2),'if',a2_0x13fd6f(0x611),'select'],'blocks':[a2_0x13fd6f(0x695),a2_0x13fd6f(0x832),'\x20\x20\x20\x20case\x201:\x20System.out.println(\x22월요일\x22);\x20break;','\x20\x20\x20\x20case\x202:\x20System.out.println(\x22화요일\x22);\x20break;',a2_0x13fd6f(0x57d),'}'],'hint':a2_0x13fd6f(0x7fd)}]},{'cat':0x1,'id':0x2,'title':a2_0x13fd6f(0x5b0),'prompt':'Java의\x20<code>switch</code>\x20문과\x20<code>break</code>\x20없을\x20때\x20일어나는\x20fall-through\x20현상을\x20익힙니다.','full':a2_0x13fd6f(0x54a),'hint':a2_0x13fd6f(0x693),'concept':{'title':'switch\x20문','desc':a2_0x13fd6f(0x646),'syntax':a2_0x13fd6f(0x5b5),'note':a2_0x13fd6f(0x3e1),'dart':a2_0x13fd6f(0x2fa)},'drills':[{'title':a2_0x13fd6f(0x6e0),'prompt':'switch\x20문에서\x20case\x203이\x20선택될\x20때\x20출력하고\x20멈추는\x20코드를\x20완성하세요.','full':'public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20int\x20n\x20=\x203;\x0a\x20\x20\x20\x20\x20\x20\x20\x20switch\x20(n)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20case\x201:\x20System.out.println(\x22하나\x22);\x20break;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20case\x202:\x20System.out.println(\x22둘\x22);\x20break;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20case\x203:\x20System.out.println(\x22셋\x22);\x20break;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20default:\x20System.out.println(\x22기타\x22);\x20break;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a}','blank':'case\x203:\x20System.out.println(\x22셋\x22);\x20___;','answer':'break','options':[a2_0x13fd6f(0x69c),a2_0x13fd6f(0x4d6),a2_0x13fd6f(0x6b8),a2_0x13fd6f(0x7e4)],'blocks':['switch\x20(n)\x20{',a2_0x13fd6f(0x6fe),'\x20\x20\x20\x20case\x202:\x20System.out.println(\x22둘\x22);\x20break;','\x20\x20\x20\x20case\x203:\x20System.out.println(\x22셋\x22);\x20break;',a2_0x13fd6f(0x57d),'}'],'hint':a2_0x13fd6f(0x62d)},{'title':a2_0x13fd6f(0x43c),'prompt':a2_0x13fd6f(0x55e),'full':a2_0x13fd6f(0x28e),'blank':'___:\x20System.out.println(\x22기타\x22);\x20break;','answer':a2_0x13fd6f(0x7a1),'options':[a2_0x13fd6f(0x7a1),a2_0x13fd6f(0x5ef),a2_0x13fd6f(0x630),a2_0x13fd6f(0x726)],'blocks':[a2_0x13fd6f(0x783),a2_0x13fd6f(0x6fe),a2_0x13fd6f(0x57d),'}'],'hint':a2_0x13fd6f(0x5f8)},{'title':a2_0x13fd6f(0x220),'prompt':'점수가\x2090\x20이상이면\x20A,\x2080\x20이상이면\x20B,\x20나머지는\x20C를\x20출력하는\x20조건문을\x20완성하세요.','full':a2_0x13fd6f(0x3be),'blank':a2_0x13fd6f(0x1cf),'answer':'else','options':['else',a2_0x13fd6f(0x498),'or','and'],'blocks':['if\x20(score\x20>=\x2090)\x20{',a2_0x13fd6f(0x7d6),a2_0x13fd6f(0x5a6),a2_0x13fd6f(0x26b),a2_0x13fd6f(0x316),a2_0x13fd6f(0x4b4),'}',a2_0x13fd6f(0x840)],'hint':a2_0x13fd6f(0x505)},{'title':a2_0x13fd6f(0x7d7),'prompt':a2_0x13fd6f(0x37a),'full':a2_0x13fd6f(0x475),'blank':a2_0x13fd6f(0x733),'answer':'||','options':['||','&&','or',a2_0x13fd6f(0x7c4)],'blocks':[a2_0x13fd6f(0x794),a2_0x13fd6f(0x851),a2_0x13fd6f(0x5d3)],'hint':a2_0x13fd6f(0x40b)}]},{'cat':0x1,'id':0x3,'title':a2_0x13fd6f(0x799),'prompt':a2_0x13fd6f(0x703),'full':'public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20String\x20s\x20=\x20null;\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20null\x20체크\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(s\x20==\x20null)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(\x22null\x20입니다\x22);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20null-safe\x20문자열\x20비교\x0a\x20\x20\x20\x20\x20\x20\x20\x20String\x20target\x20=\x20\x22hello\x22;\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(target.equals(s))\x20{\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20s가\x20null이면\x20NPE!\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(\x22일치\x22);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(\x22hello\x22.equals(s))\x20{\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20리터럴\x20앞에\x20두면\x20안전\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(\x22일치\x22);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Integer\x20vs\x20int\x20비교\x0a\x20\x20\x20\x20\x20\x20\x20\x20Integer\x20a\x20=\x20128;\x0a\x20\x20\x20\x20\x20\x20\x20\x20Integer\x20b\x20=\x20128;\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(a\x20==\x20b);\x20\x20\x20\x20\x20\x20//\x20false\x20(객체\x20주소\x20비교!)\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(a.equals(b));\x20//\x20true\x20\x20(값\x20비교)\x0a\x20\x20\x20\x20}\x0a}','hint':a2_0x13fd6f(0x48b),'concept':{'title':a2_0x13fd6f(0x834),'desc':a2_0x13fd6f(0x721),'syntax':a2_0x13fd6f(0x7c6),'note':a2_0x13fd6f(0x527),'dart':a2_0x13fd6f(0x4a9)},'drills':[{'title':'드릴\x201\x20—\x20null\x20체크','prompt':'변수가\x20null인지\x20확인하는\x20코드를\x20완성하세요.','full':a2_0x13fd6f(0x77f),'blank':'if\x20(s\x20___\x20null)','answer':'==','options':['==','=','equals','!='],'blocks':[a2_0x13fd6f(0x4de),a2_0x13fd6f(0x5a8),'\x20\x20\x20\x20System.out.println(\x22null입니다\x22);','}'],'hint':a2_0x13fd6f(0x1ca)},{'title':a2_0x13fd6f(0x3aa),'prompt':'변수\x20s가\x20null일\x20수\x20있을\x20때\x20NPE\x20없이\x20비교하는\x20방법을\x20선택하세요.','full':a2_0x13fd6f(0x486),'blank':a2_0x13fd6f(0x534),'answer':a2_0x13fd6f(0x80d),'options':['\x22hello\x22','s',a2_0x13fd6f(0x35c),a2_0x13fd6f(0x7b3)],'blocks':['String\x20s\x20=\x20null;',a2_0x13fd6f(0x4ed),a2_0x13fd6f(0x551),'}\x20else\x20{',a2_0x13fd6f(0x1ee),'}'],'hint':'리터럴.equals(변수)\x20형태로\x20쓰면\x20변수가\x20null이어도\x20NPE가\x20발생하지\x20않습니다.'},{'title':a2_0x13fd6f(0x49b),'prompt':a2_0x13fd6f(0x768),'full':a2_0x13fd6f(0x1d0),'blank':a2_0x13fd6f(0x6e8),'answer':a2_0x13fd6f(0x3e4),'options':[a2_0x13fd6f(0x3e4),'null','\x22\x22','s'],'blocks':['String\x20s\x20=\x20null;',a2_0x13fd6f(0x58c),a2_0x13fd6f(0x5aa)],'hint':a2_0x13fd6f(0x636)},{'title':a2_0x13fd6f(0x253),'prompt':'&&는\x20왼쪽이\x20false면\x20오른쪽을\x20평가하지\x20않습니다.\x20이를\x20활용한\x20null-safe\x20조건을\x20완성하세요.','full':a2_0x13fd6f(0x705),'blank':a2_0x13fd6f(0x341),'answer':'&&','options':['&&','||','&','|'],'blocks':[a2_0x13fd6f(0x4de),'if\x20(s\x20!=\x20null\x20&&\x20s.equals(\x22hello\x22))\x20{',a2_0x13fd6f(0x551),a2_0x13fd6f(0x316),'\x20\x20\x20\x20System.out.println(\x22null이거나\x20불일치\x22);','}'],'hint':a2_0x13fd6f(0x67a)}]},{'cat':0x2,'id':0x0,'title':a2_0x13fd6f(0x455),'prompt':a2_0x13fd6f(0x48d),'full':a2_0x13fd6f(0x60c),'hint':a2_0x13fd6f(0x41a),'concept':{'title':a2_0x13fd6f(0x7bc),'desc':a2_0x13fd6f(0x555),'syntax':a2_0x13fd6f(0x7ce),'note':a2_0x13fd6f(0x5a9),'dart':a2_0x13fd6f(0x50e)},'drills':[{'title':a2_0x13fd6f(0x7e8),'prompt':a2_0x13fd6f(0x1c5),'full':a2_0x13fd6f(0x7fe),'blank':a2_0x13fd6f(0x461),'answer':a2_0x13fd6f(0x543),'options':[a2_0x13fd6f(0x543),'i--',a2_0x13fd6f(0x6b1),a2_0x13fd6f(0x23d)],'blocks':[a2_0x13fd6f(0x811),a2_0x13fd6f(0x4f3),'}'],'hint':a2_0x13fd6f(0x76c)},{'title':a2_0x13fd6f(0x1dd),'prompt':a2_0x13fd6f(0x51b),'full':a2_0x13fd6f(0x7cc),'blank':a2_0x13fd6f(0x1ec),'answer':a2_0x13fd6f(0x38e),'options':[a2_0x13fd6f(0x38e),'sum',a2_0x13fd6f(0x61c),a2_0x13fd6f(0x612)],'blocks':[a2_0x13fd6f(0x287),a2_0x13fd6f(0x7a0),a2_0x13fd6f(0x381),'\x20\x20\x20\x20total\x20+=\x20i;','}','System.out.println(total);'],'hint':'누적\x20합산\x20패턴:\x20반복\x20전에\x200으로\x20초기화한\x20변수에\x20+=\x20로\x20더합니다.'},{'title':a2_0x13fd6f(0x259),'prompt':'구구단\x202단을\x20출력하는\x20코드의\x20빈칸을\x20채우세요.','full':a2_0x13fd6f(0x6d3),'blank':a2_0x13fd6f(0x376),'answer':a2_0x13fd6f(0x532),'options':[a2_0x13fd6f(0x532),a2_0x13fd6f(0x458),a2_0x13fd6f(0x4a8),'2j'],'blocks':['for\x20(int\x20j\x20=\x201;\x20j\x20<=\x209;\x20j++)\x20{',a2_0x13fd6f(0x663),'}'],'hint':'Java에서\x20문자열과\x20숫자를\x20+\x20로\x20이으면\x20자동으로\x20문자열\x20변환됩니다.'},{'title':a2_0x13fd6f(0x5f0),'prompt':a2_0x13fd6f(0x723),'full':a2_0x13fd6f(0x5f1),'blank':a2_0x13fd6f(0x20f),'answer':a2_0x13fd6f(0x69c),'options':[a2_0x13fd6f(0x69c),a2_0x13fd6f(0x4d6),a2_0x13fd6f(0x6b8),a2_0x13fd6f(0x7e4)],'blocks':[a2_0x13fd6f(0x42d),a2_0x13fd6f(0x6ac),a2_0x13fd6f(0x334),a2_0x13fd6f(0x4bd),a2_0x13fd6f(0x7b7),'}',a2_0x13fd6f(0x600)],'hint':a2_0x13fd6f(0x692)}]},{'cat':0x2,'id':0x1,'title':a2_0x13fd6f(0x7f8),'prompt':a2_0x13fd6f(0x41f),'full':a2_0x13fd6f(0x6e5),'hint':a2_0x13fd6f(0x315),'concept':{'title':'향상된\x20for문\x20(Enhanced\x20for\x20/\x20for-each)','desc':a2_0x13fd6f(0x43a),'syntax':a2_0x13fd6f(0x22a),'note':a2_0x13fd6f(0x232),'dart':'for\x20(var\x20x\x20in\x20list)\x20→\x20for\x20(int\x20x\x20:\x20arr)\x0a동일한\x20개념'},'drills':[{'title':a2_0x13fd6f(0x5e2),'prompt':'배열의\x20모든\x20원소를\x20출력하는\x20for-each\x20문의\x20빈칸을\x20채우세요.<br><code>for\x20(int\x20x\x20___\x20arr)</code>','full':a2_0x13fd6f(0x1e0),'blank':a2_0x13fd6f(0x2e1),'answer':':','options':[':','in','=','->'],'blocks':['int[]\x20arr\x20=\x20{1,\x202,\x203,\x204,\x205};',a2_0x13fd6f(0x485),'\x20\x20\x20\x20System.out.println(x);','}'],'hint':'Java\x20for-each\x20문법:\x20for(타입\x20변수\x20:\x20배열)\x20{}\x20콜론(:)을\x20사용합니다.'},{'title':a2_0x13fd6f(0x34d),'prompt':a2_0x13fd6f(0x21a),'full':a2_0x13fd6f(0x201),'blank':a2_0x13fd6f(0x615),'answer':a2_0x13fd6f(0x798),'options':['arr',a2_0x13fd6f(0x51a),a2_0x13fd6f(0x223),'nums'],'blocks':[a2_0x13fd6f(0x2dc),'int\x20max\x20=\x20arr[0];','for\x20(int\x20x\x20:\x20arr)\x20{',a2_0x13fd6f(0x306),'}',a2_0x13fd6f(0x69d)],'hint':a2_0x13fd6f(0x478)},{'title':a2_0x13fd6f(0x83e),'prompt':a2_0x13fd6f(0x3d0),'full':'import\x20java.util.ArrayList;\x0apublic\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20ArrayList<String>\x20list\x20=\x20new\x20ArrayList<>();\x0a\x20\x20\x20\x20\x20\x20\x20\x20list.add(\x22Java\x22);\x20list.add(\x22Python\x22);\x0a\x20\x20\x20\x20\x20\x20\x20\x20for\x20(String\x20s\x20:\x20list)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(s);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a}','blank':'for\x20(___\x20s\x20:\x20list)','answer':a2_0x13fd6f(0x6d7),'options':[a2_0x13fd6f(0x6d7),a2_0x13fd6f(0x53c),a2_0x13fd6f(0x7b1),'Object'],'blocks':[a2_0x13fd6f(0x3b0),a2_0x13fd6f(0x3a0),a2_0x13fd6f(0x7a9),a2_0x13fd6f(0x648),'}'],'hint':'ArrayList<String>의\x20원소\x20타입이\x20String이므로\x20for(String\x20s\x20:\x20list)를\x20씁니다.'},{'title':a2_0x13fd6f(0x7bf),'prompt':a2_0x13fd6f(0x590),'full':a2_0x13fd6f(0x72a),'blank':a2_0x13fd6f(0x21f),'answer':a2_0x13fd6f(0x4d6),'options':[a2_0x13fd6f(0x4d6),a2_0x13fd6f(0x69c),'skip',a2_0x13fd6f(0x6b8)],'blocks':[a2_0x13fd6f(0x6e6),a2_0x13fd6f(0x485),a2_0x13fd6f(0x4b3),a2_0x13fd6f(0x545),'}'],'hint':a2_0x13fd6f(0x28b)}]},{'cat':0x2,'id':0x2,'title':'이중\x20for문과\x202D\x20배열\x20순회','prompt':a2_0x13fd6f(0x60a),'full':a2_0x13fd6f(0x854),'hint':a2_0x13fd6f(0x61e),'concept':{'title':a2_0x13fd6f(0x809),'desc':a2_0x13fd6f(0x765),'syntax':a2_0x13fd6f(0x261),'note':a2_0x13fd6f(0x808),'dart':a2_0x13fd6f(0x3ab)},'drills':[{'title':a2_0x13fd6f(0x33a),'prompt':a2_0x13fd6f(0x613),'full':a2_0x13fd6f(0x857),'blank':a2_0x13fd6f(0x473),'answer':'length','options':['length',a2_0x13fd6f(0x5cd),a2_0x13fd6f(0x61c),a2_0x13fd6f(0x623)],'blocks':[a2_0x13fd6f(0x396),a2_0x13fd6f(0x482),a2_0x13fd6f(0x6ff),'\x20\x20\x20\x20}',a2_0x13fd6f(0x781),'}'],'hint':a2_0x13fd6f(0x6eb)},{'title':a2_0x13fd6f(0x56a),'prompt':'2차원\x20배열의\x20모든\x20원소를\x20합산하는\x20코드를\x20완성하세요.','full':a2_0x13fd6f(0x327),'blank':a2_0x13fd6f(0x46f),'answer':'mat','options':[a2_0x13fd6f(0x46d),a2_0x13fd6f(0x599),a2_0x13fd6f(0x5fb),'m'],'blocks':['int\x20sum\x20=\x200;',a2_0x13fd6f(0x644),a2_0x13fd6f(0x70c),a2_0x13fd6f(0x729),a2_0x13fd6f(0x7f6),'}',a2_0x13fd6f(0x433)],'hint':'2차원\x20배열을\x20for-each로\x20순회하면\x20각\x20row가\x20int[]\x20타입입니다.'},{'title':'드릴\x203\x20—\x20구구단\x20출력','prompt':a2_0x13fd6f(0x580),'full':'public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20for\x20(int\x20i\x20=\x202;\x20i\x20<=\x209;\x20i++)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20for\x20(int\x20j\x20=\x201;\x20j\x20<=\x209;\x20j++)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(i\x20+\x20\x22\x20x\x20\x22\x20+\x20j\x20+\x20\x22\x20=\x20\x22\x20+\x20(i\x20*\x20j));\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a}','blank':a2_0x13fd6f(0x734),'answer':'9','options':['9','10','8','5'],'blocks':[a2_0x13fd6f(0x5ed),a2_0x13fd6f(0x210),a2_0x13fd6f(0x277),a2_0x13fd6f(0x7f6),'}'],'hint':a2_0x13fd6f(0x739)},{'title':'드릴\x204\x20—\x20소수\x20판별\x20반복문','prompt':'정수\x20n이\x20소수인지\x20판별하는\x20반복문을\x20완성하세요.','full':a2_0x13fd6f(0x470),'blank':a2_0x13fd6f(0x836),'answer':'n','options':['n','i','2','10'],'blocks':['if\x20(n\x20<\x202)\x20return\x20false;',a2_0x13fd6f(0x3ed),a2_0x13fd6f(0x1c9),'}','return\x20true;'],'hint':a2_0x13fd6f(0x708)}]},{'cat':0x2,'id':0x3,'title':a2_0x13fd6f(0x2ec),'prompt':a2_0x13fd6f(0x37c),'full':a2_0x13fd6f(0x330),'hint':a2_0x13fd6f(0x20c),'concept':{'title':a2_0x13fd6f(0x70e),'desc':a2_0x13fd6f(0x72f),'syntax':a2_0x13fd6f(0x5c9),'note':a2_0x13fd6f(0x3ee),'dart':'do\x20{\x20}\x20while\x20(cond);\x20동일\x0awhile(true)\x20{\x20break;\x20}\x20동일'},'drills':[{'title':a2_0x13fd6f(0x2a8),'prompt':'최소\x20한\x20번\x20실행되는\x20do-while\x20문의\x20끝\x20부분을\x20완성하세요.','full':a2_0x13fd6f(0x6bf),'blank':'}\x20___\x20(i\x20<\x203);','answer':'while','options':['while','if','for',a2_0x13fd6f(0x732)],'blocks':[a2_0x13fd6f(0x68e),a2_0x13fd6f(0x5e9),a2_0x13fd6f(0x4f3),a2_0x13fd6f(0x7b7),'}\x20while\x20(i\x20<\x203);'],'hint':'do-while:\x20do\x20{\x20}\x20while\x20(조건);\x20형태입니다.\x20while\x20뒤\x20세미콜론이\x20필수입니다.'},{'title':'드릴\x202\x20—\x20while(true)\x20+\x20break','prompt':a2_0x13fd6f(0x4c8),'full':a2_0x13fd6f(0x608),'blank':a2_0x13fd6f(0x79b),'answer':a2_0x13fd6f(0x21b),'options':[a2_0x13fd6f(0x21b),a2_0x13fd6f(0x7b6),'1','sum\x20>\x200'],'blocks':[a2_0x13fd6f(0x3cb),a2_0x13fd6f(0x6ac),a2_0x13fd6f(0x342),a2_0x13fd6f(0x4bd),'}',a2_0x13fd6f(0x822)],'hint':'while(true)는\x20무한\x20루프입니다.\x20내부에서\x20break로\x20탈출합니다.'},{'title':a2_0x13fd6f(0x40d),'prompt':a2_0x13fd6f(0x387),'full':a2_0x13fd6f(0x6f3),'blank':'if\x20(i\x20+\x20j\x20==\x206)\x20break\x20___;','answer':a2_0x13fd6f(0x463),'options':[a2_0x13fd6f(0x463),a2_0x13fd6f(0x2a7),a2_0x13fd6f(0x3bc),a2_0x13fd6f(0x509)],'blocks':[a2_0x13fd6f(0x7f2),'for\x20(int\x20i\x20=\x200;\x20i\x20<\x205;\x20i++)\x20{',a2_0x13fd6f(0x831),'\x20\x20\x20\x20\x20\x20\x20\x20if\x20(i\x20+\x20j\x20==\x206)\x20break\x20outer;','\x20\x20\x20\x20}','}'],'hint':a2_0x13fd6f(0x272)},{'title':a2_0x13fd6f(0x5e6),'prompt':a2_0x13fd6f(0x1f7),'full':a2_0x13fd6f(0x58b),'blank':a2_0x13fd6f(0x7c0),'answer':a2_0x13fd6f(0x4d6),'options':[a2_0x13fd6f(0x4d6),'break','skip',a2_0x13fd6f(0x6b8)],'blocks':[a2_0x13fd6f(0x7c5),a2_0x13fd6f(0x282),a2_0x13fd6f(0x77e),a2_0x13fd6f(0x334),'}','System.out.println(sum);'],'hint':a2_0x13fd6f(0x725)}]},{'cat':0x3,'id':0x0,'title':a2_0x13fd6f(0x4a3),'prompt':a2_0x13fd6f(0x754),'full':a2_0x13fd6f(0x771),'hint':a2_0x13fd6f(0x321),'concept':{'title':a2_0x13fd6f(0x606),'desc':a2_0x13fd6f(0x6aa),'syntax':a2_0x13fd6f(0x4e8),'note':a2_0x13fd6f(0x57f),'dart':'int[]\x20arr\x20→\x20List<int>\x20arr\x0anew\x20int[5]\x20→\x20List.filled(5,\x200)\x0aarr.length\x20동일\x0aarr[i]\x20동일'},'drills':[{'title':'드릴\x201\x20—\x20배열\x20선언','prompt':a2_0x13fd6f(0x584),'full':a2_0x13fd6f(0x7d4),'blank':a2_0x13fd6f(0x548),'answer':'5','options':['5',a2_0x13fd6f(0x64b),a2_0x13fd6f(0x846),a2_0x13fd6f(0x78c)],'blocks':[a2_0x13fd6f(0x6a9),'System.out.println(arr.length);'],'hint':'배열\x20크기를\x20대괄호\x20안에\x20숫자로\x20지정합니다.'},{'title':a2_0x13fd6f(0x268),'prompt':'배열의\x20길이를\x20반환하는\x20속성을\x20완성하세요.<br><code>int\x20len\x20=\x20arr.___;</code>','full':a2_0x13fd6f(0x525),'blank':a2_0x13fd6f(0x7bd),'answer':a2_0x13fd6f(0x7f1),'options':['length',a2_0x13fd6f(0x5cd),a2_0x13fd6f(0x61c),a2_0x13fd6f(0x502)],'blocks':[a2_0x13fd6f(0x37e),a2_0x13fd6f(0x3e8),'System.out.println(len);'],'hint':a2_0x13fd6f(0x5f4)},{'title':a2_0x13fd6f(0x6bd),'prompt':a2_0x13fd6f(0x674),'full':a2_0x13fd6f(0x308),'blank':a2_0x13fd6f(0x307),'answer':a2_0x13fd6f(0x28c),'options':[a2_0x13fd6f(0x28c),a2_0x13fd6f(0x633),a2_0x13fd6f(0x52b),'Sort'],'blocks':[a2_0x13fd6f(0x60f),a2_0x13fd6f(0x5b8),'Arrays.sort(arr);','System.out.println(Arrays.toString(arr));'],'hint':a2_0x13fd6f(0x50c)},{'title':a2_0x13fd6f(0x4ef),'prompt':a2_0x13fd6f(0x569),'full':a2_0x13fd6f(0x83f),'blank':a2_0x13fd6f(0x686),'answer':a2_0x13fd6f(0x76b),'options':[a2_0x13fd6f(0x76b),a2_0x13fd6f(0x2cf),a2_0x13fd6f(0x32f),a2_0x13fd6f(0x2b2)],'blocks':[a2_0x13fd6f(0x759),'int\x20v\x20=\x20matrix[1][2];',a2_0x13fd6f(0x2d2)],'hint':'2차원\x20배열:\x20matrix[행인덱스][열인덱스].\x20인덱스는\x200부터\x20시작합니다.'}]},{'cat':0x3,'id':0x1,'title':a2_0x13fd6f(0x4a0),'prompt':a2_0x13fd6f(0x20b),'full':'import\x20java.util.ArrayList;\x0apublic\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20ArrayList<Integer>\x20list\x20=\x20new\x20ArrayList<>();\x0a\x20\x20\x20\x20\x20\x20\x20\x20list.add(10);\x20\x20\x20\x20\x20\x20\x20\x20//\x20끝에\x20추가\x0a\x20\x20\x20\x20\x20\x20\x20\x20list.add(20);\x0a\x20\x20\x20\x20\x20\x20\x20\x20list.add(30);\x0a\x20\x20\x20\x20\x20\x20\x20\x20list.remove(1);\x20\x20\x20\x20\x20\x20//\x20인덱스\x201\x20삭제\x20→\x20[10,\x2030]\x0a\x20\x20\x20\x20\x20\x20\x20\x20int\x20v\x20=\x20list.get(0);\x20//\x20인덱스\x200\x20조회\x20→\x2010\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(list.size());\x20//\x202\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(v);\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x2010\x0a\x20\x20\x20\x20}\x0a}','hint':a2_0x13fd6f(0x30f),'concept':{'title':'ArrayList\x20—\x20동적\x20크기\x20리스트','desc':a2_0x13fd6f(0x280),'syntax':'ArrayList<Integer>\x20list\x20=\x20new\x20ArrayList<>();\x0a\x0alist.add(10);\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20끝에\x20추가\x20(Python:\x20append)\x0alist.add(0,\x205);\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20인덱스\x200에\x20삽입\x20(Python:\x20insert)\x0alist.remove(0);\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20인덱스\x20삭제\x0alist.remove(Integer.valueOf(10));\x20//\x20값으로\x20삭제\x0aint\x20v\x20=\x20list.get(0);\x20\x20\x20\x20\x20//\x20조회\x20(Python:\x20list[0])\x0alist.set(0,\x2099);\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20수정\x20(Python:\x20list[0]\x20=\x2099)\x0aint\x20n\x20=\x20list.size();\x20\x20\x20\x20\x20//\x20크기\x20(Python:\x20len(list))\x0alist.contains(10);\x20\x20\x20\x20\x20\x20\x20//\x20포함\x20여부\x0aCollections.sort(list);\x20\x20//\x20정렬','note':'💡\x20ArrayList<int>는\x20불가!\x20제네릭에는\x20래퍼\x20클래스\x20사용:\x20ArrayList<Integer>,\x20ArrayList<Double>,\x20ArrayList<String>','dart':'List<int>\x20list\x20=\x20[]\x20→\x20ArrayList<Integer>\x0alist.add(x)\x20동일\x0alist.length\x20→\x20list.size()\x0alist[i]\x20→\x20list.get(i)\x0alist[i]\x20=\x20v\x20→\x20list.set(i,\x20v)'},'drills':[{'title':'드릴\x201\x20—\x20ArrayList\x20선언','prompt':'Integer\x20타입\x20ArrayList를\x20선언하는\x20코드를\x20완성하세요.','full':a2_0x13fd6f(0x4f5),'blank':a2_0x13fd6f(0x35d),'answer':a2_0x13fd6f(0x7dc),'options':['Integer',a2_0x13fd6f(0x637),'number',a2_0x13fd6f(0x678)],'blocks':[a2_0x13fd6f(0x6c0),a2_0x13fd6f(0x7e2)],'hint':'제네릭에서\x20int\x20대신\x20래퍼\x20클래스\x20Integer를\x20사용합니다.'},{'title':'드릴\x202\x20—\x20add와\x20get','prompt':'ArrayList에서\x20요소를\x20추가하고\x20조회하는\x20메서드를\x20완성하세요.','full':a2_0x13fd6f(0x1fe),'blank':a2_0x13fd6f(0x4c5),'answer':a2_0x13fd6f(0x682),'options':[a2_0x13fd6f(0x682),a2_0x13fd6f(0x3ca),a2_0x13fd6f(0x6d2),a2_0x13fd6f(0x841)],'blocks':[a2_0x13fd6f(0x3b0),a2_0x13fd6f(0x279),a2_0x13fd6f(0x7dd),a2_0x13fd6f(0x591)],'hint':a2_0x13fd6f(0x544)},{'title':'드릴\x203\x20—\x20size()\x20메서드','prompt':'ArrayList의\x20크기를\x20반환하는\x20메서드를\x20완성하세요.<br><code>int\x20n\x20=\x20list.___();</code>','full':'import\x20java.util.ArrayList;\x0apublic\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20ArrayList<Integer>\x20list\x20=\x20new\x20ArrayList<>();\x0a\x20\x20\x20\x20\x20\x20\x20\x20list.add(1);\x20list.add(2);\x20list.add(3);\x0a\x20\x20\x20\x20\x20\x20\x20\x20int\x20n\x20=\x20list.size();\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(n);\x20\x20//\x203\x0a\x20\x20\x20\x20}\x0a}','blank':a2_0x13fd6f(0x43e),'answer':'size','options':['size',a2_0x13fd6f(0x7f1),'count',a2_0x13fd6f(0x623)],'blocks':[a2_0x13fd6f(0x32c),'int\x20n\x20=\x20list.size();',a2_0x13fd6f(0x322)],'hint':'ArrayList\x20크기는\x20.size()\x20(메서드).\x20배열의\x20.length와\x20구분하세요!'},{'title':a2_0x13fd6f(0x751),'prompt':a2_0x13fd6f(0x39c),'full':a2_0x13fd6f(0x79f),'blank':a2_0x13fd6f(0x4af),'answer':'Collections','options':['Collections','Arrays',a2_0x13fd6f(0x450),a2_0x13fd6f(0x573)],'blocks':[a2_0x13fd6f(0x51e),a2_0x13fd6f(0x83c),'System.out.println(list);'],'hint':'ArrayList\x20정렬은\x20Collections.sort(list).\x20배열의\x20Arrays.sort(arr)와\x20구분하세요.'}]},{'cat':0x3,'id':0x2,'title':a2_0x13fd6f(0x549),'prompt':a2_0x13fd6f(0x206),'full':a2_0x13fd6f(0x7fb),'hint':'Arrays.copyOf(arr,\x20n)은\x20앞\x20n개를\x20복사합니다.\x20Arrays.fill()로\x20특정\x20값으로\x20초기화할\x20수\x20있습니다.','concept':{'title':a2_0x13fd6f(0x374),'desc':'java.util.Arrays는\x20배열\x20조작에\x20필요한\x20여러\x20유틸\x20메서드를\x20제공합니다.\x20sort,\x20toString,\x20copyOf,\x20fill,\x20copyOfRange,\x20equals\x20등을\x20기억하세요.','syntax':a2_0x13fd6f(0x713),'note':a2_0x13fd6f(0x5e4),'dart':a2_0x13fd6f(0x405)},'drills':[{'title':a2_0x13fd6f(0x652),'prompt':a2_0x13fd6f(0x7de),'full':a2_0x13fd6f(0x58d),'blank':a2_0x13fd6f(0x491),'answer':a2_0x13fd6f(0x303),'options':[a2_0x13fd6f(0x303),a2_0x13fd6f(0x3d1),a2_0x13fd6f(0x2ab),a2_0x13fd6f(0x3e7)],'blocks':[a2_0x13fd6f(0x6a9),a2_0x13fd6f(0x596),a2_0x13fd6f(0x769)],'hint':a2_0x13fd6f(0x7a6)},{'title':'드릴\x202\x20—\x20Arrays.copyOf','prompt':a2_0x13fd6f(0x390),'full':a2_0x13fd6f(0x52f),'blank':a2_0x13fd6f(0x2aa),'answer':a2_0x13fd6f(0x309),'options':[a2_0x13fd6f(0x309),a2_0x13fd6f(0x844),a2_0x13fd6f(0x61b),a2_0x13fd6f(0x358)],'blocks':['int[]\x20arr\x20=\x20{10,\x2020,\x2030,\x2040,\x2050};',a2_0x13fd6f(0x4e7),a2_0x13fd6f(0x362)],'hint':a2_0x13fd6f(0x5c7)},{'title':a2_0x13fd6f(0x3de),'prompt':'배열에서\x20인덱스\x202~4\x20범위를\x20복사하는\x20코드를\x20완성하세요.','full':a2_0x13fd6f(0x432),'blank':'int[]\x20sub\x20=\x20Arrays.copyOfRange(arr,\x202,\x20___);','answer':'5','options':['5','4','3','2'],'blocks':['int[]\x20arr\x20=\x20{10,\x2020,\x2030,\x2040,\x2050};',a2_0x13fd6f(0x258),a2_0x13fd6f(0x2b0)],'hint':a2_0x13fd6f(0x54e)},{'title':'드릴\x204\x20—\x20배열\x20내림차순\x20정렬','prompt':a2_0x13fd6f(0x763),'full':a2_0x13fd6f(0x61a),'blank':a2_0x13fd6f(0x44b),'answer':'reverseOrder','options':['reverseOrder','reverse',a2_0x13fd6f(0x3fb),'sortDesc'],'blocks':[a2_0x13fd6f(0x5fa),a2_0x13fd6f(0x75f),a2_0x13fd6f(0x769)],'hint':a2_0x13fd6f(0x370)}]},{'cat':0x3,'id':0x3,'title':'ArrayList\x20고급\x20—\x20변환,\x20정렬,\x20스트림','prompt':a2_0x13fd6f(0x2fc),'full':'import\x20java.util.*;\x0apublic\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20배열\x20→\x20ArrayList\x0a\x20\x20\x20\x20\x20\x20\x20\x20int[]\x20arr\x20=\x20{3,\x201,\x204,\x201,\x205};\x0a\x20\x20\x20\x20\x20\x20\x20\x20List<Integer>\x20list\x20=\x20new\x20ArrayList<>();\x0a\x20\x20\x20\x20\x20\x20\x20\x20for\x20(int\x20x\x20:\x20arr)\x20list.add(x);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Collections\x20정렬\x0a\x20\x20\x20\x20\x20\x20\x20\x20Collections.sort(list);\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(list);\x20\x20//\x20[1,\x201,\x203,\x204,\x205]\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20최댓값/최솟값\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(Collections.max(list));\x20\x20//\x205\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(Collections.min(list));\x20\x20//\x201\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20뒤집기\x0a\x20\x20\x20\x20\x20\x20\x20\x20Collections.reverse(list);\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(list);\x20\x20//\x20[5,\x204,\x203,\x201,\x201]\x0a\x20\x20\x20\x20}\x0a}','hint':a2_0x13fd6f(0x29f),'concept':{'title':a2_0x13fd6f(0x359),'desc':a2_0x13fd6f(0x81d),'syntax':a2_0x13fd6f(0x26d),'note':a2_0x13fd6f(0x299),'dart':a2_0x13fd6f(0x70d)},'drills':[{'title':a2_0x13fd6f(0x1f5),'prompt':a2_0x13fd6f(0x254),'full':a2_0x13fd6f(0x5fc),'blank':'int\x20max\x20=\x20Collections.___(list);','answer':'max','options':[a2_0x13fd6f(0x51a),a2_0x13fd6f(0x462),a2_0x13fd6f(0x1df),'sort'],'blocks':['List<Integer>\x20list\x20=\x20new\x20ArrayList<>(Arrays.asList(3,\x201,\x204,\x201,\x205,\x209));',a2_0x13fd6f(0x361),a2_0x13fd6f(0x69d)],'hint':a2_0x13fd6f(0x70b)},{'title':'드릴\x202\x20—\x20Collections.reverse','prompt':a2_0x13fd6f(0x810),'full':a2_0x13fd6f(0x26c),'blank':a2_0x13fd6f(0x289),'answer':a2_0x13fd6f(0x25a),'options':['reverse',a2_0x13fd6f(0x654),a2_0x13fd6f(0x57a),'sort'],'blocks':['List<Integer>\x20list\x20=\x20new\x20ArrayList<>(Arrays.asList(1,\x202,\x203,\x204,\x205));',a2_0x13fd6f(0x2e0),a2_0x13fd6f(0x690)],'hint':a2_0x13fd6f(0x25e)},{'title':'드릴\x203\x20—\x20Arrays.asList로\x20초기화','prompt':'배열\x20리터럴로\x20ArrayList를\x20초기화하는\x20코드를\x20완성하세요.','full':a2_0x13fd6f(0x47f),'blank':a2_0x13fd6f(0x6fc),'answer':'Arrays','options':[a2_0x13fd6f(0x28c),'Collections','List',a2_0x13fd6f(0x52b)],'blocks':[a2_0x13fd6f(0x4b8),a2_0x13fd6f(0x286),a2_0x13fd6f(0x690)],'hint':a2_0x13fd6f(0x710)},{'title':a2_0x13fd6f(0x56c),'prompt':a2_0x13fd6f(0x2fb),'full':a2_0x13fd6f(0x356),'blank':a2_0x13fd6f(0x824),'answer':a2_0x13fd6f(0x7f1),'options':['length',a2_0x13fd6f(0x780),'compareTo',a2_0x13fd6f(0x6d5)],'blocks':[a2_0x13fd6f(0x727),'list.sort((a,\x20b)\x20->\x20a.length()\x20-\x20b.length());',a2_0x13fd6f(0x690)],'hint':a2_0x13fd6f(0x7ea)}]},{'cat':0x4,'id':0x0,'title':a2_0x13fd6f(0x7c8),'prompt':'Java의\x20<code>HashMap</code>을\x20사용해\x20키-값을\x20저장하고\x20조회하는\x20방법을\x20익힙니다.','full':a2_0x13fd6f(0x231),'hint':a2_0x13fd6f(0x348),'concept':{'title':a2_0x13fd6f(0x3bb),'desc':'HashMap은\x20Python의\x20dict에\x20해당합니다.\x20put()으로\x20저장,\x20get()으로\x20조회합니다.\x20없는\x20키에\x20get()을\x20호출하면\x20null이\x20반환되므로,\x20getOrDefault()를\x20사용해\x20기본값을\x20안전하게\x20처리하세요.','syntax':a2_0x13fd6f(0x853),'note':'💡\x20map.get(key)가\x20null일\x20때\x20int에\x20대입하면\x20NullPointerException!\x20getOrDefault(key,\x200)이\x20안전합니다.','dart':'Map<k,v>\x20→\x20HashMap<K,V>\x0amap[k]\x20=\x20v\x20→\x20map.put(k,\x20v)\x0amap[k]\x20→\x20map.get(k)\x0amap[k]\x20??\x200\x20→\x20map.getOrDefault(k,\x200)'},'drills':[{'title':a2_0x13fd6f(0x767),'prompt':a2_0x13fd6f(0x1fb),'full':a2_0x13fd6f(0x4b7),'blank':a2_0x13fd6f(0x4da),'answer':a2_0x13fd6f(0x31d),'options':[a2_0x13fd6f(0x31d),a2_0x13fd6f(0x371),a2_0x13fd6f(0x3d1),a2_0x13fd6f(0x746)],'blocks':[a2_0x13fd6f(0x78f),a2_0x13fd6f(0x6d9),a2_0x13fd6f(0x4e4)],'hint':a2_0x13fd6f(0x855)},{'title':a2_0x13fd6f(0x4db),'prompt':a2_0x13fd6f(0x237),'full':a2_0x13fd6f(0x3cc),'blank':a2_0x13fd6f(0x658),'answer':'getOrDefault','options':[a2_0x13fd6f(0x21c),a2_0x13fd6f(0x682),a2_0x13fd6f(0x84e),a2_0x13fd6f(0x23e)],'blocks':[a2_0x13fd6f(0x77b),a2_0x13fd6f(0x329),'for\x20(int\x20x\x20:\x20arr)\x20{',a2_0x13fd6f(0x757),'}','System.out.println(map);'],'hint':a2_0x13fd6f(0x6c4)},{'title':a2_0x13fd6f(0x5d8),'prompt':a2_0x13fd6f(0x849),'full':a2_0x13fd6f(0x382),'blank':a2_0x13fd6f(0x1d3),'answer':a2_0x13fd6f(0x47e),'options':['entrySet','items',a2_0x13fd6f(0x4f2),a2_0x13fd6f(0x6d1)],'blocks':[a2_0x13fd6f(0x4c4),a2_0x13fd6f(0x83d),'}'],'hint':a2_0x13fd6f(0x791)},{'title':a2_0x13fd6f(0x622),'prompt':a2_0x13fd6f(0x80a),'full':'import\x20java.util.HashMap;\x0apublic\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20HashMap<String,\x20Integer>\x20map\x20=\x20new\x20HashMap<>();\x0a\x20\x20\x20\x20\x20\x20\x20\x20map.put(\x22hello\x22,\x201);\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(map.containsKey(\x22hello\x22))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(\x22키\x20존재!\x22);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a}','blank':a2_0x13fd6f(0x64c),'answer':a2_0x13fd6f(0x209),'options':[a2_0x13fd6f(0x209),a2_0x13fd6f(0x81b),a2_0x13fd6f(0x7b5),a2_0x13fd6f(0x5d0)],'blocks':[a2_0x13fd6f(0x324),'\x20\x20\x20\x20System.out.println(\x22키\x20존재!\x22);','}'],'hint':a2_0x13fd6f(0x355)}]},{'cat':0x4,'id':0x1,'title':'HashSet\x20—\x20중복\x20제거','prompt':a2_0x13fd6f(0x48c),'full':a2_0x13fd6f(0x614),'hint':a2_0x13fd6f(0x52a),'concept':{'title':'HashSet\x20—\x20중복\x20없는\x20집합\x20(Python\x20set)','desc':a2_0x13fd6f(0x5ab),'syntax':a2_0x13fd6f(0x753),'note':'💡\x20HashSet은\x20순서를\x20보장하지\x20않습니다.\x20순서가\x20필요하면\x20LinkedHashSet을\x20사용하세요.','dart':a2_0x13fd6f(0x62a)},'drills':[{'title':a2_0x13fd6f(0x428),'prompt':'배열에서\x20중복을\x20제거하는\x20HashSet\x20코드를\x20완성하세요.','full':'import\x20java.util.HashSet;\x0apublic\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20int[]\x20arr\x20=\x20{1,\x202,\x202,\x203,\x203,\x203};\x0a\x20\x20\x20\x20\x20\x20\x20\x20HashSet<Integer>\x20set\x20=\x20new\x20HashSet<>();\x0a\x20\x20\x20\x20\x20\x20\x20\x20for\x20(int\x20x\x20:\x20arr)\x20set.add(x);\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(set.size());\x20\x20//\x203\x0a\x20\x20\x20\x20}\x0a}','blank':'HashSet<___>\x20set\x20=\x20new\x20HashSet<>();','answer':a2_0x13fd6f(0x7dc),'options':[a2_0x13fd6f(0x7dc),a2_0x13fd6f(0x637),a2_0x13fd6f(0x2ce),a2_0x13fd6f(0x678)],'blocks':[a2_0x13fd6f(0x689),a2_0x13fd6f(0x61f),a2_0x13fd6f(0x249),a2_0x13fd6f(0x837)],'hint':'제네릭에서\x20기본형\x20int\x20대신\x20래퍼\x20클래스\x20Integer를\x20씁니다.'},{'title':a2_0x13fd6f(0x460),'prompt':a2_0x13fd6f(0x23c),'full':a2_0x13fd6f(0x5dd),'blank':'System.out.println(set.___(2));','answer':'contains','options':[a2_0x13fd6f(0x209),a2_0x13fd6f(0x81b),a2_0x13fd6f(0x5a4),'get'],'blocks':[a2_0x13fd6f(0x61f),a2_0x13fd6f(0x32e),a2_0x13fd6f(0x251),'System.out.println(set.contains(5));'],'hint':a2_0x13fd6f(0x3d7)},{'title':'드릴\x203\x20—\x20Stack\x20push/pop','prompt':a2_0x13fd6f(0x5bb),'full':a2_0x13fd6f(0x7df),'blank':a2_0x13fd6f(0x1d4),'answer':'push','options':[a2_0x13fd6f(0x6b3),'add',a2_0x13fd6f(0x746),a2_0x13fd6f(0x669)],'blocks':[a2_0x13fd6f(0x7f0),a2_0x13fd6f(0x760),a2_0x13fd6f(0x285),a2_0x13fd6f(0x5eb),a2_0x13fd6f(0x5d1),a2_0x13fd6f(0x744)],'hint':'Stack은\x20LIFO(후입선출)\x20구조입니다.\x20push()로\x20넣고\x20pop()으로\x20꺼냅니다.'},{'title':a2_0x13fd6f(0x730),'prompt':'Queue를\x20사용해\x20원소를\x20넣고\x20꺼내는\x20코드를\x20완성하세요.','full':'import\x20java.util.*;\x0apublic\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20Queue<Integer>\x20queue\x20=\x20new\x20LinkedList<>();\x0a\x20\x20\x20\x20\x20\x20\x20\x20queue.offer(1);\x0a\x20\x20\x20\x20\x20\x20\x20\x20queue.offer(2);\x0a\x20\x20\x20\x20\x20\x20\x20\x20queue.offer(3);\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(queue.poll());\x20\x20//\x201\x20(FIFO)\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(queue.peek());\x20\x20//\x202\x20(삭제\x20없이\x20조회)\x0a\x20\x20\x20\x20}\x0a}','blank':'Queue<Integer>\x20queue\x20=\x20new\x20___<>();','answer':a2_0x13fd6f(0x676),'options':[a2_0x13fd6f(0x676),a2_0x13fd6f(0x29a),a2_0x13fd6f(0x547),a2_0x13fd6f(0x338)],'blocks':[a2_0x13fd6f(0x3b8),a2_0x13fd6f(0x2dd),a2_0x13fd6f(0x45e),a2_0x13fd6f(0x52e)],'hint':a2_0x13fd6f(0x257)}]},{'cat':0x4,'id':0x2,'title':'TreeMap\x20&\x20PriorityQueue','prompt':a2_0x13fd6f(0x412),'full':a2_0x13fd6f(0x5b6),'hint':a2_0x13fd6f(0x45d),'concept':{'title':a2_0x13fd6f(0x796),'desc':a2_0x13fd6f(0x3a2),'syntax':a2_0x13fd6f(0x838),'note':a2_0x13fd6f(0x284),'dart':a2_0x13fd6f(0x4ae)},'drills':[{'title':'드릴\x201\x20—\x20PriorityQueue\x20최솟값\x20poll','prompt':a2_0x13fd6f(0x5bd),'full':a2_0x13fd6f(0x6f6),'blank':a2_0x13fd6f(0x65e),'answer':a2_0x13fd6f(0x657),'options':['poll','pop',a2_0x13fd6f(0x6f2),'get'],'blocks':['PriorityQueue<Integer>\x20pq\x20=\x20new\x20PriorityQueue<>();',a2_0x13fd6f(0x5b7),a2_0x13fd6f(0x70a),a2_0x13fd6f(0x70a)],'hint':a2_0x13fd6f(0x4ca)},{'title':a2_0x13fd6f(0x82d),'prompt':a2_0x13fd6f(0x311),'full':a2_0x13fd6f(0x422),'blank':a2_0x13fd6f(0x368),'answer':'reverseOrder','options':[a2_0x13fd6f(0x32d),a2_0x13fd6f(0x25a),a2_0x13fd6f(0x3a8),a2_0x13fd6f(0x51a)],'blocks':[a2_0x13fd6f(0x404),a2_0x13fd6f(0x7ca),a2_0x13fd6f(0x4a6)],'hint':'Collections.reverseOrder()를\x20생성자에\x20전달하면\x20최대\x20힙이\x20됩니다.'},{'title':a2_0x13fd6f(0x44d),'prompt':'TreeMap에\x20키를\x20넣으면\x20자동\x20정렬됩니다.\x20가장\x20작은\x20키를\x20반환하는\x20메서드를\x20완성하세요.','full':a2_0x13fd6f(0x247),'blank':'System.out.println(map.___Key());','answer':'first','options':[a2_0x13fd6f(0x629),a2_0x13fd6f(0x702),a2_0x13fd6f(0x25c),a2_0x13fd6f(0x1e6)],'blocks':[a2_0x13fd6f(0x246),'System.out.println(map.firstKey());',a2_0x13fd6f(0x3c6)],'hint':'firstKey()는\x20TreeMap의\x20가장\x20작은(첫\x20번째)\x20키를\x20반환합니다.'},{'title':a2_0x13fd6f(0x3d5),'prompt':a2_0x13fd6f(0x1e4),'full':a2_0x13fd6f(0x23b),'blank':a2_0x13fd6f(0x6dd),'answer':a2_0x13fd6f(0x338),'options':[a2_0x13fd6f(0x338),a2_0x13fd6f(0x676),a2_0x13fd6f(0x6c8),a2_0x13fd6f(0x29a)],'blocks':[a2_0x13fd6f(0x4d4),'deque.push(1);\x20deque.push(2);\x20deque.push(3);',a2_0x13fd6f(0x7e0),a2_0x13fd6f(0x53e)],'hint':a2_0x13fd6f(0x5ee)}]},{'cat':0x4,'id':0x3,'title':a2_0x13fd6f(0x295),'prompt':'<code>LinkedList</code>를\x20활용한\x20큐/덱\x20패턴과\x20<code>Iterator</code>를\x20이용한\x20안전한\x20삭제\x20방법을\x20익힙니다.','full':a2_0x13fd6f(0x4f9),'hint':a2_0x13fd6f(0x2a9),'concept':{'title':a2_0x13fd6f(0x295),'desc':a2_0x13fd6f(0x269),'syntax':'//\x20Queue로\x20사용\x0aQueue<T>\x20q\x20=\x20new\x20LinkedList<>();\x0aq.offer(x);\x20\x20\x20//\x20삽입\x0aq.poll();\x20\x20\x20\x20\x20\x20//\x20삭제+반환\x0aq.peek();\x20\x20\x20\x20\x20\x20//\x20조회\x0a\x0a//\x20Iterator\x0aIterator<T>\x20it\x20=\x20list.iterator();\x0awhile\x20(it.hasNext())\x20{\x0a\x20\x20\x20\x20T\x20val\x20=\x20it.next();\x0a\x20\x20\x20\x20if\x20(조건)\x20it.remove();\x20\x20//\x20안전한\x20삭제\x0a}\x0a\x0a//\x20ListIterator\x20(양방향)\x0aListIterator<T>\x20lit\x20=\x20list.listIterator();\x0awhile\x20(lit.hasNext())\x20{\x20...\x20}\x0awhile\x20(lit.hasPrevious())\x20{\x20...\x20}','note':a2_0x13fd6f(0x7d8),'dart':'list.removeWhere((x)\x20=>\x20조건)\x20→\x20Iterator\x20remove\x20패턴과\x20유사'},'drills':[{'title':a2_0x13fd6f(0x3f4),'prompt':'Queue는\x20FIFO입니다.\x20offer로\x20세\x20원소를\x20넣고\x20poll한\x20결과를\x20완성하세요.','full':a2_0x13fd6f(0x3c1),'blank':a2_0x13fd6f(0x71f),'answer':a2_0x13fd6f(0x676),'options':[a2_0x13fd6f(0x676),a2_0x13fd6f(0x547),a2_0x13fd6f(0x6c8),a2_0x13fd6f(0x338)],'blocks':[a2_0x13fd6f(0x604),'q.offer(1);\x20q.offer(2);\x20q.offer(3);',a2_0x13fd6f(0x4b5),a2_0x13fd6f(0x4b5)],'hint':'Queue\x20인터페이스는\x20LinkedList나\x20ArrayDeque로\x20구현합니다.\x20FIFO\x20순서로\x20poll됩니다.'},{'title':a2_0x13fd6f(0x58a),'prompt':a2_0x13fd6f(0x5ff),'full':a2_0x13fd6f(0x1e5),'blank':a2_0x13fd6f(0x332),'answer':'hasNext','options':[a2_0x13fd6f(0x820),a2_0x13fd6f(0x6a5),a2_0x13fd6f(0x55d),'next'],'blocks':[a2_0x13fd6f(0x35e),'while\x20(it.hasNext())\x20{',a2_0x13fd6f(0x2bd),'}'],'hint':'hasNext()는\x20다음\x20원소가\x20있는지\x20확인합니다.\x20next()는\x20다음\x20원소를\x20반환하고\x20이동합니다.'},{'title':'드릴\x203\x20—\x20Iterator로\x20안전한\x20삭제','prompt':'반복\x20중\x20짝수를\x20안전하게\x20삭제하는\x20코드를\x20완성하세요.','full':'import\x20java.util.*;\x0apublic\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20List<Integer>\x20list\x20=\x20new\x20ArrayList<>(Arrays.asList(1,2,3,4,5,6));\x0a\x20\x20\x20\x20\x20\x20\x20\x20Iterator<Integer>\x20it\x20=\x20list.iterator();\x0a\x20\x20\x20\x20\x20\x20\x20\x20while\x20(it.hasNext())\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20int\x20v\x20=\x20it.next();\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(v\x20%\x202\x20==\x200)\x20it.remove();\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(list);\x20\x20//\x20[1,\x203,\x205]\x0a\x20\x20\x20\x20}\x0a}','blank':a2_0x13fd6f(0x34a),'answer':'remove()','options':[a2_0x13fd6f(0x4a4),'delete()','pop()',a2_0x13fd6f(0x81c)],'blocks':['Iterator<Integer>\x20it\x20=\x20list.iterator();',a2_0x13fd6f(0x483),'\x20\x20\x20\x20int\x20v\x20=\x20it.next();',a2_0x13fd6f(0x294),'}',a2_0x13fd6f(0x690)],'hint':a2_0x13fd6f(0x234)},{'title':a2_0x13fd6f(0x823),'prompt':a2_0x13fd6f(0x2e2),'full':a2_0x13fd6f(0x3f2),'blank':a2_0x13fd6f(0x7da),'answer':a2_0x13fd6f(0x74b),'options':[a2_0x13fd6f(0x74b),a2_0x13fd6f(0x6a4),a2_0x13fd6f(0x6d4),'hasNext'],'blocks':[a2_0x13fd6f(0x775),'while\x20(!q.isEmpty())\x20{',a2_0x13fd6f(0x7f5),'}'],'hint':'isEmpty()는\x20컬렉션이\x20비어\x20있으면\x20true를\x20반환합니다.\x20!isEmpty()가\x20참인\x20동안\x20poll합니다.'}]},{'cat':0x5,'id':0x0,'title':'클래스\x20구조와\x20static\x20메서드','prompt':'코딩테스트에서\x20가장\x20많이\x20쓰는\x20패턴인\x20<code>static</code>\x20메서드\x20정의와\x20호출\x20방법을\x20익힙니다.','full':a2_0x13fd6f(0x2a4),'hint':a2_0x13fd6f(0x852),'concept':{'title':a2_0x13fd6f(0x1f9),'desc':'Java\x20코딩테스트에서는\x20보통\x20Main\x20클래스\x20안에\x20static\x20메서드를\x20정의해\x20사용합니다.\x20static\x20메서드는\x20객체(인스턴스)를\x20생성하지\x20않고도\x20클래스\x20이름이나\x20같은\x20클래스에서\x20바로\x20호출할\x20수\x20있습니다.','syntax':a2_0x13fd6f(0x2c4),'note':a2_0x13fd6f(0x53b),'dart':a2_0x13fd6f(0x6c3)},'drills':[{'title':a2_0x13fd6f(0x561),'prompt':a2_0x13fd6f(0x70f),'full':a2_0x13fd6f(0x21d),'blank':a2_0x13fd6f(0x5be),'answer':a2_0x13fd6f(0x683),'options':[a2_0x13fd6f(0x683),a2_0x13fd6f(0x83b),a2_0x13fd6f(0x4dd),a2_0x13fd6f(0x3cd)],'blocks':[a2_0x13fd6f(0x84f),a2_0x13fd6f(0x664),'}',a2_0x13fd6f(0x52d)],'hint':'main에서\x20호출하는\x20보조\x20메서드는\x20static으로\x20선언해야\x20합니다.'},{'title':a2_0x13fd6f(0x243),'prompt':a2_0x13fd6f(0x71e),'full':a2_0x13fd6f(0x64f),'blank':'static\x20___\x20isEven(int\x20n)','answer':a2_0x13fd6f(0x617),'options':[a2_0x13fd6f(0x617),'bool',a2_0x13fd6f(0x776),a2_0x13fd6f(0x637)],'blocks':[a2_0x13fd6f(0x37d),a2_0x13fd6f(0x3ec),'}',a2_0x13fd6f(0x2bc)],'hint':a2_0x13fd6f(0x1d7)},{'title':a2_0x13fd6f(0x4cb),'prompt':a2_0x13fd6f(0x82e),'full':a2_0x13fd6f(0x51f),'blank':a2_0x13fd6f(0x6a6),'answer':a2_0x13fd6f(0x1c7),'options':[a2_0x13fd6f(0x1c7),a2_0x13fd6f(0x408),a2_0x13fd6f(0x797),a2_0x13fd6f(0x278)],'blocks':[a2_0x13fd6f(0x71d),a2_0x13fd6f(0x437)],'hint':a2_0x13fd6f(0x5a0)},{'title':a2_0x13fd6f(0x4d7),'prompt':a2_0x13fd6f(0x44f),'full':'public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20static\x20class\x20Point\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20int\x20x,\x20y;\x0a\x20\x20\x20\x20\x20\x20\x20\x20Point(int\x20x,\x20int\x20y)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20this.x\x20=\x20x;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20this.y\x20=\x20y;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20Point\x20p\x20=\x20new\x20Point(5,\x2010);\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(p.x);\x20\x20//\x205\x0a\x20\x20\x20\x20}\x0a}','blank':a2_0x13fd6f(0x6e4),'answer':a2_0x13fd6f(0x34e),'options':[a2_0x13fd6f(0x34e),a2_0x13fd6f(0x207),'me',a2_0x13fd6f(0x675)],'blocks':['Point(int\x20x,\x20int\x20y)\x20{',a2_0x13fd6f(0x1db),a2_0x13fd6f(0x67f),'}'],'hint':'this는\x20현재\x20객체를\x20가리킵니다.\x20this.x는\x20필드,\x20x는\x20매개변수입니다.'}]},{'cat':0x5,'id':0x1,'title':'접근제어자와\x20캡슐화','prompt':a2_0x13fd6f(0x200),'full':a2_0x13fd6f(0x587),'hint':a2_0x13fd6f(0x62f),'concept':{'title':'접근제어자와\x20getter/setter','desc':a2_0x13fd6f(0x30d),'syntax':a2_0x13fd6f(0x266),'note':a2_0x13fd6f(0x252),'dart':a2_0x13fd6f(0x800)},'drills':[{'title':a2_0x13fd6f(0x6f7),'prompt':a2_0x13fd6f(0x27a),'full':a2_0x13fd6f(0x439),'blank':a2_0x13fd6f(0x7fc),'answer':'private','options':[a2_0x13fd6f(0x750),a2_0x13fd6f(0x83b),a2_0x13fd6f(0x4aa),a2_0x13fd6f(0x683)],'blocks':['static\x20class\x20Box\x20{',a2_0x13fd6f(0x222),a2_0x13fd6f(0x66e),'\x20\x20\x20\x20public\x20int\x20getSize()\x20{\x20return\x20size;\x20}','}'],'hint':a2_0x13fd6f(0x302)},{'title':'드릴\x202\x20—\x20getter\x20메서드','prompt':a2_0x13fd6f(0x7b9),'full':a2_0x13fd6f(0x3c7),'blank':a2_0x13fd6f(0x457),'answer':a2_0x13fd6f(0x7a5),'options':[a2_0x13fd6f(0x7a5),a2_0x13fd6f(0x53a),a2_0x13fd6f(0x682),a2_0x13fd6f(0x4cd)],'blocks':['private\x20String\x20name;',a2_0x13fd6f(0x7a4),a2_0x13fd6f(0x779)],'hint':a2_0x13fd6f(0x655)},{'title':a2_0x13fd6f(0x858),'prompt':a2_0x13fd6f(0x59b),'full':'public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20static\x20class\x20Point\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20int\x20x,\x20y;\x0a\x20\x20\x20\x20\x20\x20\x20\x20Point(int\x20x,\x20int\x20y)\x20{\x20this.x\x20=\x20x;\x20this.y\x20=\x20y;\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20@Override\x0a\x20\x20\x20\x20\x20\x20\x20\x20public\x20String\x20toString()\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20\x22(\x22\x20+\x20x\x20+\x20\x22,\x20\x22\x20+\x20y\x20+\x20\x22)\x22;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20Point\x20p\x20=\x20new\x20Point(3,\x204);\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(p);\x20\x20//\x20(3,\x204)\x0a\x20\x20\x20\x20}\x0a}','blank':a2_0x13fd6f(0x2c0),'answer':a2_0x13fd6f(0x537),'options':[a2_0x13fd6f(0x537),'print',a2_0x13fd6f(0x764),a2_0x13fd6f(0x57b)],'blocks':['@Override',a2_0x13fd6f(0x6c6),a2_0x13fd6f(0x3a7),'}'],'hint':'toString()은\x20객체를\x20문자열로\x20표현합니다.\x20System.out.println(객체)\x20시\x20자동으로\x20호출됩니다.'},{'title':a2_0x13fd6f(0x2c2),'prompt':a2_0x13fd6f(0x3da),'full':a2_0x13fd6f(0x3fc),'blank':'Counter\x20c\x20=\x20Counter.___();','answer':'create','options':['create','new','make',a2_0x13fd6f(0x278)],'blocks':[a2_0x13fd6f(0x256),a2_0x13fd6f(0x6a3),a2_0x13fd6f(0x558)],'hint':a2_0x13fd6f(0x5ad)}]},{'cat':0x5,'id':0x2,'title':'상속과\x20다형성','prompt':'Java의\x20<code>extends</code>로\x20클래스를\x20상속하고,\x20<code>@Override</code>로\x20메서드를\x20재정의하는\x20방법을\x20익힙니다.','full':a2_0x13fd6f(0x653),'hint':a2_0x13fd6f(0x5ac),'concept':{'title':a2_0x13fd6f(0x715),'desc':'Java에서\x20클래스는\x20extends\x20키워드로\x20단일\x20상속합니다.\x20자식\x20클래스는\x20부모의\x20필드/메서드를\x20물려받고,\x20@Override로\x20메서드를\x20재정의할\x20수\x20있습니다.\x20부모\x20타입으로\x20자식\x20객체를\x20참조하는\x20것이\x20다형성입니다.','syntax':a2_0x13fd6f(0x568),'note':a2_0x13fd6f(0x203),'dart':a2_0x13fd6f(0x7b0)},'drills':[{'title':a2_0x13fd6f(0x559),'prompt':'Animal을\x20상속하는\x20Dog\x20클래스\x20선언을\x20완성하세요.','full':a2_0x13fd6f(0x581),'blank':a2_0x13fd6f(0x426),'answer':a2_0x13fd6f(0x2b7),'options':[a2_0x13fd6f(0x2b7),'implements',a2_0x13fd6f(0x72c),'is'],'blocks':[a2_0x13fd6f(0x221),a2_0x13fd6f(0x4d1),'\x20\x20\x20\x20String\x20sound()\x20{\x20return\x20\x22멍멍\x22;\x20}','}'],'hint':a2_0x13fd6f(0x1e3)},{'title':a2_0x13fd6f(0x2c1),'prompt':a2_0x13fd6f(0x1fd),'full':a2_0x13fd6f(0x472),'blank':'___(color);\x20\x20//\x20부모\x20생성자','answer':'super','options':[a2_0x13fd6f(0x785),a2_0x13fd6f(0x34e),a2_0x13fd6f(0x2a5),a2_0x13fd6f(0x265)],'blocks':[a2_0x13fd6f(0x5e8),a2_0x13fd6f(0x74f),a2_0x13fd6f(0x530),'}'],'hint':'super()는\x20부모\x20클래스의\x20생성자를\x20호출합니다.\x20자식\x20생성자의\x20첫\x20줄이어야\x20합니다.'},{'title':a2_0x13fd6f(0x5f6),'prompt':'부모\x20메서드를\x20재정의하는\x20어노테이션과\x20코드를\x20완성하세요.','full':a2_0x13fd6f(0x347),'blank':a2_0x13fd6f(0x59d),'answer':a2_0x13fd6f(0x533),'options':[a2_0x13fd6f(0x533),a2_0x13fd6f(0x1ef),'Abstract',a2_0x13fd6f(0x3f5)],'blocks':[a2_0x13fd6f(0x33f),a2_0x13fd6f(0x4d1),a2_0x13fd6f(0x4e3),'}'],'hint':a2_0x13fd6f(0x336)},{'title':a2_0x13fd6f(0x758),'prompt':a2_0x13fd6f(0x2af),'full':'public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20static\x20class\x20Animal\x20{}\x0a\x20\x20\x20\x20static\x20class\x20Dog\x20extends\x20Animal\x20{}\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20Animal\x20a\x20=\x20new\x20Dog();\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(a\x20instanceof\x20Dog)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(\x22Dog\x20타입입니다\x22);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a}','blank':a2_0x13fd6f(0x434),'answer':a2_0x13fd6f(0x67d),'options':[a2_0x13fd6f(0x67d),'is',a2_0x13fd6f(0x519),'isInstance'],'blocks':[a2_0x13fd6f(0x24f),a2_0x13fd6f(0x63b),a2_0x13fd6f(0x4cf),'}'],'hint':'instanceof는\x20객체가\x20특정\x20클래스의\x20인스턴스인지\x20확인합니다.'}]},{'cat':0x5,'id':0x3,'title':'인터페이스와\x20람다','prompt':a2_0x13fd6f(0x814),'full':a2_0x13fd6f(0x4ad),'hint':a2_0x13fd6f(0x3d8),'concept':{'title':'인터페이스와\x20람다식','desc':a2_0x13fd6f(0x264),'syntax':a2_0x13fd6f(0x660),'note':a2_0x13fd6f(0x5a2),'dart':a2_0x13fd6f(0x507)},'drills':[{'title':a2_0x13fd6f(0x212),'prompt':a2_0x13fd6f(0x3c0),'full':a2_0x13fd6f(0x36c),'blank':a2_0x13fd6f(0x806),'answer':'-\x20','options':['-\x20','+\x20','*\x20','/\x20'],'blocks':[a2_0x13fd6f(0x711),a2_0x13fd6f(0x690)],'hint':'(a,\x20b)\x20->\x20a\x20-\x20b:\x20a\x20<\x20b이면\x20음수\x20반환\x20→\x20a가\x20앞으로\x20→\x20오름차순.'},{'title':a2_0x13fd6f(0x85a),'prompt':'절댓값\x20기준\x20오름차순으로\x20정렬하는\x20람다를\x20완성하세요.','full':a2_0x13fd6f(0x229),'blank':'list.sort((a,\x20b)\x20->\x20Math.abs(a)\x20-\x20Math.abs(___));','answer':'b','options':['b','a','0','1'],'blocks':[a2_0x13fd6f(0x3d3),a2_0x13fd6f(0x690)],'hint':a2_0x13fd6f(0x400)},{'title':a2_0x13fd6f(0x3e5),'prompt':a2_0x13fd6f(0x219),'full':a2_0x13fd6f(0x29b),'blank':a2_0x13fd6f(0x84d),'answer':'b[1]','options':[a2_0x13fd6f(0x255),a2_0x13fd6f(0x714),a2_0x13fd6f(0x1e7),a2_0x13fd6f(0x7a3)],'blocks':['Arrays.sort(arr,\x20(a,\x20b)\x20->\x20{',a2_0x13fd6f(0x6b5),a2_0x13fd6f(0x81e),a2_0x13fd6f(0x7d3)],'hint':a2_0x13fd6f(0x5e7)},{'title':a2_0x13fd6f(0x415),'prompt':a2_0x13fd6f(0x443),'full':'import\x20java.util.*;\x0apublic\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20String[]\x20words\x20=\x20{\x22dog\x22,\x22cat\x22,\x22elephant\x22,\x22bee\x22,\x22ant\x22};\x0a\x20\x20\x20\x20\x20\x20\x20\x20Arrays.sort(words,\x20(a,\x20b)\x20->\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(a.length()\x20!=\x20b.length())\x20return\x20a.length()\x20-\x20b.length();\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20a.compareTo(b);\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(Arrays.toString(words));\x0a\x20\x20\x20\x20}\x0a}','blank':a2_0x13fd6f(0x351),'answer':a2_0x13fd6f(0x466),'options':[a2_0x13fd6f(0x466),'equals','compare',a2_0x13fd6f(0x7e3)],'blocks':[a2_0x13fd6f(0x7af),a2_0x13fd6f(0x6ea),'\x20\x20\x20\x20return\x20a.compareTo(b);','});',a2_0x13fd6f(0x419)],'hint':a2_0x13fd6f(0x391)}]},{'cat':0x6,'id':0x0,'title':a2_0x13fd6f(0x27f),'prompt':a2_0x13fd6f(0x488),'full':a2_0x13fd6f(0x720),'hint':a2_0x13fd6f(0x3f9),'concept':{'title':a2_0x13fd6f(0x27f),'desc':a2_0x13fd6f(0x73b),'syntax':a2_0x13fd6f(0x6e3),'note':a2_0x13fd6f(0x845),'dart':a2_0x13fd6f(0x4c9)},'drills':[{'title':a2_0x13fd6f(0x2f6),'prompt':a2_0x13fd6f(0x6ef),'full':a2_0x13fd6f(0x67b),'blank':a2_0x13fd6f(0x360),'answer':a2_0x13fd6f(0x7f1),'options':['length',a2_0x13fd6f(0x780),a2_0x13fd6f(0x61c),a2_0x13fd6f(0x623)],'blocks':['String\x20s\x20=\x20\x22Hello\x22;',a2_0x13fd6f(0x339),a2_0x13fd6f(0x2e5)],'hint':a2_0x13fd6f(0x7ed)},{'title':a2_0x13fd6f(0x6ec),'prompt':a2_0x13fd6f(0x6e1),'full':a2_0x13fd6f(0x54f),'blank':a2_0x13fd6f(0x579),'answer':a2_0x13fd6f(0x4f4),'options':[a2_0x13fd6f(0x4f4),a2_0x13fd6f(0x682),a2_0x13fd6f(0x7e3),'at'],'blocks':[a2_0x13fd6f(0x706),a2_0x13fd6f(0x4ab),'System.out.println(c);'],'hint':a2_0x13fd6f(0x7d0)},{'title':'드릴\x203\x20—\x20substring\x20추출','prompt':a2_0x13fd6f(0x3b1),'full':a2_0x13fd6f(0x6cc),'blank':a2_0x13fd6f(0x68b),'answer':a2_0x13fd6f(0x5b1),'options':['substring','slice',a2_0x13fd6f(0x3dc),a2_0x13fd6f(0x5bc)],'blocks':[a2_0x13fd6f(0x3a9),a2_0x13fd6f(0x4ec),a2_0x13fd6f(0x737)],'hint':a2_0x13fd6f(0x490)},{'title':a2_0x13fd6f(0x22e),'prompt':a2_0x13fd6f(0x320),'full':'public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20String\x20s\x20=\x20\x22apple,banana,cherry\x22;\x0a\x20\x20\x20\x20\x20\x20\x20\x20String[]\x20parts\x20=\x20s.split(\x22,\x22);\x0a\x20\x20\x20\x20\x20\x20\x20\x20for\x20(String\x20part\x20:\x20parts)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(part);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a}','blank':'String[]\x20parts\x20=\x20s.___(\x22.\x22);','answer':a2_0x13fd6f(0x582),'options':[a2_0x13fd6f(0x582),'split(\x22\x20\x22)',a2_0x13fd6f(0x4c1),a2_0x13fd6f(0x6a0)],'blocks':[a2_0x13fd6f(0x49a),'String[]\x20parts\x20=\x20s.split(\x22,\x22);',a2_0x13fd6f(0x7f9),a2_0x13fd6f(0x602),'}'],'hint':a2_0x13fd6f(0x5de)}]},{'cat':0x6,'id':0x1,'title':'StringBuilder\x20—\x20효율적\x20문자열\x20조합','prompt':a2_0x13fd6f(0x4a5),'full':a2_0x13fd6f(0x736),'hint':a2_0x13fd6f(0x778),'concept':{'title':a2_0x13fd6f(0x843),'desc':'Java의\x20String은\x20불변(immutable)입니다.\x20반복문\x20안에서\x20str\x20+=\x20x를\x20하면\x20매번\x20새\x20String\x20객체가\x20만들어져\x20O(n²)의\x20비효율이\x20발생합니다.\x20StringBuilder를\x20사용하면\x20O(n)으로\x20해결됩니다.','syntax':'StringBuilder\x20sb\x20=\x20new\x20StringBuilder();\x0a\x0asb.append(\x22Hello\x22);\x20\x20\x20\x20//\x20끝에\x20추가\x0asb.append(42);\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20숫자도\x20자동\x20변환\x0asb.insert(0,\x20\x22Hi\x20\x22);\x20\x20//\x20특정\x20위치에\x20삽입\x0asb.reverse();\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20뒤집기\x20(palindrome\x20검사에\x20유용!)\x0asb.deleteCharAt(0);\x20\x20\x20\x20//\x20특정\x20인덱스\x20문자\x20삭제\x0asb.delete(1,\x203);\x20\x20\x20\x20\x20\x20\x20//\x20범위\x20삭제\x0a\x0aString\x20result\x20=\x20sb.toString();\x20\x20//\x20String으로\x20변환','note':a2_0x13fd6f(0x670),'dart':a2_0x13fd6f(0x3d9)},'drills':[{'title':a2_0x13fd6f(0x5f2),'prompt':a2_0x13fd6f(0x41d),'full':'public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20StringBuilder\x20sb\x20=\x20new\x20StringBuilder();\x0a\x20\x20\x20\x20\x20\x20\x20\x20sb.append(\x22Hello\x22);\x0a\x20\x20\x20\x20\x20\x20\x20\x20sb.append(\x22,\x20World!\x22);\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(sb.toString());\x20\x20//\x20Hello,\x20World!\x0a\x20\x20\x20\x20}\x0a}','blank':a2_0x13fd6f(0x6c5),'answer':'append','options':[a2_0x13fd6f(0x792),'add',a2_0x13fd6f(0x746),a2_0x13fd6f(0x6b3)],'blocks':[a2_0x13fd6f(0x585),a2_0x13fd6f(0x784),a2_0x13fd6f(0x7e1),a2_0x13fd6f(0x452)],'hint':'append()는\x20StringBuilder\x20끝에\x20문자열/숫자를\x20추가합니다.\x20Python의\x20+=\x20또는\x20join과\x20유사합니다.'},{'title':'드릴\x202\x20—\x20reverse()로\x20뒤집기','prompt':a2_0x13fd6f(0x22c),'full':'public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20String\x20s\x20=\x20\x22Hello\x22;\x0a\x20\x20\x20\x20\x20\x20\x20\x20String\x20reversed\x20=\x20new\x20StringBuilder(s).reverse().toString();\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(reversed);\x20\x20//\x20olleH\x0a\x20\x20\x20\x20}\x0a}','blank':a2_0x13fd6f(0x731),'answer':a2_0x13fd6f(0x25a),'options':['reverse','flip',a2_0x13fd6f(0x743),'mirror'],'blocks':['String\x20s\x20=\x20\x22Hello\x22;',a2_0x13fd6f(0x45f),a2_0x13fd6f(0x448)],'hint':a2_0x13fd6f(0x7eb)},{'title':a2_0x13fd6f(0x366),'prompt':a2_0x13fd6f(0x2ac),'full':a2_0x13fd6f(0x839),'blank':a2_0x13fd6f(0x31a),'answer':a2_0x13fd6f(0x537),'options':[a2_0x13fd6f(0x537),a2_0x13fd6f(0x632),a2_0x13fd6f(0x2f9),a2_0x13fd6f(0x4e6)],'blocks':[a2_0x13fd6f(0x585),a2_0x13fd6f(0x6ae),a2_0x13fd6f(0x427),a2_0x13fd6f(0x5aa)],'hint':a2_0x13fd6f(0x647)},{'title':a2_0x13fd6f(0x5a5),'prompt':'문자열의\x20각\x20문자를\x20순회해\x20대문자로\x20변환하는\x20코드를\x20완성하세요.','full':a2_0x13fd6f(0x62c),'blank':a2_0x13fd6f(0x54b),'answer':'toCharArray','options':[a2_0x13fd6f(0x25b),a2_0x13fd6f(0x3f0),a2_0x13fd6f(0x26a),a2_0x13fd6f(0x421)],'blocks':[a2_0x13fd6f(0x5b9),'char[]\x20chars\x20=\x20s.toCharArray();','for\x20(int\x20i\x20=\x200;\x20i\x20<\x20chars.length;\x20i++)\x20{',a2_0x13fd6f(0x7c1),'}','System.out.println(new\x20String(chars));'],'hint':a2_0x13fd6f(0x447)}]},{'cat':0x6,'id':0x2,'title':a2_0x13fd6f(0x52c),'prompt':a2_0x13fd6f(0x672),'full':a2_0x13fd6f(0x2ff),'hint':'split()은\x20String[]를\x20반환합니다.\x20trim()은\x20앞뒤\x20공백/개행을\x20제거합니다.','concept':{'title':'문자열\x20파싱\x20메서드','desc':a2_0x13fd6f(0x392),'syntax':a2_0x13fd6f(0x78e),'note':'💡\x20split(\x22\x5c\x5c.\x22)처럼\x20.은\x20정규식\x20메타문자라\x20이스케이프\x20필요.\x20공백\x20구분은\x20split(\x22\x20\x22)\x20또는\x20split(\x22\x20+\x22).','dart':'s.trim()\x20동일\x0as.split(\x27,\x27)\x20동일\x20(List\x20반환)\x0as.startsWith(\x27he\x27)\x20동일\x0as.contains(\x27ll\x27)\x20동일'},'drills':[{'title':a2_0x13fd6f(0x474),'prompt':a2_0x13fd6f(0x68f),'full':'public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20String\x20s\x20=\x20\x22\x20\x20hello\x20\x20\x22;\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(s.trim());\x20\x20//\x20\x22hello\x22\x0a\x20\x20\x20\x20}\x0a}','blank':a2_0x13fd6f(0x516),'answer':a2_0x13fd6f(0x388),'options':[a2_0x13fd6f(0x388),'strip',a2_0x13fd6f(0x4bf),a2_0x13fd6f(0x1ce)],'blocks':['String\x20s\x20=\x20\x22\x20\x20hello\x20\x20\x22;',a2_0x13fd6f(0x242)],'hint':a2_0x13fd6f(0x1d2)},{'title':'드릴\x202\x20—\x20startsWith\x20접두사\x20확인','prompt':a2_0x13fd6f(0x1e1),'full':a2_0x13fd6f(0x317),'blank':'s.___(\x20\x22Java\x22\x20)','answer':'startsWith','options':['startsWith',a2_0x13fd6f(0x337),a2_0x13fd6f(0x7e3),a2_0x13fd6f(0x209)],'blocks':[a2_0x13fd6f(0x36d),'System.out.println(s.startsWith(\x22Java\x22));','System.out.println(s.startsWith(\x22Python\x22));'],'hint':a2_0x13fd6f(0x2b1)},{'title':'드릴\x203\x20—\x20String.join으로\x20결합','prompt':'문자열\x20배열을\x20\x27-\x27로\x20연결하는\x20코드를\x20완성하세요.','full':a2_0x13fd6f(0x76f),'blank':a2_0x13fd6f(0x56b),'answer':'join','options':[a2_0x13fd6f(0x816),a2_0x13fd6f(0x273),a2_0x13fd6f(0x38f),a2_0x13fd6f(0x805)],'blocks':['String[]\x20parts\x20=\x20{\x222024\x22,\x20\x2201\x22,\x20\x2215\x22};',a2_0x13fd6f(0x2be),a2_0x13fd6f(0x5aa)],'hint':a2_0x13fd6f(0x74c)},{'title':a2_0x13fd6f(0x4e0),'prompt':a2_0x13fd6f(0x304),'full':a2_0x13fd6f(0x735),'blank':'String\x20result\x20=\x20s.replace(\x22Python\x22,\x20___);','answer':a2_0x13fd6f(0x74e),'options':[a2_0x13fd6f(0x74e),'Java','\x27Java\x27',a2_0x13fd6f(0x38c)],'blocks':[a2_0x13fd6f(0x42b),a2_0x13fd6f(0x641),a2_0x13fd6f(0x5aa)],'hint':a2_0x13fd6f(0x3fe)}]},{'cat':0x6,'id':0x3,'title':a2_0x13fd6f(0x394),'prompt':a2_0x13fd6f(0x494),'full':a2_0x13fd6f(0x213),'hint':a2_0x13fd6f(0x6f9),'concept':{'title':a2_0x13fd6f(0x25d),'desc':a2_0x13fd6f(0x4e9),'syntax':a2_0x13fd6f(0x372),'note':a2_0x13fd6f(0x4f0),'dart':a2_0x13fd6f(0x3b3)},'drills':[{'title':a2_0x13fd6f(0x1fc),'prompt':'문자열이\x20숫자로만\x20이루어졌는지\x20확인하는\x20코드를\x20완성하세요.','full':'public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20String\x20s\x20=\x20\x2212345\x22;\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(s.matches(\x22[0-9]+\x22));\x20\x20//\x20true\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(\x22abc\x22.matches(\x22[0-9]+\x22));\x20//\x20false\x0a\x20\x20\x20\x20}\x0a}','blank':a2_0x13fd6f(0x616),'answer':'[0-9]','options':['[0-9]',a2_0x13fd6f(0x4eb),a2_0x13fd6f(0x42a),a2_0x13fd6f(0x2b5)],'blocks':[a2_0x13fd6f(0x380),a2_0x13fd6f(0x4fd),a2_0x13fd6f(0x1f8)],'hint':'[0-9]+는\x20숫자\x20한\x20자리\x20이상을\x20의미합니다.\x20matches()는\x20전체\x20문자열이\x20패턴에\x20맞아야\x20true입니다.'},{'title':a2_0x13fd6f(0x45b),'prompt':a2_0x13fd6f(0x202),'full':a2_0x13fd6f(0x65a),'blank':a2_0x13fd6f(0x3e9),'answer':a2_0x13fd6f(0x566),'options':['isDigit',a2_0x13fd6f(0x1f3),'isInt',a2_0x13fd6f(0x34c)],'blocks':[a2_0x13fd6f(0x33c),a2_0x13fd6f(0x1f6)],'hint':a2_0x13fd6f(0x747)},{'title':a2_0x13fd6f(0x819),'prompt':a2_0x13fd6f(0x825),'full':a2_0x13fd6f(0x34f),'blank':a2_0x13fd6f(0x699),'answer':a2_0x13fd6f(0x793),'options':[a2_0x13fd6f(0x793),a2_0x13fd6f(0x7cb),'\x5c\x5cw',a2_0x13fd6f(0x438)],'blocks':['String\x20s\x20=\x20\x22a1b2c3\x22;','String\x20result\x20=\x20s.replaceAll(\x22[0-9]\x22,\x20\x22\x22);',a2_0x13fd6f(0x5aa)],'hint':a2_0x13fd6f(0x6da)},{'title':'드릴\x204\x20—\x20팰린드롬\x20검사','prompt':a2_0x13fd6f(0x204),'full':a2_0x13fd6f(0x6b7),'blank':'String\x20rev\x20=\x20new\x20StringBuilder(s).___.toString();','answer':a2_0x13fd6f(0x5d7),'options':[a2_0x13fd6f(0x5d7),a2_0x13fd6f(0x5d6),'mirror()','sort()'],'blocks':['String\x20rev\x20=\x20new\x20StringBuilder(s).reverse().toString();',a2_0x13fd6f(0x345)],'hint':'StringBuilder의\x20reverse()로\x20문자열을\x20뒤집은\x20뒤\x20equals()로\x20원본과\x20비교합니다.'}]},{'cat':0x7,'id':0x0,'title':'Arrays.sort와\x20기본\x20정렬','prompt':a2_0x13fd6f(0x6be),'full':a2_0x13fd6f(0x2f0),'hint':a2_0x13fd6f(0x642),'concept':{'title':'Arrays.sort\x20—\x20배열\x20정렬','desc':'Arrays.sort()는\x20Java\x20기본\x20라이브러리의\x20배열\x20정렬\x20메서드입니다.\x20int[]\x20같은\x20기본형\x20배열에\x20사용하며,\x20원본\x20배열을\x20수정합니다.\x20Python의\x20list.sort()와\x20유사합니다.','syntax':a2_0x13fd6f(0x742),'note':'💡\x20Arrays.sort()는\x20기본형\x20배열에서\x20내림차순\x20정렬\x20불가!\x20내림차순은\x20Integer[]\x20(래퍼\x20클래스)으로\x20변환\x20후\x20Collections.reverseOrder()\x20사용.','dart':a2_0x13fd6f(0x1fa)},'drills':[{'title':a2_0x13fd6f(0x276),'prompt':'배열을\x20오름차순으로\x20정렬하는\x20코드를\x20완성하세요.','full':a2_0x13fd6f(0x576),'blank':'___.sort(arr);','answer':a2_0x13fd6f(0x28c),'options':['Arrays',a2_0x13fd6f(0x633),a2_0x13fd6f(0x52b),a2_0x13fd6f(0x573)],'blocks':[a2_0x13fd6f(0x60f),'int[]\x20arr\x20=\x20{3,\x201,\x204,\x201,\x205};','Arrays.sort(arr);','System.out.println(Arrays.toString(arr));'],'hint':a2_0x13fd6f(0x4ce)},{'title':a2_0x13fd6f(0x68c),'prompt':'문자열\x20배열을\x20길이\x20기준\x20오름차순으로\x20정렬하는\x20람다를\x20완성하세요.','full':a2_0x13fd6f(0x722),'blank':'Arrays.sort(words,\x20(a,\x20b)\x20->\x20a.___()\x20-\x20b.___());','answer':a2_0x13fd6f(0x7f1),'options':[a2_0x13fd6f(0x7f1),'size','compareTo',a2_0x13fd6f(0x4f4)],'blocks':[a2_0x13fd6f(0x795),'Arrays.sort(words,\x20(a,\x20b)\x20->\x20a.length()\x20-\x20b.length());',a2_0x13fd6f(0x419)],'hint':'람다\x20Comparator:\x20(a,\x20b)\x20->\x20양수면\x20b가\x20앞,\x20음수면\x20a가\x20앞.\x20a.length()\x20-\x20b.length()는\x20오름차순.'},{'title':a2_0x13fd6f(0x319),'prompt':a2_0x13fd6f(0x761),'full':a2_0x13fd6f(0x610),'blank':'Arrays.sort(arr,\x20(a,\x20b)\x20->\x20a[0]\x20-\x20b[___]);','answer':'0','options':['0','1','-1','2'],'blocks':[a2_0x13fd6f(0x350),'Arrays.sort(arr,\x20(a,\x20b)\x20->\x20a[0]\x20-\x20b[0]);',a2_0x13fd6f(0x1e9),a2_0x13fd6f(0x56f)],'hint':'a[0]은\x20각\x20행의\x20첫\x20번째\x20원소.\x20a[0]\x20-\x20b[0]\x20이면\x20첫\x20번째\x20열\x20기준\x20오름차순\x20정렬.'},{'title':a2_0x13fd6f(0x73d),'prompt':a2_0x13fd6f(0x5d9),'full':a2_0x13fd6f(0x6cb),'blank':a2_0x13fd6f(0x46e),'answer':a2_0x13fd6f(0x32d),'options':[a2_0x13fd6f(0x32d),a2_0x13fd6f(0x25a),a2_0x13fd6f(0x3a8),a2_0x13fd6f(0x6ed)],'blocks':[a2_0x13fd6f(0x1f2),a2_0x13fd6f(0x5e3),a2_0x13fd6f(0x690)],'hint':'Collections.reverseOrder()는\x20내림차순\x20Comparator를\x20반환합니다.'}]},{'cat':0x7,'id':0x1,'title':a2_0x13fd6f(0x4b1),'prompt':'정렬된\x20배열에서\x20<code>Arrays.binarySearch()</code>와\x20스트림을\x20이용한\x20최솟값/최댓값\x20탐색을\x20익힙니다.','full':'import\x20java.util.Arrays;\x0apublic\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20int[]\x20arr\x20=\x20{1,\x203,\x205,\x207,\x209};\x0a\x20\x20\x20\x20\x20\x20\x20\x20int\x20idx\x20=\x20Arrays.binarySearch(arr,\x205);\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(idx);\x20\x20//\x202\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20스트림으로\x20최댓값/최솟값\x0a\x20\x20\x20\x20\x20\x20\x20\x20int\x20max\x20=\x20Arrays.stream(arr).max().getAsInt();\x0a\x20\x20\x20\x20\x20\x20\x20\x20int\x20min\x20=\x20Arrays.stream(arr).min().getAsInt();\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(max);\x20\x20//\x209\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(min);\x20\x20//\x201\x0a\x20\x20\x20\x20}\x0a}','hint':'binarySearch는\x20정렬된\x20배열에서만\x20사용\x20가능합니다.\x20찾는\x20값이\x20없으면\x20음수를\x20반환합니다.','concept':{'title':a2_0x13fd6f(0x4b1),'desc':a2_0x13fd6f(0x522),'syntax':a2_0x13fd6f(0x2b4),'note':'💡\x20binarySearch\x20전에\x20반드시\x20Arrays.sort()\x20먼저!\x20정렬되지\x20않은\x20배열에서는\x20결과가\x20보장되지\x20않습니다.','dart':a2_0x13fd6f(0x298)},'drills':[{'title':a2_0x13fd6f(0x215),'prompt':a2_0x13fd6f(0x4d3),'full':a2_0x13fd6f(0x228),'blank':a2_0x13fd6f(0x31b),'answer':a2_0x13fd6f(0x46a),'options':['binarySearch',a2_0x13fd6f(0x2ae),a2_0x13fd6f(0x24c),a2_0x13fd6f(0x7e3)],'blocks':['int[]\x20arr\x20=\x20{1,\x203,\x205,\x207,\x209};',a2_0x13fd6f(0x67c),a2_0x13fd6f(0x619)],'hint':a2_0x13fd6f(0x29c)},{'title':a2_0x13fd6f(0x4b9),'prompt':a2_0x13fd6f(0x75e),'full':a2_0x13fd6f(0x5d2),'blank':'int\x20max\x20=\x20Arrays.stream(arr).___().getAsInt();','answer':a2_0x13fd6f(0x51a),'options':[a2_0x13fd6f(0x51a),a2_0x13fd6f(0x462),a2_0x13fd6f(0x1df),a2_0x13fd6f(0x416)],'blocks':[a2_0x13fd6f(0x5b8),a2_0x13fd6f(0x27b),a2_0x13fd6f(0x69d)],'hint':'Arrays.stream(arr).max()는\x20OptionalInt를\x20반환합니다.\x20getAsInt()로\x20값을\x20꺼냅니다.'},{'title':a2_0x13fd6f(0x53d),'prompt':a2_0x13fd6f(0x7d9),'full':a2_0x13fd6f(0x4c2),'blank':a2_0x13fd6f(0x238),'answer':'<','options':['<','>','<=','>='],'blocks':[a2_0x13fd6f(0x6ca),'for\x20(int\x20x\x20:\x20arr)\x20{',a2_0x13fd6f(0x755),'}',a2_0x13fd6f(0x804)],'hint':a2_0x13fd6f(0x745)},{'title':'드릴\x204\x20—\x20정렬\x20후\x20이진탐색','prompt':a2_0x13fd6f(0x5af),'full':a2_0x13fd6f(0x480),'blank':'___.sort(arr);\x20\x20//\x20먼저\x20정렬!','answer':a2_0x13fd6f(0x28c),'options':[a2_0x13fd6f(0x28c),a2_0x13fd6f(0x633),'Array',a2_0x13fd6f(0x450)],'blocks':[a2_0x13fd6f(0x435),a2_0x13fd6f(0x4c0),a2_0x13fd6f(0x3d2),'System.out.println(idx);'],'hint':a2_0x13fd6f(0x2e4)}]},{'cat':0x7,'id':0x2,'title':a2_0x13fd6f(0x373),'prompt':a2_0x13fd6f(0x410),'full':a2_0x13fd6f(0x592),'hint':a2_0x13fd6f(0x574),'concept':{'title':a2_0x13fd6f(0x3e6),'desc':a2_0x13fd6f(0x6f1),'syntax':a2_0x13fd6f(0x850),'note':a2_0x13fd6f(0x2d3),'dart':a2_0x13fd6f(0x77a)},'drills':[{'title':'드릴\x201\x20—\x20이중\x20for\x20완전탐색','prompt':a2_0x13fd6f(0x827),'full':'public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20int[]\x20nums\x20=\x20{2,\x207,\x2011,\x2015};\x0a\x20\x20\x20\x20\x20\x20\x20\x20int\x20target\x20=\x209;\x0a\x20\x20\x20\x20\x20\x20\x20\x20for\x20(int\x20i\x20=\x200;\x20i\x20<\x20nums.length;\x20i++)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20for\x20(int\x20j\x20=\x20i\x20+\x201;\x20j\x20<\x20nums.length;\x20j++)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(nums[i]\x20+\x20nums[j]\x20==\x20target)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(i\x20+\x20\x22\x20\x22\x20+\x20j);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a}','blank':a2_0x13fd6f(0x4d5),'answer':a2_0x13fd6f(0x7f1),'options':['length',a2_0x13fd6f(0x5cd),a2_0x13fd6f(0x61c),'len'],'blocks':[a2_0x13fd6f(0x3d6),a2_0x13fd6f(0x68a),a2_0x13fd6f(0x4fc),a2_0x13fd6f(0x4c7),a2_0x13fd6f(0x7e9),a2_0x13fd6f(0x7f6),'}'],'hint':'j는\x20i+1부터\x20시작해\x20중복\x20쌍을\x20방지합니다.\x20nums.length는\x20배열\x20길이입니다.'},{'title':a2_0x13fd6f(0x531),'prompt':a2_0x13fd6f(0x423),'full':a2_0x13fd6f(0x36e),'blank':a2_0x13fd6f(0x5c1),'answer':a2_0x13fd6f(0x572),'options':[a2_0x13fd6f(0x572),a2_0x13fd6f(0x6af),a2_0x13fd6f(0x38e),'0'],'blocks':[a2_0x13fd6f(0x2b6),a2_0x13fd6f(0x3d6),'\x20\x20\x20\x20int\x20need\x20=\x20target\x20-\x20nums[i];','\x20\x20\x20\x20if\x20(seen.containsKey(need))\x20{',a2_0x13fd6f(0x7e5),a2_0x13fd6f(0x557),a2_0x13fd6f(0x7f6),a2_0x13fd6f(0x35a),'}'],'hint':a2_0x13fd6f(0x453)},{'title':a2_0x13fd6f(0x813),'prompt':'배열의\x20연속된\x20부분합\x20중\x20최댓값을\x20구하는\x20코드(카데인\x20알고리즘)를\x20완성하세요.','full':a2_0x13fd6f(0x3bd),'blank':a2_0x13fd6f(0x290),'answer':a2_0x13fd6f(0x80c),'options':[a2_0x13fd6f(0x80c),a2_0x13fd6f(0x36a),a2_0x13fd6f(0x6cf),'0'],'blocks':[a2_0x13fd6f(0x679),a2_0x13fd6f(0x1e2),'for\x20(int\x20i\x20=\x201;\x20i\x20<\x20arr.length;\x20i++)\x20{',a2_0x13fd6f(0x357),a2_0x13fd6f(0x718),'}','System.out.println(maxSum);'],'hint':a2_0x13fd6f(0x3a6)},{'title':a2_0x13fd6f(0x5df),'prompt':'배열에서\x20가능한\x20모든\x20부분집합의\x20합을\x20출력하는\x20비트마스크\x20코드를\x20완성하세요.','full':a2_0x13fd6f(0x5c0),'blank':a2_0x13fd6f(0x2d9),'answer':'n','options':['n',a2_0x13fd6f(0x60e),a2_0x13fd6f(0x49c),'3'],'blocks':[a2_0x13fd6f(0x627),a2_0x13fd6f(0x4c6),a2_0x13fd6f(0x2ad),a2_0x13fd6f(0x842),a2_0x13fd6f(0x583),'\x20\x20\x20\x20}',a2_0x13fd6f(0x365),'}'],'hint':a2_0x13fd6f(0x31f)}]},{'cat':0x7,'id':0x3,'title':a2_0x13fd6f(0x38d),'prompt':a2_0x13fd6f(0x7cd),'full':'public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20static\x20boolean[]\x20visited\x20=\x20new\x20boolean[6];\x0a\x20\x20\x20\x20static\x20int[][]\x20adj\x20=\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20{0,1,1,0,0,0},\x0a\x20\x20\x20\x20\x20\x20\x20\x20{1,0,0,1,1,0},\x0a\x20\x20\x20\x20\x20\x20\x20\x20{1,0,0,0,0,1},\x0a\x20\x20\x20\x20\x20\x20\x20\x20{0,1,0,0,0,0},\x0a\x20\x20\x20\x20\x20\x20\x20\x20{0,1,0,0,0,0},\x0a\x20\x20\x20\x20\x20\x20\x20\x20{0,0,1,0,0,0}\x0a\x20\x20\x20\x20};\x0a\x0a\x20\x20\x20\x20static\x20void\x20dfs(int\x20node)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20visited[node]\x20=\x20true;\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.print(node\x20+\x20\x22\x20\x22);\x0a\x20\x20\x20\x20\x20\x20\x20\x20for\x20(int\x20i\x20=\x200;\x20i\x20<\x20adj[node].length;\x20i++)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(adj[node][i]\x20==\x201\x20&&\x20!visited[i])\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20dfs(i);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20dfs(0);\x20\x20//\x200\x201\x203\x204\x202\x205\x0a\x20\x20\x20\x20}\x0a}','hint':'재귀의\x20핵심은\x20기저\x20조건(base\x20case)입니다.\x20DFS는\x20visited\x20배열로\x20방문\x20체크를\x20하며\x20재귀\x20호출합니다.','concept':{'title':'재귀와\x20DFS\x20패턴','desc':a2_0x13fd6f(0x6a8),'syntax':a2_0x13fd6f(0x7d1),'note':a2_0x13fd6f(0x2ef),'dart':a2_0x13fd6f(0x30a)},'drills':[{'title':a2_0x13fd6f(0x393),'prompt':'피보나치\x20수열의\x20재귀\x20기저\x20조건을\x20완성하세요.','full':'public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20static\x20int\x20fib(int\x20n)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(n\x20<=\x201)\x20return\x20n;\x20\x20\x20\x20//\x20기저\x20조건\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20fib(n-1)\x20+\x20fib(n-2);\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(fib(7));\x20\x20//\x2013\x0a\x20\x20\x20\x20}\x0a}','blank':a2_0x13fd6f(0x5c6),'answer':'return','options':[a2_0x13fd6f(0x6b8),a2_0x13fd6f(0x6ab),a2_0x13fd6f(0x756),a2_0x13fd6f(0x766)],'blocks':[a2_0x13fd6f(0x44a),a2_0x13fd6f(0x716),a2_0x13fd6f(0x363),'}'],'hint':a2_0x13fd6f(0x79d)},{'title':a2_0x13fd6f(0x521),'prompt':a2_0x13fd6f(0x4a1),'full':a2_0x13fd6f(0x77c),'blank':'if\x20(!visited[i])\x20___(i);','answer':a2_0x13fd6f(0x2d4),'options':[a2_0x13fd6f(0x2d4),a2_0x13fd6f(0x56d),'visit','check'],'blocks':['for\x20(int\x20i\x20=\x200;\x20i\x20<\x205;\x20i++)\x20{',a2_0x13fd6f(0x411),'}'],'hint':a2_0x13fd6f(0x68d)},{'title':'드릴\x203\x20—\x20팩토리얼\x20재귀','prompt':a2_0x13fd6f(0x244),'full':a2_0x13fd6f(0x603),'blank':'return\x20n\x20*\x20factorial(___\x20-\x201);','answer':'n','options':['n','n+1','1','i'],'blocks':[a2_0x13fd6f(0x444),a2_0x13fd6f(0x696)],'hint':a2_0x13fd6f(0x2a1)},{'title':a2_0x13fd6f(0x2df),'prompt':a2_0x13fd6f(0x1ff),'full':a2_0x13fd6f(0x288),'blank':a2_0x13fd6f(0x22b),'answer':a2_0x13fd6f(0x5cd),'options':[a2_0x13fd6f(0x5cd),'length','count',a2_0x13fd6f(0x540)],'blocks':['cur.add(arr[i]);','backtrack(arr,\x20i\x20+\x201,\x20cur,\x20result);',a2_0x13fd6f(0x45c)],'hint':a2_0x13fd6f(0x631)}]},{'cat':0x7,'id':0x4,'title':a2_0x13fd6f(0x335),'prompt':a2_0x13fd6f(0x5d5),'full':'import\x20java.util.*;\x0apublic\x20class\x20Main\x20{\x0a\x20\x20\x20\x20static\x20int[]\x20dx\x20=\x20{0,\x200,\x201,\x20-1};\x0a\x20\x20\x20\x20static\x20int[]\x20dy\x20=\x20{1,\x20-1,\x200,\x200};\x0a\x0a\x20\x20\x20\x20static\x20int\x20bfs(int[][]\x20grid,\x20int\x20startX,\x20int\x20startY,\x20int\x20endX,\x20int\x20endY)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20int\x20n\x20=\x20grid.length;\x0a\x20\x20\x20\x20\x20\x20\x20\x20boolean[][]\x20visited\x20=\x20new\x20boolean[n][n];\x0a\x20\x20\x20\x20\x20\x20\x20\x20Queue<int[]>\x20queue\x20=\x20new\x20LinkedList<>();\x0a\x20\x20\x20\x20\x20\x20\x20\x20queue.offer(new\x20int[]{startX,\x20startY,\x200});\x0a\x20\x20\x20\x20\x20\x20\x20\x20visited[startX][startY]\x20=\x20true;\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20while\x20(!queue.isEmpty())\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20int[]\x20cur\x20=\x20queue.poll();\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20int\x20x\x20=\x20cur[0],\x20y\x20=\x20cur[1],\x20dist\x20=\x20cur[2];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(x\x20==\x20endX\x20&&\x20y\x20==\x20endY)\x20return\x20dist;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20for\x20(int\x20d\x20=\x200;\x20d\x20<\x204;\x20d++)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20int\x20nx\x20=\x20x\x20+\x20dx[d],\x20ny\x20=\x20y\x20+\x20dy[d];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(nx\x20>=\x200\x20&&\x20nx\x20<\x20n\x20&&\x20ny\x20>=\x200\x20&&\x20ny\x20<\x20n\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20&&\x20!visited[nx][ny]\x20&&\x20grid[nx][ny]\x20==\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20visited[nx][ny]\x20=\x20true;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20queue.offer(new\x20int[]{nx,\x20ny,\x20dist\x20+\x201});\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20-1;\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20int[][]\x20grid\x20=\x20{{0,0,0},{0,1,0},{0,0,0}};\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(bfs(grid,\x200,\x200,\x202,\x202));\x20\x20//\x204\x0a\x20\x20\x20\x20}\x0a}','hint':'BFS는\x20Queue를\x20사용합니다.\x20방문\x20체크를\x20큐에\x20넣을\x20때\x20해야\x20중복\x20탐색을\x20막을\x20수\x20있습니다.','concept':{'title':a2_0x13fd6f(0x7a2),'desc':'BFS는\x20Queue를\x20사용해\x20시작점에서\x20가까운\x20노드부터\x20탐색합니다.\x20모든\x20간선의\x20비용이\x20동일할\x20때\x20최단\x20거리를\x20보장합니다.\x202D\x20격자\x20탐색에서\x20자주\x20씁니다.','syntax':'//\x20BFS\x20기본\x20패턴\x0aQueue<int[]>\x20q\x20=\x20new\x20LinkedList<>();\x0aboolean[]\x20visited\x20=\x20new\x20boolean[n];\x0aq.offer(new\x20int[]{start,\x200});\x20\x20//\x20{노드,\x20거리}\x0avisited[start]\x20=\x20true;\x0a\x0awhile\x20(!q.isEmpty())\x20{\x0a\x20\x20\x20\x20int[]\x20cur\x20=\x20q.poll();\x0a\x20\x20\x20\x20int\x20node\x20=\x20cur[0],\x20dist\x20=\x20cur[1];\x0a\x20\x20\x20\x20if\x20(node\x20==\x20end)\x20{\x20결과처리;\x20break;\x20}\x0a\x20\x20\x20\x20for\x20(int\x20next\x20:\x20graph[node])\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!visited[next])\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20visited[next]\x20=\x20true;\x20\x20//\x20큐에\x20넣을\x20때\x20체크!\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20q.offer(new\x20int[]{next,\x20dist\x20+\x201});\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a}\x0a\x0a//\x202D\x20격자\x20방향벡터\x0aint[]\x20dx\x20=\x20{0,\x200,\x201,\x20-1};\x20\x20//\x20상하좌우\x0aint[]\x20dy\x20=\x20{1,\x20-1,\x200,\x200};','note':'💡\x20visited\x20체크는\x20큐에\x20넣는\x20시점에\x20해야\x20합니다.\x20poll\x20후에\x20체크하면\x20같은\x20노드가\x20여러\x20번\x20큐에\x20들어가\x20비효율적입니다.','dart':a2_0x13fd6f(0x5ca)},'drills':[{'title':a2_0x13fd6f(0x24e),'prompt':a2_0x13fd6f(0x7ba),'full':'import\x20java.util.*;\x0apublic\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20Queue<Integer>\x20q\x20=\x20new\x20LinkedList<>();\x0a\x20\x20\x20\x20\x20\x20\x20\x20q.offer(1);\x20q.offer(2);\x20q.offer(3);\x0a\x20\x20\x20\x20\x20\x20\x20\x20while\x20(!q.isEmpty())\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20int\x20cur\x20=\x20q.poll();\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20System.out.print(cur\x20+\x20\x22\x20\x22);\x20\x20//\x201\x202\x203\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a}','blank':a2_0x13fd6f(0x27c),'answer':'poll','options':[a2_0x13fd6f(0x657),a2_0x13fd6f(0x73a),'remove',a2_0x13fd6f(0x682)],'blocks':[a2_0x13fd6f(0x604),a2_0x13fd6f(0x511),a2_0x13fd6f(0x496),a2_0x13fd6f(0x83a),a2_0x13fd6f(0x80b),'}'],'hint':a2_0x13fd6f(0x3b5)},{'title':'드릴\x202\x20—\x20방향벡터\x20활용','prompt':a2_0x13fd6f(0x6fb),'full':a2_0x13fd6f(0x65c),'blank':a2_0x13fd6f(0x31e),'answer':'1','options':['1','0','-1','2'],'blocks':[a2_0x13fd6f(0x50a),a2_0x13fd6f(0x3ff),a2_0x13fd6f(0x446),a2_0x13fd6f(0x476),a2_0x13fd6f(0x477),'}'],'hint':a2_0x13fd6f(0x451)},{'title':a2_0x13fd6f(0x662),'prompt':'BFS에서\x20격자\x20범위를\x20벗어나지\x20않는지\x20확인하는\x20조건을\x20완성하세요.','full':a2_0x13fd6f(0x489),'blank':'if\x20(nx\x20>=\x200\x20&&\x20nx\x20<\x20n\x20&&\x20ny\x20>=\x200\x20&&\x20ny\x20<\x20___)','answer':'n','options':['n',a2_0x13fd6f(0x60e),a2_0x13fd6f(0x49c),'5'],'blocks':[a2_0x13fd6f(0x40a),a2_0x13fd6f(0x78a),a2_0x13fd6f(0x316),a2_0x13fd6f(0x3ae),'}'],'hint':a2_0x13fd6f(0x407)},{'title':a2_0x13fd6f(0x459),'prompt':a2_0x13fd6f(0x6c7),'full':a2_0x13fd6f(0x667),'blank':a2_0x13fd6f(0x681),'answer':'true','options':[a2_0x13fd6f(0x21b),a2_0x13fd6f(0x7b6),'1',a2_0x13fd6f(0x35c)],'blocks':[a2_0x13fd6f(0x50b),'q.offer(next);'],'hint':a2_0x13fd6f(0x4f7)}]},{'cat':0x7,'id':0x5,'title':a2_0x13fd6f(0x7be),'prompt':'동적\x20프로그래밍(DP)의\x20핵심인\x20메모이제이션과\x20바텀업\x20방식을\x20Java로\x20구현합니다.','full':a2_0x13fd6f(0x25f),'hint':a2_0x13fd6f(0x6e9),'concept':{'title':a2_0x13fd6f(0x5c5),'desc':a2_0x13fd6f(0x4be),'syntax':a2_0x13fd6f(0x2f4),'note':a2_0x13fd6f(0x4fa),'dart':a2_0x13fd6f(0x55c)},'drills':[{'title':a2_0x13fd6f(0x292),'prompt':a2_0x13fd6f(0x43f),'full':'public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20static\x20long[]\x20memo\x20=\x20new\x20long[100];\x0a\x20\x20\x20\x20static\x20long\x20fib(int\x20n)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(n\x20<=\x201)\x20return\x20n;\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(memo[n]\x20!=\x200)\x20return\x20memo[n];\x0a\x20\x20\x20\x20\x20\x20\x20\x20memo[n]\x20=\x20fib(n-1)\x20+\x20fib(n-2);\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20memo[n];\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(fib(50));\x20\x20//\x2012586269025\x0a\x20\x20\x20\x20}\x0a}','blank':a2_0x13fd6f(0x2eb),'answer':'n','options':['n',a2_0x13fd6f(0x60e),'0','1'],'blocks':['if\x20(n\x20<=\x201)\x20return\x20n;',a2_0x13fd6f(0x59c),a2_0x13fd6f(0x504),a2_0x13fd6f(0x69f)],'hint':a2_0x13fd6f(0x2f7)},{'title':'드릴\x202\x20—\x20바텀업\x20DP\x20점화식','prompt':a2_0x13fd6f(0x64d),'full':a2_0x13fd6f(0x300),'blank':a2_0x13fd6f(0x297),'answer':a2_0x13fd6f(0x71a),'options':[a2_0x13fd6f(0x71a),a2_0x13fd6f(0x34b),'i','i+1'],'blocks':[a2_0x13fd6f(0x4f1),a2_0x13fd6f(0x41e),a2_0x13fd6f(0x539),'}','System.out.println(dp[n]);'],'hint':a2_0x13fd6f(0x293)},{'title':a2_0x13fd6f(0x3b4),'prompt':'DP\x20배열을\x20특정\x20값으로\x20초기화하는\x20Arrays.fill\x20코드를\x20완성하세요.','full':a2_0x13fd6f(0x2cc),'blank':a2_0x13fd6f(0x75c),'answer':a2_0x13fd6f(0x677),'options':[a2_0x13fd6f(0x677),a2_0x13fd6f(0x848),a2_0x13fd6f(0x413),a2_0x13fd6f(0x5db)],'blocks':[a2_0x13fd6f(0x62b),a2_0x13fd6f(0x69b),a2_0x13fd6f(0x60b),a2_0x13fd6f(0x812)],'hint':a2_0x13fd6f(0x6de)},{'title':a2_0x13fd6f(0x270),'prompt':'두\x20문자열의\x20최장\x20공통\x20부분수열(LCS)\x20길이를\x20구하는\x202D\x20DP를\x20완성하세요.','full':a2_0x13fd6f(0x643),'blank':a2_0x13fd6f(0x3eb),'answer':'1','options':['1','0',a2_0x13fd6f(0x6f5),'2'],'blocks':['if\x20(a.charAt(i-1)\x20==\x20b.charAt(j-1))\x20{','\x20\x20\x20\x20dp[i][j]\x20=\x20dp[i-1][j-1]\x20+\x201;',a2_0x13fd6f(0x316),a2_0x13fd6f(0x2cd),'}'],'hint':'두\x20문자가\x20같으면\x20대각선+1,\x20다르면\x20위쪽/왼쪽\x20중\x20큰\x20값을\x20사용합니다.'}]},{'cat':0x0,'id':0x7,'title':'예외\x20처리\x20—\x20try-catch-finally','prompt':a2_0x13fd6f(0x23f),'full':a2_0x13fd6f(0x30e),'hint':'코딩테스트에서는\x20보통\x20main에\x20throws\x20IOException을\x20선언하는\x20것이\x20가장\x20간결합니다.','concept':{'title':a2_0x13fd6f(0x704),'desc':a2_0x13fd6f(0x3af),'syntax':a2_0x13fd6f(0x2cb),'note':a2_0x13fd6f(0x40e),'dart':a2_0x13fd6f(0x7db)},'drills':[{'title':'드릴\x201\x20—\x20throws\x20IOException\x20선언','prompt':'BufferedReader\x20사용을\x20위해\x20main에\x20추가할\x20예외\x20선언을\x20완성하세요.<br><code>public\x20static\x20void\x20main(String[]\x20args)\x20throws\x20___</code>','full':a2_0x13fd6f(0x680),'blank':a2_0x13fd6f(0x640),'answer':a2_0x13fd6f(0x3ea),'options':[a2_0x13fd6f(0x3ea),a2_0x13fd6f(0x3ac),a2_0x13fd6f(0x51d),a2_0x13fd6f(0x66f)],'blocks':[a2_0x13fd6f(0x225),a2_0x13fd6f(0x84c),a2_0x13fd6f(0x659),a2_0x13fd6f(0x226),'}'],'hint':a2_0x13fd6f(0x719)},{'title':a2_0x13fd6f(0x49f),'prompt':a2_0x13fd6f(0x65f),'full':a2_0x13fd6f(0x770),'blank':a2_0x13fd6f(0x6f8),'answer':a2_0x13fd6f(0x38b),'options':[a2_0x13fd6f(0x38b),a2_0x13fd6f(0x3ea),a2_0x13fd6f(0x3ac),'Error'],'blocks':[a2_0x13fd6f(0x5fd),a2_0x13fd6f(0x414),a2_0x13fd6f(0x5e1),'\x20\x20\x20\x20System.out.println(\x22변환\x20실패\x22);','}'],'hint':a2_0x13fd6f(0x3fd)},{'title':a2_0x13fd6f(0x4e5),'prompt':a2_0x13fd6f(0x63c),'full':a2_0x13fd6f(0x618),'blank':a2_0x13fd6f(0x575),'answer':a2_0x13fd6f(0x593),'options':[a2_0x13fd6f(0x593),'always',a2_0x13fd6f(0x540),a2_0x13fd6f(0x296)],'blocks':[a2_0x13fd6f(0x5fd),'\x20\x20\x20\x20int\x20n\x20=\x20Integer.parseInt(\x2242\x22);','}\x20catch\x20(Exception\x20e)\x20{','\x20\x20\x20\x20System.out.println(\x22오류\x22);','}\x20finally\x20{',a2_0x13fd6f(0x22d),'}'],'hint':'finally\x20블록은\x20예외\x20발생\x20여부와\x20상관없이\x20항상\x20실행됩니다.'},{'title':a2_0x13fd6f(0x2e3),'prompt':'안전하게\x20parseInt를\x20시도하고\x20실패\x20시\x200을\x20반환하는\x20catch를\x20완성하세요.','full':a2_0x13fd6f(0x515),'blank':a2_0x13fd6f(0x383),'answer':a2_0x13fd6f(0x38b),'options':[a2_0x13fd6f(0x38b),a2_0x13fd6f(0x3ac),a2_0x13fd6f(0x3ea),'Error'],'blocks':[a2_0x13fd6f(0x5fd),a2_0x13fd6f(0x7a8),'}\x20catch\x20(NumberFormatException\x20e)\x20{','\x20\x20\x20\x20return\x200;','}'],'hint':a2_0x13fd6f(0x624)}]},{'cat':0x4,'id':0x4,'title':a2_0x13fd6f(0x4fe),'prompt':a2_0x13fd6f(0x6b0),'full':a2_0x13fd6f(0x1f4),'hint':a2_0x13fd6f(0x4b0),'concept':{'title':a2_0x13fd6f(0x263),'desc':'Stack은\x20LIFO,\x20Queue는\x20FIFO\x20구조입니다.\x20ArrayDeque가\x20Stack보다\x20빠르므로\x20사용\x20권장.\x20BFS에서\x20Queue<int[]>로\x20좌표+거리를\x20함께\x20저장하는\x20패턴이\x20핵심입니다.','syntax':a2_0x13fd6f(0x29e),'note':'💡\x20Java의\x20Stack\x20클래스는\x20레거시입니다.\x20성능이\x20더\x20좋은\x20ArrayDeque를\x20권장합니다.','dart':'ListQueue\x20→\x20Queue'},'drills':[{'title':a2_0x13fd6f(0x30b),'prompt':a2_0x13fd6f(0x48f),'full':a2_0x13fd6f(0x53f),'blank':'deque.___(1);','answer':a2_0x13fd6f(0x6b3),'options':['push','offer',a2_0x13fd6f(0x371),a2_0x13fd6f(0x746)],'blocks':[a2_0x13fd6f(0x4d4),a2_0x13fd6f(0x707),a2_0x13fd6f(0x7e0)],'hint':a2_0x13fd6f(0x2bf)},{'title':a2_0x13fd6f(0x4ee),'prompt':a2_0x13fd6f(0x3f1),'full':a2_0x13fd6f(0x378),'blank':a2_0x13fd6f(0x27c),'answer':a2_0x13fd6f(0x657),'options':[a2_0x13fd6f(0x657),'pop',a2_0x13fd6f(0x6f2),'get'],'blocks':[a2_0x13fd6f(0x604),'q.offer(10);\x20q.offer(20);\x20q.offer(30);',a2_0x13fd6f(0x343)],'hint':a2_0x13fd6f(0x724)},{'title':a2_0x13fd6f(0x6fa),'prompt':'좌표와\x20거리를\x20함께\x20저장하는\x20BFS용\x20Queue를\x20선언하는\x20코드를\x20완성하세요.','full':a2_0x13fd6f(0x2a6),'blank':'Queue<int[]>\x20q\x20=\x20new\x20___<>();','answer':a2_0x13fd6f(0x676),'options':['LinkedList',a2_0x13fd6f(0x547),a2_0x13fd6f(0x338),a2_0x13fd6f(0x6c8)],'blocks':['Queue<int[]>\x20q\x20=\x20new\x20LinkedList<>();',a2_0x13fd6f(0x39f),'int[]\x20cur\x20=\x20q.poll();','System.out.println(cur[2]);'],'hint':'BFS에서\x20int[]\x20배열을\x20Queue에\x20넣어\x20좌표와\x20거리를\x20함께\x20관리합니다.'},{'title':a2_0x13fd6f(0x69a),'prompt':'큐가\x20빌\x20때까지\x20BFS를\x20수행하는\x20루프\x20조건을\x20완성하세요.','full':a2_0x13fd6f(0x84a),'blank':'while\x20(!q.___())','answer':a2_0x13fd6f(0x74b),'options':['isEmpty',a2_0x13fd6f(0x6a4),a2_0x13fd6f(0x6d4),a2_0x13fd6f(0x364)],'blocks':['while\x20(!q.isEmpty())\x20{',a2_0x13fd6f(0x7f5),'}'],'hint':a2_0x13fd6f(0x39e)}]},{'cat':0x7,'id':0x6,'title':'그래프\x20표현\x20—\x20인접\x20리스트\x20(BFS/DFS\x20필수)','prompt':a2_0x13fd6f(0x7ff),'full':a2_0x13fd6f(0x291),'hint':a2_0x13fd6f(0x5c2),'concept':{'title':a2_0x13fd6f(0x645),'desc':a2_0x13fd6f(0x39b),'syntax':a2_0x13fd6f(0x69e),'note':a2_0x13fd6f(0x401),'dart':a2_0x13fd6f(0x389)},'drills':[{'title':a2_0x13fd6f(0x56e),'prompt':'각\x20노드에\x20ArrayList를\x20초기화하는\x20코드를\x20완성하세요.','full':'import\x20java.util.*;\x0apublic\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20int\x20n\x20=\x205;\x0a\x20\x20\x20\x20\x20\x20\x20\x20ArrayList<Integer>[]\x20graph\x20=\x20new\x20ArrayList[n\x20+\x201];\x0a\x20\x20\x20\x20\x20\x20\x20\x20for\x20(int\x20i\x20=\x201;\x20i\x20<=\x20n;\x20i++)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20graph[i]\x20=\x20new\x20ArrayList<>();\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(graph[1].size());\x20\x20//\x200\x0a\x20\x20\x20\x20}\x0a}','blank':a2_0x13fd6f(0x75b),'answer':'ArrayList','options':[a2_0x13fd6f(0x547),a2_0x13fd6f(0x676),'Stack',a2_0x13fd6f(0x29a)],'blocks':[a2_0x13fd6f(0x39d),'for\x20(int\x20i\x20=\x201;\x20i\x20<=\x20n;\x20i++)\x20{',a2_0x13fd6f(0x236),'}'],'hint':a2_0x13fd6f(0x7f7)},{'title':a2_0x13fd6f(0x22f),'prompt':a2_0x13fd6f(0x656),'full':'import\x20java.util.*;\x0apublic\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20ArrayList<Integer>[]\x20graph\x20=\x20new\x20ArrayList[4];\x0a\x20\x20\x20\x20\x20\x20\x20\x20for\x20(int\x20i\x20=\x201;\x20i\x20<=\x203;\x20i++)\x20graph[i]\x20=\x20new\x20ArrayList<>();\x0a\x20\x20\x20\x20\x20\x20\x20\x20int\x20u\x20=\x201,\x20v\x20=\x202;\x0a\x20\x20\x20\x20\x20\x20\x20\x20graph[u].add(v);\x0a\x20\x20\x20\x20\x20\x20\x20\x20graph[v].add(u);\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(graph[1]\x20+\x20\x22\x20\x22\x20+\x20graph[2]);\x20\x20//\x20[2]\x20[1]\x0a\x20\x20\x20\x20}\x0a}','blank':a2_0x13fd6f(0x63a),'answer':'u','options':['u','v','0','1'],'blocks':['graph[u].add(v);',a2_0x13fd6f(0x586)],'hint':a2_0x13fd6f(0x50d)},{'title':a2_0x13fd6f(0x75a),'prompt':'인접\x20리스트에서\x20이웃\x20노드를\x20순회하는\x20for-each를\x20완성하세요.','full':a2_0x13fd6f(0x2e8),'blank':a2_0x13fd6f(0x21e),'answer':'1','options':['1','0','cur','node'],'blocks':['for\x20(int\x20next\x20:\x20graph[1])\x20{',a2_0x13fd6f(0x2a0),'}'],'hint':a2_0x13fd6f(0x71c)},{'title':'드릴\x204\x20—\x20BFS\x20최단\x20거리\x20계산','prompt':a2_0x13fd6f(0x685),'full':a2_0x13fd6f(0x81f),'blank':a2_0x13fd6f(0x2f8),'answer':'1','options':['1','0',a2_0x13fd6f(0x2da),'2'],'blocks':[a2_0x13fd6f(0x2f5),a2_0x13fd6f(0x2ba),a2_0x13fd6f(0x684),'}'],'hint':a2_0x13fd6f(0x248)}]},{'cat':0x7,'id':0x7,'title':a2_0x13fd6f(0x481),'prompt':'<div\x20style=\x22line-height:1.7\x22>\x0a<b>🔢\x20Comparator\x20심화\x20—\x20카카오/백준\x20빈출\x20정렬</b><br><br>\x0a<b>📌\x20람다\x20Comparator\x20기본\x20규칙</b><br>\x0a•\x20<code>(a,\x20b)\x20->\x20a\x20-\x20b</code>\x20—\x20int\x20오름차순<br>\x0a•\x20<code>(a,\x20b)\x20->\x20b\x20-\x20a</code>\x20—\x20int\x20내림차순<br>\x0a•\x20<code>(a,\x20b)\x20->\x20a.compareTo(b)</code>\x20—\x20String\x20오름차순<br><br>\x0a<b>복합\x20기준\x20정렬\x20패턴</b><br>\x0a<code>if\x20(기준1이\x20다르면)\x20return\x20기준1\x20비교;</code><br>\x0a<code>return\x20기준2\x20비교;</code><br><br>\x0a<b>⚠️\x20int\x20오버플로우\x20주의</b><br>\x0a큰\x20수\x20비교\x20시\x20<code>a\x20-\x20b</code>\x20대신\x20<code>Integer.compare(a,\x20b)</code>\x20사용!\x0a</div>','full':'import\x20java.util.*;\x0a\x0apublic\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20──\x201.\x20단순\x20기준\x20정렬\x20──\x0a\x20\x20\x20\x20\x20\x20\x20\x20String[]\x20words\x20=\x20{\x22banana\x22,\x20\x22apple\x22,\x20\x22cherry\x22,\x20\x22fig\x22};\x0a\x20\x20\x20\x20\x20\x20\x20\x20Arrays.sort(words,\x20(a,\x20b)\x20->\x20a.length()\x20-\x20b.length());\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20[fig,\x20apple,\x20banana,\x20cherry]\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20Arrays.sort(words,\x20(a,\x20b)\x20->\x20a.compareTo(b));\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20[apple,\x20banana,\x20cherry,\x20fig]\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20──\x202.\x20복합\x20기준\x20(카카오\x20빈출)\x20──\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20길이\x20오름차순,\x20길이\x20같으면\x20사전순\x0a\x20\x20\x20\x20\x20\x20\x20\x20Arrays.sort(words,\x20(a,\x20b)\x20->\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(a.length()\x20!=\x20b.length())\x20return\x20a.length()\x20-\x20b.length();\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20a.compareTo(b);\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20──\x203.\x202D\x20배열\x20복합\x20정렬\x20──\x0a\x20\x20\x20\x20\x20\x20\x20\x20int[][]\x20intervals\x20=\x20{{1,4},{2,3},{1,2},{3,5}};\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20첫\x20열\x20오름차순,\x20같으면\x20둘째\x20열\x20내림차순\x0a\x20\x20\x20\x20\x20\x20\x20\x20Arrays.sort(intervals,\x20(a,\x20b)\x20->\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(a[0]\x20!=\x20b[0])\x20return\x20a[0]\x20-\x20b[0];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20b[1]\x20-\x20a[1];\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20──\x204.\x20오버플로우\x20안전\x20비교\x20──\x0a\x20\x20\x20\x20\x20\x20\x20\x20Integer[]\x20arr\x20=\x20{Integer.MAX_VALUE,\x20-1,\x200};\x0a\x20\x20\x20\x20\x20\x20\x20\x20Arrays.sort(arr,\x20Integer::compare);\x20\x20//\x20안전\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20(a,\x20b)\x20->\x20a\x20-\x20b\x20는\x20오버플로우\x20위험!\x0a\x20\x20\x20\x20}\x0a}','hint':'Comparator에서\x20양수\x20반환\x20시\x20a가\x20b\x20뒤로,\x20음수\x20반환\x20시\x20a가\x20b\x20앞으로\x20이동합니다.','concept':{'title':a2_0x13fd6f(0x2a2),'desc':a2_0x13fd6f(0x571),'syntax':a2_0x13fd6f(0x76e),'note':a2_0x13fd6f(0x5c3),'dart':'list.sort((a,\x20b)\x20=>\x20...)\x20→\x20동일\x20구조'},'drills':[{'title':a2_0x13fd6f(0x701),'prompt':'문자열\x20배열을\x20길이\x20기준\x20오름차순으로\x20정렬하는\x20람다를\x20완성하세요.','full':a2_0x13fd6f(0x37f),'blank':a2_0x13fd6f(0x7bb),'answer':a2_0x13fd6f(0x7f1),'options':[a2_0x13fd6f(0x7f1),a2_0x13fd6f(0x780),a2_0x13fd6f(0x466),a2_0x13fd6f(0x4f4)],'blocks':[a2_0x13fd6f(0x6ba),a2_0x13fd6f(0x419)],'hint':a2_0x13fd6f(0x788)},{'title':a2_0x13fd6f(0x563),'prompt':a2_0x13fd6f(0x3a1),'full':a2_0x13fd6f(0x275),'blank':a2_0x13fd6f(0x351),'answer':'compareTo','options':['compareTo',a2_0x13fd6f(0x1eb),a2_0x13fd6f(0x79a),'indexOf'],'blocks':[a2_0x13fd6f(0x607),'return\x20a.compareTo(b);'],'hint':a2_0x13fd6f(0x77d)},{'title':a2_0x13fd6f(0x2c9),'prompt':a2_0x13fd6f(0x514),'full':a2_0x13fd6f(0x346),'blank':a2_0x13fd6f(0x7f4),'answer':'1','options':['1','0','-1','2'],'blocks':[a2_0x13fd6f(0x484),a2_0x13fd6f(0x43d)],'hint':a2_0x13fd6f(0x634)},{'title':'드릴\x204\x20—\x20Integer.compare\x20오버플로우\x20방지','prompt':a2_0x13fd6f(0x782),'full':a2_0x13fd6f(0x430),'blank':a2_0x13fd6f(0x1d5),'answer':a2_0x13fd6f(0x79a),'options':[a2_0x13fd6f(0x79a),a2_0x13fd6f(0x466),a2_0x13fd6f(0x1eb),a2_0x13fd6f(0x281)],'blocks':['Arrays.sort(arr,\x20(a,\x20b)\x20->\x20Integer.compare(a,\x20b));',a2_0x13fd6f(0x769)],'hint':'Integer.compare(a,b)는\x20오버플로우\x20없이\x20안전한\x20비교를\x20제공합니다.'}]},{'cat':0x0,'id':0x8,'title':a2_0x13fd6f(0x409),'prompt':a2_0x13fd6f(0x54d),'full':a2_0x13fd6f(0x818),'hint':a2_0x13fd6f(0x2d6),'concept':{'title':a2_0x13fd6f(0x503),'desc':a2_0x13fd6f(0x399),'syntax':a2_0x13fd6f(0x529),'note':a2_0x13fd6f(0x2f3),'dart':'비트\x20연산자\x20&,\x20|,\x20^,\x20~,\x20<<,\x20>>\x20동일'},'drills':[{'title':a2_0x13fd6f(0x520),'prompt':'비트\x20연산으로\x20홀수인지\x20판별하는\x20코드를\x20완성하세요.','full':'public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20int\x20n\x20=\x207;\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20((n\x20&\x201)\x20==\x201)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(\x22홀수\x22);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(\x22짝수\x22);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a}','blank':a2_0x13fd6f(0x436),'answer':'&','options':['&','|','^','>>'],'blocks':[a2_0x13fd6f(0x464),a2_0x13fd6f(0x62e),a2_0x13fd6f(0x316),'\x20\x20\x20\x20System.out.println(\x22짝수\x22);','}'],'hint':a2_0x13fd6f(0x6b9)},{'title':a2_0x13fd6f(0x328),'prompt':a2_0x13fd6f(0x6ad),'full':a2_0x13fd6f(0x528),'blank':a2_0x13fd6f(0x76a),'answer':'<<','options':['<<','>>','&','|'],'blocks':[a2_0x13fd6f(0x6bb),a2_0x13fd6f(0x267)],'hint':a2_0x13fd6f(0x224)},{'title':a2_0x13fd6f(0x536),'prompt':a2_0x13fd6f(0x6fd),'full':'public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20int\x20mask\x20=\x200b1010;\x20\x20//\x2010\x0a\x20\x20\x20\x20\x20\x20\x20\x20for\x20(int\x20i\x20=\x200;\x20i\x20<\x204;\x20i++)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20((mask\x20>>\x20i\x20&\x201)\x20==\x201)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(i\x20+\x20\x22번째\x20비트\x20ON\x22);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a}','blank':a2_0x13fd6f(0x66a),'answer':'&','options':['&','|','^','>>'],'blocks':[a2_0x13fd6f(0x468),a2_0x13fd6f(0x55f),'\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(i\x20+\x20\x22번째\x20비트\x20ON\x22);',a2_0x13fd6f(0x7f6),'}'],'hint':'mask\x20>>\x20i\x20로\x20i번째\x20비트를\x20최하위로\x20이동,\x20&\x201로\x20해당\x20비트값을\x20추출합니다.'},{'title':'드릴\x204\x20—\x20부분집합\x20전체\x20탐색','prompt':'n개\x20원소의\x20모든\x20부분집합을\x20탐색하는\x20비트마스크\x20루프를\x20완성하세요.','full':a2_0x13fd6f(0x803),'blank':'for\x20(int\x20mask\x20=\x200;\x20mask\x20<\x20(1\x20___\x20n);\x20mask++)','answer':'<<','options':['<<','>>','*','^'],'blocks':[a2_0x13fd6f(0x46c),a2_0x13fd6f(0x842),'\x20\x20\x20\x20\x20\x20\x20\x20if\x20((mask\x20>>\x20i\x20&\x201)\x20==\x201)',a2_0x13fd6f(0x3c8),a2_0x13fd6f(0x7f6),a2_0x13fd6f(0x781),'}'],'hint':a2_0x13fd6f(0x589)}]},{'cat':0x0,'id':0x9,'title':'Math\x20유틸\x20&\x20long\x20오버플로우\x20처리','prompt':a2_0x13fd6f(0x541),'full':a2_0x13fd6f(0x31c),'hint':'Math.pow(2,10)은\x20double을\x20반환합니다.\x20정수로\x20쓰려면\x20(long)으로\x20캐스팅하세요.\x20큰\x20수\x20곱셈은\x20항상\x20(long)\x20캐스팅!','concept':{'title':a2_0x13fd6f(0x395),'desc':a2_0x13fd6f(0x4b6),'syntax':a2_0x13fd6f(0x2d0),'note':a2_0x13fd6f(0x3ad),'dart':a2_0x13fd6f(0x3c2)},'drills':[{'title':a2_0x13fd6f(0x6cd),'prompt':a2_0x13fd6f(0x84b),'full':'public\x20class\x20Main\x20{\x0a\x20\x20\x20\x20public\x20static\x20void\x20main(String[]\x20args)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20int\x20a\x20=\x205,\x20b\x20=\x209;\x0a\x20\x20\x20\x20\x20\x20\x20\x20int\x20m\x20=\x20Math.max(a,\x20b);\x0a\x20\x20\x20\x20\x20\x20\x20\x20System.out.println(m);\x20\x20//\x209\x0a\x20\x20\x20\x20}\x0a}','blank':a2_0x13fd6f(0x2f2),'answer':a2_0x13fd6f(0x51a),'options':['max','min',a2_0x13fd6f(0x28a),a2_0x13fd6f(0x3dd)],'blocks':[a2_0x13fd6f(0x72b),'int\x20m\x20=\x20Math.max(a,\x20b);','System.out.println(m);'],'hint':'Math.max(a,b)는\x20두\x20값\x20중\x20큰\x20쪽을\x20반환합니다.'},{'title':'드릴\x202\x20—\x20long\x20오버플로우\x20방지','prompt':a2_0x13fd6f(0x48a),'full':a2_0x13fd6f(0x3ba),'blank':a2_0x13fd6f(0x5ae),'answer':a2_0x13fd6f(0x6a7),'options':[a2_0x13fd6f(0x6a7),a2_0x13fd6f(0x637),a2_0x13fd6f(0x554),a2_0x13fd6f(0x274)],'blocks':[a2_0x13fd6f(0x1e8),'long\x20result\x20=\x20(long)a\x20*\x20b;','System.out.println(result);'],'hint':a2_0x13fd6f(0x73c)},{'title':'드릴\x203\x20—\x20Math.sqrt\x20소수\x20판별','prompt':a2_0x13fd6f(0x5fe),'full':a2_0x13fd6f(0x3fa),'blank':a2_0x13fd6f(0x81a),'answer':a2_0x13fd6f(0x635),'options':[a2_0x13fd6f(0x635),'pow',a2_0x13fd6f(0x28a),a2_0x13fd6f(0x27d)],'blocks':[a2_0x13fd6f(0x620),a2_0x13fd6f(0x5ec),'\x20\x20\x20\x20if\x20(n\x20%\x20i\x20==\x200)\x20return\x20false;','}',a2_0x13fd6f(0x28d)],'hint':a2_0x13fd6f(0x2e7)},{'title':'드릴\x204\x20—\x20Integer.MAX_VALUE\x20초기값','prompt':a2_0x13fd6f(0x787),'full':a2_0x13fd6f(0x3ce),'blank':'Arrays.fill(dist,\x20Integer.___);','answer':a2_0x13fd6f(0x677),'options':[a2_0x13fd6f(0x677),a2_0x13fd6f(0x848),a2_0x13fd6f(0x5db),'INFINITY'],'blocks':[a2_0x13fd6f(0x524),'Arrays.fill(dist,\x20Integer.MAX_VALUE);','dist[0]\x20=\x200;'],'hint':a2_0x13fd6f(0x310)}]}];function a2_0x3676(_0x5aa572,_0x5e185e){_0x5aa572=_0x5aa572-0x1c4;const _0x2aa0e0=a2_0x40e8();let _0x4d0482=_0x2aa0e0[_0x5aa572];return _0x4d0482;}function a2_0x4d0482(_0xf10199){const _0x109eed=a2_0x13fd6f,_0x5de5c3={'MdCpl':_0x109eed(0x230),'fpxNd':_0x109eed(0x2ab),'qwzzD':function(_0x4dd22a,_0x2a03ac){return _0x4dd22a+_0x2a03ac;},'xDxVu':_0x109eed(0x79c),'ZlGLq':function(_0x170adb,_0x3757cf){return _0x170adb(_0x3757cf);},'mQHxI':function(_0x371a80,_0x21dfc0){return _0x371a80!==_0x21dfc0;},'Zokrz':_0x109eed(0x398),'tPXns':function(_0x3b5f90,_0x34fdb8){return _0x3b5f90===_0x34fdb8;},'bvzEH':_0x109eed(0x53c),'tVykg':_0x109eed(0x66c),'ISAkN':'rmNWm','QRnHA':function(_0x48680e,_0x313a02){return _0x48680e+_0x313a02;},'THyNa':function(_0x123e7f,_0x2f6e4d){return _0x123e7f/_0x2f6e4d;},'Vhdyj':_0x109eed(0x7f1),'UGfgx':function(_0x1db655,_0x436b91){return _0x1db655%_0x436b91;},'vZXYn':function(_0x200186,_0x4929f8){return _0x200186+_0x4929f8;},'enKgo':_0x109eed(0x449),'iEFux':_0x109eed(0x245),'uBpzV':function(_0x20375a,_0x12be8f){return _0x20375a(_0x12be8f);}};function _0x4a4fd1(_0x52a447){const _0x2c4cee=_0x109eed;if(_0x5de5c3[_0x2c4cee(0x7d5)](typeof _0x52a447,_0x5de5c3[_0x2c4cee(0x4cc)]))return function(_0x2e3246){}['constructor']('while\x20(true)\x20{}')[_0x2c4cee(0x80e)](_0x5de5c3['tVykg']);else{if(_0x5de5c3[_0x2c4cee(0x7d5)](_0x2c4cee(0x1d9),_0x5de5c3[_0x2c4cee(0x20e)])){if(_0x221564)return _0xe476c4;else _0x4c3535(0x0);}else _0x5de5c3[_0x2c4cee(0x47b)]('',_0x5de5c3[_0x2c4cee(0x510)](_0x52a447,_0x52a447))[_0x5de5c3[_0x2c4cee(0x82c)]]!==0x1||_0x5de5c3['UGfgx'](_0x52a447,0x14)===0x0?function(){const _0x579d0f=_0x2c4cee,_0x22c11f={'CQNoW':'function\x20*\x5c(\x20*\x5c)','yzPPJ':_0x5de5c3[_0x579d0f(0x7ec)],'kNvbk':_0x5de5c3[_0x579d0f(0x5dc)],'ncJki':function(_0x474f2b,_0x252810){const _0xd356fb=_0x579d0f;return _0x5de5c3[_0xd356fb(0x59a)](_0x474f2b,_0x252810);},'aDlhW':_0x5de5c3[_0x579d0f(0x1ed)],'JNrOF':function(_0x5c9445,_0x5077f4){const _0x613a26=_0x579d0f;return _0x5de5c3[_0x613a26(0x55b)](_0x5c9445,_0x5077f4);}};if(_0x5de5c3[_0x579d0f(0x26e)](_0x5de5c3[_0x579d0f(0x26f)],_0x5de5c3[_0x579d0f(0x26f)])){const _0x22b286=new _0x1a319e(_0x22c11f[_0x579d0f(0x312)]),_0x345337=new _0x518b61(_0x22c11f[_0x579d0f(0x2e9)],'i'),_0x286ec9=_0x1a5611(_0x22c11f['kNvbk']);!_0x22b286[_0x579d0f(0x36f)](_0x22c11f[_0x579d0f(0x738)](_0x286ec9,_0x579d0f(0x35b)))||!_0x345337['test'](_0x22c11f[_0x579d0f(0x738)](_0x286ec9,_0x22c11f[_0x579d0f(0x425)]))?_0x22c11f[_0x579d0f(0x5ea)](_0x286ec9,'0'):_0x19c893();}else return!![];}[_0x2c4cee(0x72d)](_0x5de5c3[_0x2c4cee(0x6bc)](_0x5de5c3[_0x2c4cee(0x205)],_0x2c4cee(0x245)))[_0x2c4cee(0x41c)]('action'):function(){return![];}[_0x2c4cee(0x72d)](_0x5de5c3[_0x2c4cee(0x47b)](_0x5de5c3['enKgo'],_0x5de5c3['iEFux']))[_0x2c4cee(0x80e)]('stateObject');}_0x5de5c3[_0x2c4cee(0x6f0)](_0x4a4fd1,++_0x52a447);}try{if(_0xf10199)return _0x4a4fd1;else _0x5de5c3['ZlGLq'](_0x4a4fd1,0x0);}catch(_0x16f4ef){}}