π [Java] Clean Code
- λ¬Έμμ΄
- 1. [Java] μνΈ ν΄λ - cipher.charAt(i - 1)
- 2. [Java] λλ¬Έμμ μλ¬Έμ
- 3. [Java] μμ΄κ° μ«μ΄μ - numbers.replaceAll(a,b);
- 4. [Java] μΈλ±μ€ λ°κΎΈκΈ° - return new String(arr);
- 5. [Java] ν λ²λ§ λ±μ₯ν λ¬Έμ (λ¬Έμμ΄) - sb.toString();
- 10. [Java] μ«μ μ°ΎκΈ° - String.indexOf(), String.valueOf()
- λ°°μ΄
- 6. [Java] μ½μꡬνκΈ° - list.toArray(new String[0]);
- 7. [Java] κ°μ₯ ν° μ μ°ΎκΈ°- return new int[]{max, idx};
- 8. [Java] λ¬Έμμ΄ κ³μ°νκΈ° - Character.isDigit(c)
- 9. [Java] λ°°μ΄μ μ μ¬λ(λ°°μ΄, Set) - set.contains(str)
- Java Coding Test Cheatsheet
- Java ννμ(Expression)μ΄ λμΌ?
- Java μ΄μ€μΌμ΄ν μνμ€ (Escape Sequences)
- Java κ³ κΈ μΆλ ₯ ν¬λ§· (μ΄μ€μΌμ΄ν μνμ€, printf, format)
- Java μ κ·μ(Regular Expression)
- Java Arrays.sort() μ 리
- Java λ°°μ΄ κ΄λ ¨ μ£Όμ λ©μλ μ 리
λ¬Έμμ΄
1. [Java] μνΈ ν΄λ - cipher.charAt(i - 1)
https://school.programmers.co.kr/learn/courses/30/lessons/120892
μ€λ΅
class Solution {
public String solution(String cipher, int code) {
StringBuilder sb = new StringBuilder();
for (int i = code; i <= cipher.length(); code++;) {
sb.append(cipher[i-1]); // μΈλ±μ€λ 0λΆν° μμ
}
return sb.toString();
}
}
β forλ¬Έμ μ¦κ°μ μ€λ₯
for (int i = code; i <= cipher.length(); code++;)
- β code++β μ¦κ°μ μ리μ μμ΄μΌ ν λ³μλ i (λ°λ³΅ μ μ΄ λ³μ)
- β code++λ code κ°μ κ³μ λ°κΏλ²λ €μ λ Όλ¦¬μ μΌλ‘λ νλ¦Ό
β λ¬Έμμ΄ μΈλ±μ€ μ κ·Ό μ€λ₯
- Javaμμ λ¬Έμμ΄μ []λ‘ μ κ·Ό λΆκ° β charAt(index) μ¬μ©ν΄μΌ ν¨
μ λ΅ μ½λ
class Solution {
public String solution(String cipher, int code) {
StringBuilder sb = new StringBuilder();
for (int i = code; i <= cipher.length(); i += code) {
sb.append(cipher.charAt(i - 1)); // μΈλ±μ€λ 0λΆν° μμ
}
return sb.toString();
}
}
2. [Java] λλ¬Έμμ μλ¬Έμ
https://school.programmers.co.kr/learn/courses/30/lessons/120893
μ€λ΅
class Solution {
public String solution(String my_string) {
StringBuilder sb = new StringBuilder();
for(int i = 0; i < my_string.length(); i++) {
if(Character.isUpperCase((my_string.charAt(i)))) {
sb.append(Character.toLowerCase(my_string.charAt(i)));
} else {
sb.append(Character.toUpperCase(my_string.charAt(i)));
}
}
return sb.toString();
}
}
β my_string.charAt(i)λ μλ‘ λΉΌμ char c = my_string.charAt(i); λ‘ λ§λ€μ΄ μ£Όλ©΄ μ½λκ° κ°λ¨ν΄μ§λ€.
κ°μ ν μ½λ
class Solution {
public String solution(String my_string) {
StringBuilder sb = new StringBuilder();
for(int i = 0; i < my_string.length(); i++) {
char c = my_string.charAt(i);
if(Character.isUpperCase(c)) {
sb.append(Character.toLowerCase(c));
} else {
sb.append(Character.toUpperCase(c));
}
}
return sb.toString();
}
}
3. [Java] μμ΄κ° μ«μ΄μ - numbers.replaceAll(a,b);
https://school.programmers.co.kr/learn/courses/30/lessons/120894
νλ¦° μ½λ
class Solution {
public long solution(String numbers) {
String[] words = {
"zero", "one", "two", "three", "four", "five",
"six", "seven", "eight", "nine"
};
for (int i = 0; i < words.length; i++) {
numbers = numbers.replace(words[i], String.valueOf(i));
}
return Integer.parseInt(numbers);
}
}
ν μ€νΈλ ν΅κ³ΌνμΌλ λ΅μ μ μΆμ λ°νμ μλ¬
β Integer.parseInt() μ¬μ© μ λ°νμ μλ¬
- λ§μ½ μ«μ λ¬Έμμ΄μ΄ intμ λ²μλ₯Ό μ΄κ³Όνλ©΄ λ°νμ μλ¬κ° λ°μνλ€.
- κ·Έλμ μΌλΆ ν μ€νΈ μΌμ΄μ€μμ μλ¬κ° λ κ²
- μλ₯Ό λ€μ΄μ, λ§μ½ 13μ리 μ«μκ° λ€μ΄μ€λ©΄ int(32λΉνΈ μ μ)μ μ΅λκ° 2,147,483,647μ μ΄κ³Όν¨
- β Integer.parseInt()λ μ²λ¦¬ λͺ» ν¨ β λ°νμ μλ¬ (NumberFormatException) λ°μ
- λ°λΌμ return νμ μ intκ° μλλΌ long νμ μΌλ‘ λ³κ²½ν΄μΌ νλ€.
κ°μ ν μ½λ
class Solution {
public long solution(String numbers) {
String[] words = {
"zero", "one", "two", "three", "four", "five",
"six", "seven", "eight", "nine"
};
for (int i = 0; i < words.length; i++) {
numbers = numbers.replaceAll(words[i], String.valueOf(i));
}
return Long.parseLong(numbers); // β
int β long μΌλ‘ λ³κ²½
}
}
κΈ°λ³Έν VS λνΌν΄λμ€
β Β κΈ°λ³ΈνΒ (PrimitiveΒ type)
- int β κΈ°λ³Έν μ μ νμ (primitive int)
- longΒ βΒ κΈ°λ³ΈνΒ μ μΒ νμ Β (primitiveΒ long)
π λ©λͺ¨λ¦¬μ κ° μ체λ₯Ό μ μ₯ν¨
πΒ μ±λ₯μ΄Β λΉ λ₯΄κ³ Β λ©λͺ¨λ¦¬Β μ¬μ©μ΄Β ν¨μ¨μ
β Β μ°Έμ‘°νΒ (ReferenceΒ type,Β WrapperΒ class)
- Integer β μ°Έμ‘°ν (λνΌ ν΄λμ€, Wrapper class for int)
- LongΒ βΒ μ°Έμ‘°νΒ (λνΌΒ ν΄λμ€,Β WrapperΒ classΒ forΒ long)
π κ°μ²΄μ΄κΈ° λλ¬Έμ null κ°μ κ°μ§ μ μμ
πΒ ArrayList<Integer>μ²λΌΒ μ λ€λ¦μΒ μ¬μ©Β κ°λ₯
π κΈ°λ³Ένμ μ λ€λ¦μμ μ¬μ©ν μ μμ β μ°Έμ‘°ν νμ
4. [Java] μΈλ±μ€ λ°κΎΈκΈ° - return new String(arr);
https://school.programmers.co.kr/learn/courses/30/lessons/120895
νλ¦° μ½λ
class Solution {
public String solution(String my_string, int num1, int num2) {
String[] arr = String.toCharArray(my_string);
char tmp = arr[num1];
arr[num1] = arr[num2];
arr[num2] = tmp;
return arr.toString();
}
}
β String[] arr = String.toCharArray(my_string);
- β String.toCharArray()λ char[]λ₯Ό 리ν΄νλ―λ‘ νμ μ String[]μ΄ μλλΌ char[]μ΄μ΄μΌ νλ€.
β String.toCharArray() μ©λ²
- β my_string.toCharArray();
- toCharArray()λ String ν΄λμ€μ μΈμ€ν΄μ€ λ©μλμ΄λ€.
- κ·Έλμ String.toCharArray() β (ν΄λμ€ λ©μλ μλ)
- λ°λμ μΈμ€ν΄μ€(my_string)μ λΆμ¬μΌ βνλ€.
β return arr.toString();
- char[]μμ toString()μ μ°λ©΄ μ£Όμκ°μ΄ μΆλ ₯λλ€.
- β λμ new String(arr)μ μ¬μ©ν΄μΌ λ¬Έμμ΄λ‘ μΆλ ₯λλ€.
κ°μ ν μ½λ
class Solution {
public String solution(String my_string, int num1, int num2) {
char[] arr = my_string.toCharArray();
char tmp = arr[num1];
arr[num1] = arr[num2];
arr[num2] = tmp;
return new String(arr);
}
}
ν΄λμ€ λ©μλ VS μΈμ€ν΄μ€ λ©μλ
μλ°μμ λ©μλλ ν¬κ² μΈμ€ν΄μ€ λ©μλμ **ν΄λμ€ λ©μλ(static λ©μλ)**λ‘ λλλλ°, μ΄ λμ λ©μλλ₯Ό μ΄λ»κ² νΈμΆνκ³ μΈμ μ¬μ©νλμ§μ λ°λΌ μ€μν μ°¨μ΄λ₯Ό κ°μ§λ€.
ν΄λμ€ λ©μλλ static ν€μλλ‘ μ μλμ΄ μμ΄ κ°μ²΄λ₯Ό λ§λ€μ§ μμλ ν΄λμ€ μ΄λ¦μΌλ‘ λ°λ‘ νΈμΆν μ μλ λ©μλμ΄λ€. ν΄λμ€ λ©μλλ κ°μ²΄μ κ³ μ μνμλ 무κ΄νλ©°, λ³΄ν΅ λͺ¨λ μΈμ€ν΄μ€μμ 곡ν΅μΌλ‘ μ¬μ©νλ λ‘μ§μ ꡬνν λ μ¬μ©λ©λλ€. λνμ μΈ μλ‘ Integer.parseInt("123")λ λ¬Έμμ΄μ μ μλ‘ λ³ννλ ν΄λμ€ λ©μλλ‘, IntegerλΌλ ν΄λμ€ μ΄λ¦λ§μΌλ‘ λ°λ‘ νΈμΆν μ μλ€.
λ°λ©΄ μΈμ€ν΄μ€ λ©μλλ νΉμ κ°μ²΄κ° μμ±λμ΄μΌλ§ μ¬μ©ν μ μλ λ©μλμ΄λ€. μ¦, new ν€μλλ‘ κ°μ²΄λ₯Ό λ§λ νμμΌ νΈμΆμ΄ κ°λ₯νλ©°, μ£Όλ‘ κ·Έ κ°μ²΄μ μν(λ©€λ² λ³μ)λ₯Ό κΈ°λ°μΌλ‘ λμνλ€. μλ₯Ό λ€μ΄, str.length()λ λ¬Έμμ΄ κ°μ²΄ strμ κΈΈμ΄λ₯Ό λ°ννλ μΈμ€ν΄μ€ λ©μλμΈλ°, μ΄λ strμ΄λΌλ κ°μ²΄κ° μ‘΄μ¬ν΄μΌλ§ νΈμΆν μ μλ€.
μΈμ€ν΄μ€ λ©μλλ κ°μ²΄λ§λ€ μνκ° λ€λ₯Ό μ μκΈ° λλ¬Έμ, κ°μ λ©μλλ₯Ό νΈμΆνλλΌλ κ°μ²΄μ λ°λΌ κ²°κ³Όκ° λ¬λΌμ§λ€. μλ₯Ό λ€μ΄, Personμ΄λΌλ ν΄λμ€μ sayHello()λΌλ μΈμ€ν΄μ€ λ©μλκ° μλ€λ©΄, person1.sayHello()μ person2.sayHello()λ κ°κ° λ€λ₯Έ μ΄λ¦μ μΆλ ₯νλ€. μ΄λ κ° μΈμ€ν΄μ€κ° κ°μ§κ³ μλ name κ°μ΄ λ€λ₯΄κΈ° λλ¬Έμ΄λ€.
μ΄μ²λΌ μΈμ€ν΄μ€ λ©μλλ κ°μ²΄μ κ³ μ ν λ°μ΄ν°λ₯Ό λ€λ£¨κ³ μ‘°μν λ μ μ©νλ©°, ν΄λμ€ λ©μλλ κ·Έμ 무κ΄ν κ³΅ν΅ κΈ°λ₯μ μ 곡ν λ μ¬μ©λλ€. κ°λ°μλ κΈ°λ₯μ λͺ©μ μ λ°λΌ λ λ©μλ μ€ μ μ ν μͺ½μ μ νν΄μΌ νλ€. κ°μ²΄λ§λ€ λ¬λΌμ§λ λμμ΄ νμνλ€λ©΄ μΈμ€ν΄μ€ λ©μλ, κ°μ²΄ μμ΄ νΈμΆν΄λ λλ λ²μ©μ μΈ κΈ°λ₯μ΄λΌλ©΄ ν΄λμ€ λ©μλλ₯Ό μ¬μ©νλ κ²μ΄ μ’λ€.
β 1. μΈμ€ν΄μ€ λ©μλ (Instance Method)
μ μ
- κ°μ²΄λ₯Ό μμ±ν΄μΌ νΈμΆν μ μλ λ©μλ
- κ°μ²΄μ μν(νλ κ°)μ λ°λΌ λμμ΄ λ¬λΌμ§ μ μμ
νΉμ§
- new ν€μλλ‘ μΈμ€ν΄μ€λ₯Ό λ§λ ν μ¬μ©
- λ³΄ν΅ κ°μ²΄ λ΄λΆμ λ°μ΄ν°λ₯Ό λ€λ£° λ μ¬μ©λ¨
μμ
public class Person {
String name;
public void sayHello() {
System.out.println("Hello, my name is " + name);
}
}
// μ¬μ©
Person p = new Person();
p.name = "Dain";
p.sayHello(); // μΆλ ₯: Hello, my name is Dain
β 2. ν΄λμ€ λ©μλ (Class Method)
μ μ
- κ°μ²΄ μμ± μμ΄ νΈμΆ κ°λ₯ν λ©μλ
- static ν€μλλ‘ μ μλ¨
νΉμ§
- ν΄λμ€ μ΄λ¦μΌλ‘ μ§μ νΈμΆ κ°λ₯
- κ°μ²΄μ μνμ 무κ΄νκ² λμν¨
- λ³΄ν΅ κ³΅ν΅ κΈ°λ₯, μ νΈλ¦¬ν° κΈ°λ₯ λ±μ μ¬μ©λ¨
μμ
public class MathUtil {
public static int add(int a, int b) {
return a + b;
}
}
// μ¬μ©
int result = MathUtil.add(3, 5); // κ°μ²΄ μμ΄ νΈμΆ κ°λ₯
5. [Java] ν λ²λ§ λ±μ₯ν λ¬Έμ (λ¬Έμμ΄) - sb.toString();
https://school.programmers.co.kr/learn/courses/30/lessons/120896
νλ¦° μ½λ
import java.util.*;
class Solution {
public String solution(String s) {
int[] cnt = new int[26];
for(char c : s.toCharArray()) {
cnt[c - 'a']++;
}
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 26; i++) {
if (cnt[i] == 1) sb.append((char)i+'a');
}
return sb.toString();
}
}
β sb.append((char)i + 'a');
- μ΄ intλ₯Ό char νμ μΌλ‘ νλ³ννλ €λ μλμ§λ§, μ€μ λ‘λ κ·Έλ₯ intλ‘ μ°μ°λλ€.
- μλ₯Ό λ€μ΄, i = 0μΌ λ charλ μ°μ° μ intλ‘ μλ λ³νλλ―λ‘ β 0 + 97
(char)i + 'a' // => μ μ + μ μ β intλ‘ μ°μ°λ¨
β i + 'a' μ 체λ₯Ό charλ‘ μΊμ€ν ν΄μΌ λ¬Έμλ‘ μ λλ‘ λ³νλλ€.
sb.append((char)(i + 'a'));
κ°μ ν μ½λ
import java.util.*;
class Solution {
public String solution(String s) {
int[] cnt = new int[26];
for(char c : s.toCharArray()) {
cnt[c - 'a']++;
}
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 26; i++) {
if (cnt[i] == 1) sb.append((char)(i + 'a'));
}
return sb.toString();
}
}
10. [Java] μ«μ μ°ΎκΈ° - String.indexOf(), String.valueOf()
https://school.programmers.co.kr/learn/courses/30/lessons/120904
νλ¦° μ½λ
class Solution {
public int solution(int num, int k) {
String numToString = Integer.toString(num);
char[] arr = numToString.toCharArray();
char kToChar = (char) k;
int idx = -1;
for(int i = 0; i < arr.length; i++ ) {
if (arr[i] == kToChar) {
return i+1;
}
}
return idx;
}
}
β char kToChar = (char) (k + '0');
- νλ¦° λΆλΆ: char kToChar = (char) k;
- int νμ μ char νμ μΌλ‘ λ³ννλ λ°©λ²μ΄ μλͺ»λ¨
- β int 3μ (char)λ‘ λ°κΎΈλ©΄ '3'μ΄ μλλΌ μμ€ν€ λ¬Έμ 'ETX' κ°μ μ΄μν λ¬Έμκ° λ¨
- β char kToChar = (char)(k + '0'); λλ Character.forDigit(k, 10); λ‘ κ³ μ³μΌ ν¨
κ°μ ν μ½λ
class Solution {
public int solution(int num, int k) {
String numToString = Integer.toString(num);
char[] arr = numToString.toCharArray();
char kToChar = (char) (k + '0');
int idx = -1;
for(int i = 0; i < arr.length; i++ ) {
if (arr[i] == kToChar) {
return i+1;
}
}
return idx;
}
}
λ κ°λ¨ν λ°©λ² (String API νμ©)
public int solution(int num, int k) {
String s = String.valueOf(num);
int idx = s.indexOf(String.valueOf(k));
return idx == -1 ? -1 : idx + 1;
}
β String.indexOf()
λ¬Έμμ΄ λ΄μμ νΉμ λ¬Έμλ λ¬Έμμ΄μ΄ μ²μ λ±μ₯νλ μμΉμ μΈλ±μ€λ₯Ό μλ €μ£Όλ λ§€μ° μ μ©ν λ©μλμ΄λ€.
π κΈ°λ³Έ μ¬μ©λ²
String s = "29183";
int idx = s.indexOf("1"); // κ²°κ³Ό: 2
- λ¬Έμμ΄ "1"μ΄ "29183"μμ 0-based index 2μ μ²μ λ±μ₯
- λͺ» μ°ΎμΌλ©΄ -1μ λ°ν
π μλ° κ³΅μ λ¬Έλ²
int indexOf(int ch) // λ¬Έμ λλ λ¬Έμ μ½λ (ex: 'a', 97)
int indexOf(String str) // λ¬Έμμ΄
β μΌνμ°μ°μ
μλ°μ μΌν μ°μ°μ(ternary operator)λ if-elseλ₯Ό ν μ€λ‘ κ°λ¨νκ² μΈ μ μκ² ν΄μ£Όλ 쑰건 μ°μ°μμ΄λ€.
π κΈ°λ³Έ μ¬μ©λ²
쑰건μ ? μ°ΈμΌ λ κ° : κ±°μ§μΌ λ κ°;
- 쑰건μμ΄ trueμ΄λ©΄ ? λ€μμ κ°μ λ°ν
- falseμ΄λ©΄ : λ€μμ κ°μ λ°ν
π μμ
int age = 20;
String result = (age >= 18) ? "μ±μΈ" : "λ―Έμ±λ
μ";
System.out.println(result); // μΆλ ₯: μ±μΈ
λ°°μ΄
6. [Java] μ½μꡬνκΈ° - list.toArray(new String[0]);
https://school.programmers.co.kr/learn/courses/30/lessons/120897
νλ¦° μ½λ
import java.util.*;
class Solution {
public int[] solution(int n) {
ArrayList<Integer> list = new ArrayList<>();
for (int i = 0; i <= n; i++) {
if(n%i==0) list.append(i);
}
int[] answer = list.toArray(new String[0]);
return answer;
}
}
β for (int i = 0; i <= n; i++)
- β i = 0μΌ λ n % 0μ ArithmeticException (0μΌλ‘ λλ μ μμ!)
- β λ°λΌμ i = 1λΆν° μμν΄μΌ νλ€.
β list.add(i)
- ArrayListμμ κ°μ μΆκ°ν λλ append()κ° μλλΌ add()λ₯Ό μ¬μ©ν΄μΌ νλ€.
- list.append(i) β list.add(i)
β int[] answer = list.toArray(new String[0]);
- List β Array λ‘ λ³νν λ μ°Έμ‘°νμ toArray() λ©μλλ‘ κ°λ₯νμ§λ§ int κ°μ κΈ°λ³Ένμ μ§μ λ³νν μ μλ€.
- βμ§μ λ°λ³΅λ¬Έμ λλ €μ λ³νν΄μΌ νλ€.
κ°μ ν μ½λ
import java.util.*;
class Solution {
public int[] solution(int n) {
ArrayList<Integer> list = new ArrayList<>();
for (int i = 1; i <= n; i++) {
if(n%i==0) list.add(i);
}
int[] answer = new int[list.size()];
for(int i = 0; i < list.size(); i++) {
answer[i] = list.get(i);
}
return answer;
}
}
Stream μ¬μ© λ²μ
import java.util.*;
import java.util.stream.*;
class Solution {
public int[] solution(int n) {
return IntStream.rangeClosed(1, n) // 1λΆν° nκΉμ§ μ«μ μμ±
.filter(i -> n % i == 0) // μ½μλ§ νν°λ§
.toArray(); // int[]λ‘ λ°ν
}
}
List β Array νλ³ν
List νμ | λ³ν λ°©λ² |
---|---|
|
|
|
|
| λ°λ³΅λ¬ΈμΌλ‘ μλ λ³ν νμ |
β 1. List β Array (μ°Έμ‘°ν, μ: Integer, String λ±)
- toArray() λ©μλλ‘ λ³νμ΄ κ°λ₯νλ€.
List<String> list = Arrays.asList("a", "b", "c");
String[] arr = list.toArray(new String[0]);
- list.toArray(new String[0]): νμ μ λͺ μν λ°°μ΄λ‘ λ³ν
- new String[0]μ μ¬μ΄μ¦κ° 0μ΄μ΄λ μλμΌλ‘ λ§μΆ°μ€λ€.
List<Integer> list = Arrays.asList(1, 2, 3);
Integer[] arr = list.toArray(new Integer[0]);
β 2. List β Array (κΈ°λ³Έν, μ: int)
- Javaμ List<Integer>λ int[]λ‘ μ§μ λ³ν λΆκ°λ₯
- μ§μ λ°λ³΅λ¬ΈμΌλ‘ λ£μ΄μ€μΌ νλ€.
List<Integer> list = Arrays.asList(1, 2, 3);
int[] arr = new int[list.size()];
for (int i = 0; i < list.size(); i++) {
arr[i] = list.get(i); // μΈλ°μ± μλ μν
}
Array β List νλ³ν
λ³ν λ°©λ² | |
---|---|
|
|
|
|
| Arrays.stream(arr).boxed().collect(Collectors.toList()) |
β 1. μ°Έμ‘°ν λ°°μ΄ β List (μ: String[], Integer[] λ±)
String[] arr = {"a", "b", "c"};
List<String> list = Arrays.asList(arr);
- Arrays.asList()λ λ°°μ΄μ κ³ μ ν¬κΈ° 리μ€νΈλ‘ λ°κΏμ€λ€.
- μΆκ°/μμ λ λΆκ°λ₯ β λ³κ²½ κ°λ₯ν 리μ€νΈλ‘ λ°κΎΈλ €λ©΄
List<String> modifiableList = new ArrayList<>(Arrays.asList(arr));
β 2. κΈ°λ³Έν λ°°μ΄ β List (μ: int[], double[] λ±)
- μλ°μ int[]λ λ°λ‘ List<Integer>λ‘ λ°κΏ μ μλ€.
- Stream + boxed()λ₯Ό νμ©νλ€.
int[] arr = {1, 2, 3, 4};
List<Integer> list = Arrays.stream(arr) // IntStream μμ±
.boxed() // int β Integer (λ°μ±)
.collect(Collectors.toList());
7. [Java] κ°μ₯ ν° μ μ°ΎκΈ°- return new int[]{max, idx};
https://school.programmers.co.kr/learn/courses/30/lessons/120899
νλ¦° μ½λ
import java.util.*;
class Solution {
public int[] solution(int[] array) {
Arrays.sort(array);
int[] answer = new int[2];
answer[0] = array[array.length-1];
answer[1] = array.length-1;
return answer;
}
}
β index κ³μ° μλͺ»λ¨
- array[array.length-1]λ μ λ ¬λ λ°°μ΄μμ μ΅λκ°μ΄ λ§μ§λ§, array.length-1μ μ΅λκ°μ μλ μΈλ±μ€κ° μλ.
- λ°°μ΄μ μ€λ¦μ°¨μ μ λ ¬ν΄λ²λ¦¬λ©΄, μλ λ°°μ΄μμ μ΅λκ°μ μΈλ±μ€λ μ¬λΌμ§λ€.
- λ°λΌμ μ΅λκ°μ λ΄μ λ³μ max, μΈλ±μ€λ₯Ό λ΄μ λ³μ idxλ₯Ό μ μΈνκ³ λ°λ³΅λ¬Έμ λλ € μ΅λκ°κ³Ό μΈλ±μ€λ₯Ό κ°±μ ν ν, λ λ³μλ₯Ό λ°°μ΄λ‘ λ³νν΄μ λ°ννλ€.
κ°μ ν μ½λ
import java.util.*;
class Solution {
public int[] solution(int[] array) {
int max = array[0];
int idx = 0;
for(int i = 1; i < array.length; i++) {
if (array[i] > max) {
max = array[i];
idx = i;
}
}
return new int[]{max, idx};
}
}
λ°°μ΄ λ¦¬ν°λ΄μ λ°νν λ μ°λ μ½λ
intν λ κ°μ§λ¦¬ λ°°μ΄μ μ§μ μμ±νκ³ , κ·Έ λ°°μ΄μ λ©μλμ λ°νκ°μΌλ‘ μ¬μ©νλ μ½λμ΄λ€.
return new int[]{max, idx};
μλμ κ°μ΄ λ°°μ΄μ λ§λ€κ³ λ°ννλ μ½λμΈλ° ν μ€λ‘ μ€μΈ κ²μ΄λ€.
int[] result = new int[]{max, idx};
return result;
Javaμμ returnμ κ°μ λ°ννκΈ°λ§ νλ©΄ λκΈ° λλ¬Έμ, κ΅³μ΄ int[] result = ...μ²λΌ μ€κ°μ λ³μμ λ΄μ νμκ° μλ€.
λ°°μ΄ λ¦¬ν°λ΄μ μ μΈ μμ΄ μ°λ©΄ μ»΄νμΌ μ€λ₯κ° λλ€.
int[] a;
a = {1, 2}; // β μ»΄νμΌ μ€λ₯
β λμ μ΄λ κ² μ¨μΌ νλ€.
int[] a = new int[]{1, 2};
8. [Java] λ¬Έμμ΄ κ³μ°νκΈ° - Character.isDigit(c)
https://school.programmers.co.kr/learn/courses/30/lessons/120902
νλ¦° μ½λ (1μ°¨ μλ)
class Solution {
public int solution(String my_string) {
char[] arr = my_string.toCharArray();
int sum = 0;
for (char c : arr ) {
if (c != '+' && c != '-' && c !=' ') {
sum+= Integer.parseInt(c);
}
}
return sum;
}
}
β Integer.parseInt()
- Stringμ intνμΌλ‘ λ³ννλ μ½λλ₯Ό μ¨μ μλ¬κ° λ¬λ€.
- charνμ μ μ μλ‘ λ³νν λλ Integer.parseInt() λμ char νμ λ³μμ - '0'μ νλ€. (ASCII μ½λ)
String β int VS char β int
1. Stringμ intλ‘ λ³νν λλ Integer.parseInt()
String str = "123";
// λ¬Έμμ΄ β int
int num = Integer.parseInt(str); // 123
2. charμ μ«μλ‘ λ³νν λλ char νμ λ³μ - '0'
char c = '7';
// λ¬Έμ β μ«μ (μ μκ°)
int digit = c - '0'; // '7' - '0' = 7
νλ¦° μ½λ (2μ°¨ μλ)
class Solution {
public int solution(String my_string) {
char[] arr = my_string.toCharArray();
int sum = 0;
for (char c : arr ) {
if (c != '+' && c != '-' && c !=' ') {
sum+= c - '0';
}
}
return sum;
}
}
λ΄κ° μ΄ μ½λλ λͺ¨λ μ«μλ₯Ό "ν μ리 μ«μ"λ‘ μ²λ¦¬νλ€. μ¦, "12"κ° μμΌλ©΄ 1 + 2 = 3μΌλ‘ κ³μ°νλ€.
String my_string = "a12b3";
β arr = ['a', '1', '2', 'b', '3']
β κ²°κ³Ό: 1 + 2 + 3 = 6 (β μ€μ 12 + 3μ΄ μλ)
λ¬Έμ μμ μνλ κ²μ λ§μ½ "12 + 3" β 15λ‘ κ³μ°νλ κ²μ΄λ€.
String num λ³μλ₯Ό λ°μΌλ‘ λΉΌκ³ , Character.isDigit() μΌλ‘ cκ° 0~9μ¬μ΄ μ«μν λ¬Έμμ΄μ΄λ©΄ numμ μ μ₯νλ νμμΌλ‘ μ½λλ₯Ό μ§ μ£Όμλ€.
νλ¦° μ½λ (3μ°¨ μλ)
class Solution {
public int solution(String my_string) {
char[] arr = my_string.toCharArray();
int sum = 0;
String num = "";
for (char c : arr ) {
if (Character.isDigit(c)) {
num += c;
} else {
if (!num.isEmpty()) {
sum += Integer.parseInt(num);
num = "";
}
}
}
if (!num.isEmpty()) {
sum += Integer.parseInt(num);
}
return sum;
}
}
λ§μ λ§ νλκ² μλλΌ λΊμ λ μμλ€. μ°μ°μ(+, -)μ λ°λΌ μ°μ°μ λͺ¨λ μ²λ¦¬νλ μ½λλ₯Ό μ§μΌ νλ€.
- λ¬Έμμ΄μ " "(곡백) κΈ°μ€μΌλ‘ λλ μ
- μ²μ κ°μ resultμ μ μ₯
- μ΄νμλ μ°μ°μ(+ λλ -)μ μ«μκ° λ²κ°μ λ±μ₯
- μ°μ°μμ λ°λΌ +λ©΄ λνκ³ , -λ©΄ λΉΌμΌ ν¨
νλ¦° μ½λ (4μ°¨ μλ)
class Solution {
public int solution(String my_string) {
String[] splited = my_string.split(" ");
int answer = Integer.parseInt(splited[0]);
for(int i = 1; i < splited.length; i += 2) {
String op = splited[i];
int num = Integer.parseInt(splited[i + 1]);
if (op == '+')) {
answer += num;
} else if (op == '-') {
answer -= num;
}
}
return answer;
}
}
β if(op == '+')
- μ΄ μ½λλ μ»΄νμΌ μλ¬κ° λλ€.
- opλ String νμ μΌλ‘ μ μΈλμλλ° '+'λ charλ‘ νμ μ΄ λ¬λΌμ λΉκ΅ λΆκ°λ₯νκΈ° λλ¬Έμ΄λ€.
- Javaμμλ λ¬Έμμ΄ λ΄μ©μ λΉκ΅ν λ ==λ₯Ό μ°μ§ μλλ€. ==λ λ κ°μ²΄κ° κ°μ μ£Όμ(μ°Έμ‘°)λ₯Ό κ°λ¦¬ν¬ λλ§ trueμ΄λ€.
- λ΄μ© λΉκ΅λ λ°λμ .equals()λ₯Ό μ¨μΌ νλ€.
κ°μ ν μ½λ
class Solution {
public int solution(String my_string) {
String[] splited = my_string.split(" ");
int answer = Integer.parseInt(splited[0]);
for(int i = 1; i < splited.length; i += 2) {
String op = splited[i];
int num = Integer.parseInt(splited[i + 1]);
if (op.equals("+")) {
answer += num;
} else if (op.equals("-")) {
answer -= num;
}
}
return answer;
}
}
9. [Java] λ°°μ΄μ μ μ¬λ(λ°°μ΄, Set) - set.contains(str)
https://school.programmers.co.kr/learn/courses/30/lessons/120903
Set μ νμ©ν μ½λ
import java.util.*;
class Solution {
public int solution(String[] s1, String[] s2) {
Set<String> set = new HashSet<>(Arrays.asList(s1));
int cnt = 0;
for (String str : s2) {
if (set.contains(str)) cnt++;
}
return cnt;
}
}
β Set<String> set = new HashSet<>(Arrays.asList(s1));
- Setμ μ€λ³΅μ νμ©νμ§ μκ³ , κ²μ μλκ° λΉ λ₯΄κΈ° λλ¬Έμ λΉκ΅ λμμΈ s1μ SetμΌλ‘ λ³ννλ©΄ s2μ κ° μμκ° ν¬ν¨λμ΄ μλμ§ λΉ λ₯΄κ² νμΈν μ μλ€.
μ΄μ€ forλ¬Έ(λ°λ³΅λ¬Έ)μ μ¬μ©ν μ½λ
class Solution {
public int solution(String[] s1, String[] s2) {
int cnt = 0;
for (int i = 0; i < s1.length; i++) {
for (int j = 0; j < s2.length; j++) {
if (s1[i].equals(s2[j])) {
cnt++;
break;
}
}
}
return cnt;
}
}
- μ€λ³΅ μΉ΄μ΄ν μ νΌνλ €λ©΄ break;λ₯Ό ν΄μΌ νλ€.
- λ¬Έμμ΄λΌλ¦¬ λ΄μ© λΉκ΅λ .equals() λ©μλλ₯Ό μ¬μ©ν΄μΌ νλ€ ( == μ μ£Όμκ° λΉκ΅)
Java Coding Test Cheatsheet
0. Frequently Used Libraries
import java.util.*; // Data structures
import java.io.*; // Fast I/O
import java.math.*; // BigInteger, BigDecimal
1. Variable & Array Declaration
String[] arr1 = new String[5];
int[] arr2 = {1, 2, 3};
int N = 3;
int[] arr3 = new int[N];
2. Arrays Utility
Arrays.sort(arr); // Ascending
Arrays.sort(arr, Collections.reverseOrder()); // Descending
Arrays.sort(arr, 0, 4); // Partial sort
Arrays.binarySearch(arr, 2); // Binary search
List<String> list = Arrays.asList(arr1); // Convert to List
int[] tmp = Arrays.copyOfRange(arr, 0, 3); // Slice
3. length / length() / size()
arr.length // Arrays
str.length() // String
list.size() // Collections
4. String Handling
str.split(" ");
str.substring(0, 5);
str.charAt(i);
str.toUpperCase();
str.toLowerCase();
String[] letters = str.split("");
String newStr = str.substring(0,4) + "X" + str.substring(5);
5. HashMap
Map<String, Integer> map = new HashMap<>();
map.put("key", 1);
map.get("key");
map.containsKey("key");
map.getOrDefault("key", 0);
for (String k : map.keySet()) map.get(k);
6. ArrayList
List<String> list = new ArrayList<>();
list.add("a");
list.set(0, "b");
list.remove("b");
list.contains("a");
list.indexOf("a");
7. Queue (LinkedList)
Queue<Integer> q = new LinkedList<>();
q.offer(1);
q.poll();
q.peek();
q.clear();
q.isEmpty();
8. PriorityQueue
PriorityQueue<Integer> pq = new PriorityQueue<>();
PriorityQueue<Integer> maxPq = new PriorityQueue<>(Collections.reverseOrder());
9. Math
Math.max(a, b);
Math.min(a, b);
Math.abs(x);
Math.ceil(x);
Math.floor(x);
Math.round(x);
String.format("%.2f", d); // Round to 2 decimal
Math.pow(a, b);
Math.sqrt(x);
10. HashSet
Set<String> set = new HashSet<>();
set.add("a");
set.remove("a");
set.contains("a");
11. Stack
Stack<Integer> stack = new Stack<>();
stack.push(1);
stack.pop();
stack.peek();
12. Deque (ArrayDeque)
Deque<Integer> dq = new ArrayDeque<>();
dq.addFirst(1);
dq.addLast(2);
dq.pollFirst();
dq.pollLast();
13. TreeSet
TreeSet<Integer> ts = new TreeSet<>();
ts.add(5);
ts.first();
ts.last();
ts.lower(5);
ts.higher(5);
14. TreeMap
TreeMap<String, Integer> tm = new TreeMap<>();
tm.put("apple", 3);
tm.firstKey();
tm.lastKey();
15. Fast I/O
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int a = Integer.parseInt(st.nextToken());
String[] parts = br.readLine().split(" ");
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
bw.write("Hello\n");
bw.flush();
bw.close();
16. DFS
void dfs(int node) {
visited[node] = true;
for (int next : graph.get(node)) {
if (!visited[next]) dfs(next);
}
}
17. BFS
Queue<Integer> q = new LinkedList<>();
q.offer(start);
visited[start] = true;
while (!q.isEmpty()) {
int cur = q.poll();
for (int next : graph.get(cur)) {
if (!visited[next]) {
q.offer(next);
visited[next] = true;
}
}
}
18. Sorting
list.sort(Comparator.naturalOrder());
list.sort(Comparator.reverseOrder());
people.sort(Comparator.comparingInt(p -> p.age));
19. DP (Fibonacci)
int[] dp = new int[N+1];
dp[0] = 0; dp[1] = 1;
for (int i = 2; i <= N; i++) dp[i] = dp[i-1] + dp[i-2];
20. Union-Find
int find(int x) {
if (x != parent[x]) parent[x] = find(parent[x]);
return parent[x];
}
void union(int a, int b) {
a = find(a); b = find(b);
if (a != b) parent[b] = a;
}
21. Bitmask
int bit = 0;
bit |= (1 << 3);
bit &= ~(1 << 3);
boolean on = (bit & (1 << 3)) != 0;
Integer.bitCount(bit);
22. Greedy
int[] coins = {500, 100, 50, 10};
int count = 0;
for (int coin : coins) {
count += target / coin;
target %= coin;
}
23. Prefix Sum
int[] prefix = new int[N+1];
for (int i = 0; i < N; i++) prefix[i+1] = prefix[i] + arr[i];
24. Sliding Window
int sum = 0;
for (int i = 0; i < k; i++) sum += arr[i];
int max = sum;
for (int i = k; i < N; i++) {
sum += arr[i] - arr[i-k];
max = Math.max(max, sum);
}
25. Sieve of Eratosthenes
boolean[] isPrime = new boolean[N+1];
Arrays.fill(isPrime, true);
for (int i = 2; i*i <= N; i++) {
if (isPrime[i]) {
for (int j = i*i; j <= N; j += i) isPrime[j] = false;
}
}
26. Dijkstra
PriorityQueue<int[]> pq = new PriorityQueue<>(Comparator.comparingInt(a -> a[1]));
int[] dist = new int[N+1];
Arrays.fill(dist, INF);
dist[start] = 0;
pq.offer(new int[]{start, 0});
27. Tree / LCA
void dfs(int node, int par, int d) {
parent[node] = par;
depth[node] = d;
for (int next : tree.get(node)) {
if (next != par) dfs(next, node, d+1);
}
}
28. Coding Test Patterns
- Use BufferedReader & BufferedWriter
- HashMap, HashSet, TreeMap, PriorityQueue
- Always validate inputs
- Use boolean[], Set, or visited[][] for visited states
- Practice common patterns (DFS/BFS, DP, Greedy, Two Pointers)
29. Backtracking (Permutation, Combination)
void permute(List<Integer> list, boolean[] used) {
if (list.size() == N) {
System.out.println(list);
return;
}
for (int i = 0; i < N; i++) {
if (!used[i]) {
used[i] = true;
list.add(arr[i]);
permute(list, used);
list.remove(list.size() - 1);
used[i] = false;
}
}
}
30. Binary Search / Parametric Search
int left = 1, right = maxVal;
while (left <= right) {
int mid = (left + right) / 2;
if (condition(mid)) {
answer = mid;
right = mid - 1;
} else {
left = mid + 1;
}
}
31. Recursion Optimization
- Tail recursion is not optimized in Java.
- Prefer loops for heavy stack recursion.
- Consider memoization or iterative conversion.
32. String Algorithms (KMP)
int[] makeTable(String pattern) {
int[] table = new int[pattern.length()];
int j = 0;
for (int i = 1; i < pattern.length(); i++) {
while (j > 0 && pattern.charAt(i) != pattern.charAt(j)) j = table[j-1];
if (pattern.charAt(i) == pattern.charAt(j)) table[i] = ++j;
}
return table;
}
33. Permutations / Combinations / Bitmask
// Bitmask Combination
for (int mask = 0; mask < (1 << N); mask++) {
for (int i = 0; i < N; i++) {
if ((mask & (1 << i)) != 0) {
// element i is selected
}
}
}
34. BigInteger / BigDecimal
BigInteger a = new BigInteger("12345678901234567890");
BigInteger b = new BigInteger("98765432109876543210");
BigInteger sum = a.add(b);
BigDecimal dec = new BigDecimal("1234.5678");
BigDecimal result = dec.setScale(2, RoundingMode.HALF_UP);
μΆμ² : chatGPT
Java ννμ(Expression)μ΄ λμΌ?
1. ννμμ΄λ?
**ννμ(Expression)**μ΄λ, κ°μ μμ±νλ μ½λ μ‘°κ°μ΄λ€.
λ³μ, μμ, μ°μ° κ²°κ³Ό, κ°μ²΄ μμ± λ± κ²°κ³Όκ°μ΄ λμ€λ λͺ¨λ μ½λκ° ννμμ΄λ€
2. μμλ‘ λ³΄λ ννμ
μ½λ | κ²°κ³Ό | μ€λͺ |
---|---|---|
|
| μ μ λ§μ |
|
| λ¬Έμμ΄ μ°κ²° |
|
| κ°μ²΄ μμ± |
| λ°°μ΄ κΈΈμ΄ | λ°°μ΄μ κΈΈμ΄ μ°Έμ‘° |
|
| λΉκ΅ μ°μ° |
3. ννμκ³Ό λ¬Έμ₯(statement)μ μ°¨μ΄
- ννμ: κ°μ΄ μκΈ΄λ€
- λ¬Έμ₯: λμμ μννλ€ (λͺ λ Ή)
// ννμ
3 + 4 // κ°: 7
"Hello" + "World" // κ°: "HelloWorld"
x > 5 // κ°: true λλ false
// λ¬Έμ₯
int a = 3 + 4; // λ³μ μ μΈ (ν λΉ)
System.out.println("Hi"); // λ©μλ νΈμΆ
if (x > 5) { ... } // 쑰건문
4. ννμμ΄ μ°μ΄λ μμΉ
μμΉ | μμ |
---|---|
return λ¬Έ |
|
λ³μ λμ |
|
쑰건문 쑰건 |
|
λ©μλ μΈμ |
|
5. μμ½
- ννμμ νμ κ°μ λ§λ λ€.
- μ΄λ€ κ³³μλ κ°μ΄ νμν μμΉμμλ ννμμ λ£μ μ μλ€.
- κ°μ²΄ μμ±, μ°μ°, λ³μ μ κ·Ό λ± λ€μν μ½λ μ‘°κ°μ΄ ννμμ΄λ€.
Java μ΄μ€μΌμ΄ν μνμ€ (Escape Sequences)
1. μ΄μ€μΌμ΄ν μνμ€λ?
μ΄μ€μΌμ΄ν μνμ€λ μΌλ° λ¬Έμμ²λΌ μΆλ ₯ν μ μλ νΉμν λμ(μ: μ€λ°κΏ, ν λ±)μ
λ¬Έμμ΄ μμμ ννν μ μλλ‘ ν΄μ£Όλ λ°±μ¬λμ\
λ‘ μμνλ λ¬Έμ μ‘°ν©μ΄λ€.
2. μ£Όμ μ΄μ€μΌμ΄ν μνμ€ ν
μ΄μ€μΌμ΄ν | μλ―Έ | μ€λͺ μμ |
---|---|---|
| μ€λ°κΏ (newline) | μ€μ λ°κΏμ€ |
| ν (tab) | λμ΄μ°κΈ° 4~8μΉΈ (ν μμΉμ λ°λΌ λ€λ¦) |
| ν°λ°μ΄ν (") | λ¬Έμμ΄ μμμ ν°λ°μ΄ν μΆλ ₯ κ°λ₯ |
| μμλ°μ΄ν (') | μμλ°μ΄νλ₯Ό λ¬Έμ λλ λ¬Έμμ΄ μμμ μ¬μ© |
| λ°±μ¬λμ () | μμ¬λμ μ체 μΆλ ₯ |
| μΊλ¦¬μ§ λ¦¬ν΄ (CR) | 컀μλ₯Ό 맨 μμΌλ‘ μ΄λ (κ±°μ μ¬μ© μ ν¨) |
| λ°±μ€νμ΄μ€ | μ΄μ λ¬Έμ μμ (κ±°μ μ¬μ© μ ν¨) |
| νΌ νΌλ (Form feed) | νμ΄μ§ λκΉ (νλ¦°ν° μ μ΄μ©, νμ¬λ κ±°μ μ¬μ© μ ν¨) |
3. μ¬μ© μμ μ½λ
public class EscapeExample {
public static void main(String[] args) {
System.out.println("μ΄λ¦\tλμ΄\tμ±λ³");
System.out.println("μ² μ\t20\tλ¨");
System.out.println("κ·Έλ λ§νλ€: \"μλ
νμΈμ\"");
System.out.println("C:\\Program Files\\Java");
}
}
μΆλ ₯ κ²°κ³Ό:
μ΄λ¦ λμ΄ μ±λ³
μ² μ 20 λ¨
κ·Έλ λ§νλ€: "μλ
νμΈμ"
C:\Program Files\Java
4. μΈμ μ¬μ©νλμ?
- λ¬Έμμ΄ λ΄μμ **ν°λ°μ΄ν(
"
)λ λ°±μ¬λμ(\
)**λ₯Ό μΆλ ₯ν΄μΌ ν λ - μΆλ ₯ νμμ μ λ ¬νκ±°λ μ€λ°κΏν λ
- ν μ€νΈλ₯Ό 보기 μ’κ² μ 리νκ±°λ κ°λ μ±μ λμ΄κΈ° μν΄
- μ΄μ€μΌμ΄ν μνμ€λ λ¬Έμμ΄(
"..."
)μ΄λ λ¬Έμ('...'
) μμμλ§ μ¬μ© κ°λ₯
μ:
System.out.println("Hello\nWorld"); // μ€λ°κΏ
char quote = '\''; // μμλ°μ΄ν λ¬Έμ
Java κ³ κΈ μΆλ ₯ ν¬λ§· (μ΄μ€μΌμ΄ν μνμ€, printf, format)
1. μ΄μ€μΌμ΄ν μνμ€λ?
**μ΄μ€μΌμ΄ν μνμ€(Escape Sequence)**λ λ¬Έμμ΄ λ΄μμ νΉμν λμ(μ€λ°κΏ, ν, λ°μ΄ν λ±)μ νννκΈ° μν λ¬Έμ μ‘°ν©μ΄λ€.
Javaμμλ\
λ°±μ¬λμλ‘ μμνλ€.
1.1 μ£Όμ μ΄μ€μΌμ΄ν μνμ€
μ΄μ€μΌμ΄ν | μλ―Έ | μμ μΆλ ₯ |
---|---|---|
| μ€λ°κΏ | μ€μ λ°κΏ |
| ν | λμ΄μ°κΈ°(λ³΄ν΅ 4~8μΉΈ) |
| ν°λ°μ΄ν μΆλ ₯ |
|
| μμλ°μ΄ν μΆλ ₯ |
|
| λ°±μ¬λμ μΆλ ₯ |
|
| μΊλ¦¬μ§ λ¦¬ν΄ | 컀μλ₯Ό 맨 μμΌλ‘ μ΄λ (κ±°μ μ μ) |
| λ°±μ€νμ΄μ€ | κΈμ νλ μμ (κ±°μ μ μ) |
| νΌ νΌλ | νμ΄μ§ λκΉ (κ±°μ μ μ) |
1.2 μ¬μ© μμ
System.out.println("μ΄λ¦\tλμ΄");
System.out.println("μν¬\t25");
System.out.println("κ·Έλ λ§νλ€: \"μλ
νμΈμ\"");
System.out.println("C:\\Program Files\\Java");
μΆλ ₯ κ²°κ³Ό:
μ΄λ¦ λμ΄
μν¬ 25
κ·Έλ λ§νλ€: "μλ
νμΈμ"
C:\Program Files\Java
2. λ¬Έμμ΄ ν¬λ§· μμ λ¬Έμ
Javaμμ λ¬Έμμ΄μ μ ν΄μ§ νμμΌλ‘ μΆλ ₯νκ³ μΆμ λ System.out.printf()
λλ String.format()
μ μ¬μ©νλ€.
2.1 κΈ°λ³Έ νμ
System.out.printf("νμ", κ°1, κ°2...);
String result = String.format("νμ", κ°1, κ°2...);
2.2 μ£Όμ μμ λ¬Έμ
μμ λ¬Έμ | μ€λͺ | μμ μΆλ ₯ |
---|---|---|
| λ¬Έμμ΄ |
|
| μ μ (10μ§μ) |
|
| μ€μ (μμμ κ°λ₯) |
|
| λ¬Έμ |
|
| μ€λ°κΏ (OSλ³ νΈν) |
|
| νΌμΌνΈ(%) μΆλ ₯ |
|
2.3 μ리μ/μ λ ¬ μ€μ
νμ | μ€λͺ |
---|---|
| μ 체 5μ리, μ€λ₯Έμͺ½ μ λ ¬ |
| μ 체 5μ리, μΌμͺ½ μ λ ¬ |
| μμ리λ₯Ό 0μΌλ‘ μ±μ (μ΄ 5μ리) |
| μμμ λμ§Έμ리κΉμ§ μΆλ ₯ |
| μ 체 6μΉΈ μ€ μμμ 2μ리 ν¬ν¨ |
2.4 μ¬μ© μμ
String name = "μν¬";
int age = 25;
double score = 93.756;
System.out.printf("μ΄λ¦: %s, λμ΄: %d%n", name, age);
System.out.printf("μ μ: %.2f%n", score);
System.out.printf("μ§νλ₯ : %d%%%n", 100);
μΆλ ₯ κ²°κ³Ό:
μ΄λ¦: μν¬, λμ΄: 25
μ μ: 93.76
μ§νλ₯ : 100%
3. μμ½ λΉκ΅ν
νλͺ© | μμ | μ€λͺ |
---|---|---|
μ΄μ€μΌμ΄ν λ¬Έμ |
| λ¬Έμμ΄ λ΄λΆ μ μ΄ |
μμ λ¬Έμ (printf) |
| νμμ μ§μ νμ¬ μΆλ ₯ |
4. μ½μ μμ μΆλ ₯ (ANSI 컬λ¬)
Java μ체λ μ½μ μμ κΈ°λ₯μ μ 곡νμ§ μμ§λ§, ν°λ―Έλμμ ANSI μ½λλ₯Ό μ¬μ©νλ©΄ μΆλ ₯ μμ λ³κ²½ν μ μλ€.
public class ColorExample {
public static final String RED = "\u001B[31m";
public static final String RESET = "\u001B[0m";
public static void main(String[] args) {
System.out.println(RED + "μ΄ λ¬Έμ₯μ λΉ¨κ°μμ
λλ€." + RESET);
}
}
μμ | ANSI μ½λ |
---|---|
λΉ¨κ° |
|
μ΄λ‘ |
|
λ Έλ |
|
νλ |
|
리μ |
|
5. λ μ§ λ° μκ° ν¬λ§· μΆλ ₯
Javaμμλ java.time.LocalDateTime
κ³Ό DateTimeFormatter
λ₯Ό μ¬μ©ν΄ λ μ§/μκ°μ μνλ νμμΌλ‘ μΆλ ₯ν μ μλ€.
5.1 DateTimeFormatter κΈ°λ³Έ μ¬μ©
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
LocalDateTime now = LocalDateTime.now();
DateTimeFormatter fmt = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
System.out.println("νμ¬ μκ°: " + now.format(fmt));
5.2 μ£Όμ ν¬λ§· ν¨ν΄
ν¨ν΄ | μλ―Έ | μμ |
---|---|---|
| μ°λ |
|
| μ |
|
| μΌ |
|
| μκ° (24μκ°μ ) |
|
| μκ° (12μκ°μ ) |
|
| λΆ |
|
| μ΄ |
|
| μ€μ /μ€ν |
/
|
| μμΌ |
|
5.3 μ¬μ©μ μ§μ ν¬λ§· μμ
DateTimeFormatter customFmt = DateTimeFormatter.ofPattern("yyyyλ
MMμ ddμΌ (E) a hh:mm");
String formatted = now.format(customFmt);
System.out.println("νμνλ μκ°: " + formatted);
6. λ‘κΉ μ© ν¬λ§· μΆλ ₯
Javaμλ κΈ°λ³Έ λ‘κ·Έ μμ€ν
μΈ java.util.logging.Logger
κ° μλ€.
6.1 Logger κΈ°λ³Έ μ¬μ©
import java.util.logging.*;
Logger logger = Logger.getLogger("MyLogger");
logger.info("μ 보 λ©μμ§");
logger.warning("κ²½κ³ λ©μμ§");
logger.severe("μλ¬ λ©μμ§");
6.2 ν¬λ§· λ¬Έμμ΄κ³Ό ν¨κ» μ°κΈ°
String name = "λ€μΈ";
int age = 25;
logger.info(String.format("μ¬μ©μ μ΄λ¦: %s, λμ΄: %d", name, age));
6.3 λ‘κ·Έ λ 벨 μ’ λ₯
λ 벨 | μ€λͺ |
---|---|
| μ¬κ°ν μ€λ₯ |
| κ²½κ³ |
| μΌλ° μ 보 |
| μ€μ κ΄λ ¨ μ 보 |
| λλ²κΉ μμ€μ μ 보 |
6.4 μΆλ ₯ νμ 컀μ€ν°λ§μ΄μ§
- λ‘κ·Έ μΆλ ₯ μμΉ(μ½μ/νμΌ)
- μΆλ ₯ λ©μμ§ ν¬λ§· (μκ°, λ‘κ·Έ λ 벨, λ©μμ§ λ΄μ© λ±)
logging.properties
νμΌλ‘ μ€μ λ³κ²½ κ°λ₯
Java μ κ·μ(Regular Expression)
1. κ°μ
μ κ·ννμ(Regular Expression)μ νΉμ λ¬Έμμ΄μ ν¨ν΄μ λ§κ² κ²μ, λ체, κ²μ¦νλ λ° μ¬μ©λλ κ°λ ₯ν λꡬμ΄λ€. μλ°μμλ java.util.regex
ν¨ν€μ§λ₯Ό ν΅ν΄ μ κ·ννμμ μ¬μ©ν μ μλ€.
1.1. μ κ·ννμ κ΅¬μ± μμ
μ κ·ννμμ κΈ°λ³Έμ μΈ λ¬Έλ²κ³Ό νΉμ λ¬Έμλ₯Ό μ‘°ν©νμ¬ λ§λ€μ΄μ§λ©°, μμ£Ό μ¬μ©λλ λͺ κ°μ§ μ£Όμ κ΅¬μ± μμκ° μλ€.
- λ¬Έμ ν΄λμ€:
[ ]
- μ:
[a-z]
λ μλ¬Έμ μνλ²³μ μλ―Ένλ€.
- μ:
- μλμ:
{n,m}
,+
,*
,?
- μ:
a{2,4}
λ 'a'κ° 2λ² μ΄μ 4λ² μ΄ν λνλλ ν¨ν΄μ μλ―Ένλ€.
- μ:
- λ©ν λ¬Έμ:
^
,$
,.
,|
,\
- μ:
^abc
λ 'abc'λ‘ μμνλ λ¬Έμμ΄μ μλ―Ένλ€.
- μ:
1.2. μμ£Ό μ¬μ©λλ ν¨ν΄
.
: μμμ ν λ¬Έμ (κ°ν λ¬Έμλ₯Ό μ μΈ)\d
: μ«μ (0-9)\w
: μνλ²³ λ° μ«μ, λ°μ€ (a-zA-Z0-9_)\s
: 곡백 λ¬Έμ (ν, μ€νμ΄μ€ λ±)\b
: λ¨μ΄ κ²½κ³
2. μλ°μμ μ κ·ννμ μ¬μ©νκΈ°
2.1. Pattern
ν΄λμ€
Pattern
ν΄λμ€λ μ κ·ννμμ ν¨ν΄μ μ»΄νμΌνλ λ° μ¬μ©λλ€. μ΄ ν΄λμ€λ μ κ·ννμ ν¨ν΄μ λ§€μΉνκ³ κ²μνλ λ°©λ²μ μ 곡νλ€.
2.1.1. Pattern μ»΄νμΌ
Pattern pattern = Pattern.compile("a*b");
μμ μ½λμμ "a*b"
λ 'a'κ° 0λ² μ΄μ λ°λ³΅λκ³ λ€μ 'b'κ° μ€λ ν¨ν΄μ μλ―Ένλ€.
2.1.2. Matcher ν΄λμ€ μ¬μ©
Matcher
ν΄λμ€λ Pattern
κ°μ²΄λ₯Ό μ¬μ©νμ¬ λ¬Έμμ΄κ³Όμ λ§€μΉμ μ²λ¦¬νλ€.
Pattern pattern = Pattern.compile("a*b");
Matcher matcher = pattern.matcher("aaab");
boolean matches = matcher.matches(); // true
2.2. Pattern
κ³Ό Matcher
μ μ£Όμ λ©μλ
matches()
: μ 체 λ¬Έμμ΄μ΄ μ κ·ννμμ λ§λμ§ νμΈfind()
: ν¨ν΄μ΄ λ¬Έμμ΄ λ΄μμ λΆλΆμ μΌλ‘ μΌμΉνλμ§ νμΈreplaceAll()
: μΌμΉνλ λΆλΆμ λ€λ₯Έ λ¬Έμμ΄λ‘ λ체
3. μ κ·ννμ νμ© μμ
3.1. μ΄λ©μΌ μ£Όμ κ²μ¦
μ΄λ©μΌ μ£Όμκ° μ ν¨νμ§ κ²μ¬νλ μ κ·ννμ μμ
Pattern pattern = Pattern.compile("^[a-zA-Z0-9_+&*-]+(?:\\.[a-zA-Z0-9_+&*-]+)*@(?:[a-zA-Z0-9-]+\\.)+[a-zA-Z]{2,7}$");
Matcher matcher = pattern.matcher("example@domain.com");
boolean isValid = matcher.matches(); // true
3.2. μ νλ²νΈ νμ κ²μ¦
μ νλ²νΈ νμμ΄ λ§λμ§ κ²μ¬νλ μ κ·ννμ μμ
Pattern pattern = Pattern.compile("^\\d{3}-\\d{3,4}-\\d{4}$");
Matcher matcher = pattern.matcher("010-1234-5678");
boolean isValid = matcher.matches(); // true
Java Arrays.sort() μ 리
1. κ°μ
Arrays.sort()
λ Javaμμ λ°°μ΄μ μ λ ¬ν λ μ¬μ©νλ μ μ λ©μλμ΄λ€.- μ΄ λ©μλλ λ°°μ΄μ μ μ리(in-place) μμ μ λ ¬νλ©°, λ°νκ°μ΄ μλ€ = (
void
λ₯Ό λ°ννλ€.)
2. κΈ°λ³Έ λ¬Έλ²
Arrays.sort(λ°°μ΄);
λ§€κ°λ³μ | μ€λͺ |
---|---|
λ°°μ΄ | μ λ ¬ λμ (μ: |
3. λ°νκ°μ΄ void
μΈ μ΄μ
νλͺ© | μ€λͺ |
---|---|
μ μ리 μ λ ¬ |
|
μλ‘μ΄ λ°°μ΄ λ°ν μ ν¨ | μ λ ¬λ λ°°μ΄μ μλ‘ λ§λ€μ΄ λ°ννμ§ μμ |
λ©λͺ¨λ¦¬ μ μ½ | λΆνμν λ°°μ΄ λ³΅μ¬ μμ΄ λΉ λ₯Έ μ λ ¬ μν κ°λ₯ |
ν λΉ X |
|
4. μμ
int[] numbers = {3, 1, 4};
Arrays.sort(numbers); // numbers μμ²΄κ° μ λ ¬λ¨
System.out.println(Arrays.toString(numbers)); // [1, 3, 4]
5. νν μ€μ μμ β
int[] sorted = Arrays.sort(numbers); // β μ»΄νμΌ μλ¬: voidλ₯Ό int[]μ λμ
ν μ μμ
6. λμ: μ λ ¬λ λ°°μ΄μ μλ‘ λ§λ€κ³ μΆλ€λ©΄?
int[] original = {3, 1, 2};
int[] copy = Arrays.copyOf(original, original.length);
Arrays.sort(copy);
7. κ΄λ ¨ λ©μλ
λ©μλ | μ€λͺ |
---|---|
| κΈ°λ³Έ μ€λ¦μ°¨μ μ λ ¬ |
| μ¬μ©μ μ μ κΈ°μ€ μ λ ¬ (κ°μ²΄ λ°°μ΄) |
| 리μ€νΈ μ λ ¬ (λ°νκ° μμ) |
Java λ°°μ΄ κ΄λ ¨ μ£Όμ λ©μλ μ 리
1. λ°°μ΄ λΉκ΅: Arrays.equals()
Arrays.equals(array1, array2);
μ€λͺ | λ΄μ© |
---|---|
λΉκ΅ λμ | λ λ°°μ΄μ ν¬κΈ°μ μμ κ°μ λͺ¨λ λΉκ΅ |
λ°νκ° |
|
μ£Όμ |
|
π μμ:
int[] a = {1, 2, 3};
int[] b = {1, 2, 3};
System.out.println(Arrays.equals(a, b)); // β
true
System.out.println(a == b); // β false (μ£Όμ λΉκ΅)
2. λ°°μ΄ λ³΅μ¬: Arrays.copyOf()
Arrays.copyOf(μλ³Έλ°°μ΄, 볡μ¬ν κΈΈμ΄);
μλ³Έ λ°°μ΄μ μμμλΆν° μ§μ ν κΈΈμ΄λ§νΌ 볡μ¬νμ¬ μ λ°°μ΄μ μμ±νλ€.
λ°νκ°μμλ‘μ΄ λ°°μ΄μ΄κ³ , μλ³Έκ³Ό λ³κ°μ κ°μ²΄μ΄λ€.
π μμ:
int[] original = {1, 2, 3, 4};
int[] copied = Arrays.copyOf(original, 2); // [1, 2]
β¨ νμ₯ μ¬μ©: κΈΈμ΄ μ΄κ³Ό μ 0
μΌλ‘ μ±μ
int[] extended = Arrays.copyOf(original, 6); // [1, 2, 3, 4, 0, 0]
3. λΆλΆ 볡μ¬: Arrays.copyOfRange()
Arrays.copyOfRange(λ°°μ΄, μμμΈλ±μ€, λμΈλ±μ€);
μμ μΈλ±μ€λΆν° λ μΈλ±μ€ μ κΉμ§ 볡μ¬νλ€.
λ°νκ°μ μλ‘μ΄ λ°°μ΄ (κ΅¬κ° λ³΅μ¬)μ΄λ€.
ν λ§λλ‘ λ°°μ΄μ μ¬λΌμ΄μ±μ ꡬννλ€.
π μμ:
int[] sub = Arrays.copyOfRange(original, 1, 3); // [2, 3]
4. λ°°μ΄ μ λ ¬: Arrays.sort()
Arrays.sort(λ°°μ΄);
λ°°μ΄μ μ€λ¦μ°¨μ μ λ ¬ν λ μ΄λ€. (in-place μ λ ¬, λ°νκ° μμ void
)
voidνμ μ λ°ννκΈ° λλ¬Έμ μλ‘μ΄ λ³μμ λ΄μ μ μλ€.
μ λ ¬ κΈ°μ€(μ«μ: μ€λ¦μ°¨μ, λ¬Έμμ΄: μ λμ½λ κΈ°μ€)
π μμ:
int[] arr = {5, 1, 3};
Arrays.sort(arr); // arr β [1, 3, 5]
5. λ°°μ΄ μΆλ ₯: Arrays.toString()
Arrays.toString(λ°°μ΄);
λ°°μ΄μ λ΄μ©μ λ¬Έμμ΄λ‘ μΆλ ₯νλ€. (λλ²κΉ μ©)
π μμ:
System.out.println(Arrays.toString(arr)); // [1, 3, 5]
6. λ°°μ΄ μ±μ°κΈ°: Arrays.fill()
Arrays.fill(λ°°μ΄, κ°);
λͺ¨λ μμλ₯Ό λμΌν κ°μΌλ‘ μ΄κΈ°ννλ€.
π μμ:
int[] arr = new int[5];
Arrays.fill(arr, 7); // arr β [7, 7, 7, 7, 7]
7. λ°°μ΄ μ΄μ§ νμ: Arrays.binarySearch()
Arrays.binarySearch(μ λ ¬λλ°°μ΄, μ°Ύμκ°);
μ λ ¬λ λ°°μ΄μμ μ΄μ§ νμμ μννλ€.
λ°νκ°μ μΈλ±μ€μ΄λ€. (μμΌλ©΄ μμ)
π μμ:
int[] sorted = {1, 2, 3, 4};
int idx = Arrays.binarySearch(sorted, 3); // 2
β μμ½
κΈ°λ₯ | λ©μλ |
---|---|
λ°°μ΄ λ΄μ© λΉκ΅ |
|
μ 체 λ³΅μ¬ |
|
λΆλΆ λ³΅μ¬ |
|
λ°°μ΄ μ λ ¬ |
|
λ°°μ΄ μΆλ ₯ |
|
λ°°μ΄ μ΄κΈ°ν |
|
μ΄μ§ νμ |
|
β μ½ν μμ μμ£Ό μ°λ μ‘°ν©
μν© | μΆμ² μ‘°ν© |
---|---|
λ λ¬Έμμ΄μ΄ κ°μ λ¬Έμλ‘ μ΄λ£¨μ΄μ‘λμ§ νμΈ |
|
μλ³Έ λ°°μ΄ μ μ§νλ©° μ λ ¬ |
|
λ°°μ΄ μ¬λΌμ΄μ€ |
|