
์ง๊ธ๊น์ง๋ C++์ด๋ ํ์ด์ฌ์ผ๋ก ์ฝํ ๋ฌธ์ ๋ฅผ ํ์ด์๋๋ฐ, ๋ฐฑ์๋ ์ง๋ฌด์ ๊ฒฝ์ฐ Java๋ก ์์ ์ธ์ด๋ฅผ ์ ํํ๋ ๊ฒฝ์ฐ๋ ์๋ ๋ฏ ํด์ Java๋ฅผ ์ฃผ ์ธ์ด๋ก ์ฑํํด์ ์ฝํ ๋ฅผ ์ค๋นํ๊ธฐ๋ก ๊ฒฐ์ ํ๋ค. ๊ทธ๋ฆฌ๊ณ ์๋ฐ๋ก ์ฝํ ๋ฅผ ๋ณด๊ธฐ ์ํด ํ์ํ ๋ฌธ๋ฒ, ์ ์ฉํ ํ์ด ์ผ์ด์ค ๋ฑ์ ์ ๋ฆฌํ๊ณ ์ ํ๋ค.
๋ฐฐ์ด
์๋ฐ์์ ๋ฐฐ์ด์ ๊ฐ ์ถ๊ฐํ๋ ๋ฒ
import java.util.ArrayList;
public class App {
public static void main(String[] args) {
ArrayList<Integer> a = new ArrayList<>();
a.add(1);
}
}
์ ์ ๋ฐฐ์ด vs ๋์ ๋ฐฐ์ด
import java.util.ArrayList;
public class App {
public static void main(String[] args) {
int [] b = new int[5]; // ์ ์ ๋ฐฐ์ด
ArrayList<Integer> c = new ArrayList<>(); // ๋์ ๋ฐฐ์ด
}
}
๋์ ์ผ๋ก ๊ฐ์ ๋ฐ๊ฟ์ค์ผ ํ๋ ๊ฒฝ์ฐ๊ฐ ์๋ ๊ฒฝ์ฐ ์ ์ ๋ฐฐ์ด์ ์ฐ๋ ๊ฒ์ด ์ฑ๋ฅ์ด ๋ ์ข๋ค.
ํ์ง๋ง ์ ์ ๋ฐฐ์ด์ ๋ฉ์๋๊ฐ ์๋ค. remove, add๊ฐ ๊ฐ๋ฅ์ ํ์ง๋ง ๊ป๋๋ฝ๋ค.
๋์ ๋ฐฐ์ด์ add, remove, contains ๋ฑ ํธํ ๋ฉ์๋๊ฐ ์ ๊ณต๋๋ค.
๋ฐฐ์ด ์์ฑ ๋ฐ ์ ์ฒด ์ถ๋ ฅ
import java.util.ArrayList;
public class App {
public static void main(String[] args) {
int a[] = {1,2,3,4,5};
for (int i = 0; i < a.length; i++) {
System.out.println(a[i]); // 1 2 3 4 5
}
}
}
import java.util.ArrayList;
public class App { // ๊ฐ์ ๊ฒฐ๊ณผ
public static void main(String[] args) {
int a[] = new int[5];
for (int i = 0; i < a.length; i++) {
a[i] = i + 1;
}
for (int i = 0; i < a.length; i++) {
System.out.println(a[i]);
}
}
}
๋ฐฐ์ด ์ ๋ ฌ
์ค๋ฆ์ฐจ์
import java.util.*; // << ์ค์
public class App {
public static void main(String[] args) {
int a[] = {1, 3, 2, 1, 5};
Arrays.sort(a)
for (int i = 0; i < a.length; i++) {
System.out.println(a[i]);
}
}
}
๋ด๋ฆผ์ฐจ์
import java.util.*;
public class App {
public static void main(String[] args) {
Integer a[] = {1, 3, 2, 1, 5};
Arrays.sort(a, Collections.reverseOrder());
for (int i = 0; i < a.length; i++) {
System.out.println(a[i]);
}
}
}
์๋ฃํ ์ค๋ช
int: ๊ธฐ๋ณธ ํ์ , null ๊ฐ ๋ถ๊ฐInteger: int์ ๋ํผํด๋์ค, ์ฐธ์กฐํ์ , null๊ฐ ๊ฐ๋ฅ,toString๋ฑ์ ๋ฉ์๋ ์ง์
๋ฐฐ์ด์ Integer ํ์ผ๋ก ๋ฐ๊ฟ์ฃผ๊ณ , Array.sort()์ ๋๋ฒ์งธ ์ธ์๋ก Collections.reverseOrder() ๋ฉ์๋๋ฅผ ์ฌ์ฉํด์ฃผ๋ฉด ๋๋ค.
2์ฐจ์ Pair ๋ฐฐ์ด
2์ฐจ์ ๋ฐฐ์ด์ ๋ฐ๋ ๊ฒฝ์ฐ Pair ํด๋์ค๋ฅผ ์์ฑํด์ ์ฌ์ฉํ๋ฉด ๋จ.
y๋ ์ค๋ฆ์ฐจ์, x๋ ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌํ๋ค๊ณ ํ๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
import java.util.*;
class Pair{
int y;
int x;
public Pair(int y, int x) {
this.y = y;
this.x = x;
}
}
public class App {
public static void main(String[] args) {
// ์ ์ ๋ฐฐ์ด์ ์ฐ๋ ๊ฒฝ์ฐ
Pair[] a = {
new Pair(1, 2),
new Pair(3, 4),
new Pair(2, 5),
new Pair(10, 23),
new Pair(10, 12)
};
// ๋์ ๋ฐฐ์ด์ ์จ๋๋จ ArrayList<Pair>b = new ArrayList<>();
Arrays.sort(a, (p1,p2)->(p1.y == p2.y) ? Integer.compare(p2.x, p1.x): Integer.compare(p1.y, p2.y));
for(Pair pair: a) {
System.out.println(pair.y + " , " + pair.x); // 1,2|2,5|3,4|10,23|10,12
}
}
}
- ๋๋ค์
- ํจ์ํ ์ธํฐํ์ด์ค๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ ๋ฌธ๋ฒ์ผ๋ก. ๋ฉ์๋๊ฐ ๋ฑ ํ๋ ์๋ ์ธํฐํ์ด์ค๋ง ๋๋ค๋ก ๋์ฒด ๊ฐ๋ฅ
- Integer.compare()
- ์ผํญ์ฐ์ฐ์
์ฌ์ฉํด์ ์ ๋ ฌ
๋ฐฐ์ด์์ ํน์ ๊ฐ์ ์ฐพ๋ ๊ฒฝ์ฐ - ์คํธ๋ฆผ ํ์ฉ
import java.util.*;
public class App {
public static void main(String[] args) {
int [] a = {1,2,3,4,5};
int target = 3;
boolean found = Arrays.stream(a).anyMatch(value -> value == target);
System.out.println(found); // true
}
}
- ์คํธ๋ฆผ : ๋ฐ์ดํฐ ์ปฌ๋ ์
์ ๋๋ค์์ผ๋ก ํํ์๊ณผ ํจ๊ป ์ ์ธ์ ์ผ๋ก ์ฒ๋ฆฌํ ์ ์๋ ๋๊ตฌ
- ๋ฐฐ์ด, ๋งต ๊ฐ์ ํน์ ์๋ฃํ์ ์ฒ๋ฆฌํ๊ธฐ ์ํ ๋ฉ์๋๋ค์ ๊ฐ์ง๊ณ ์๋ ์ธํฐํ์ด์ค๋ก, ํน์ ์๋ฃํ์ ๊ฐ๋ฆฌํค๋(์ฐธ์กฐํ๋) ๊ฐ์ฒด๋ฅผ ์ธ์คํด์คํ ํ์ฌ ํด๋น ์๋ฃํ์ ์ํ๋ ์ฐ์ฐ์ ํ๊ณ ์ํ๋ ๊ฐ์ ๊ฐ์ ธ์ฌ ์ ์์
- ๋ฐ๋ณต๋ฌธ๋ณด๋ค ํจ์ฌ ๊ฐ๊ฒฐํ๊ณ ๊ฐ๋ ์ฑ์ด ์ข๋ค. + ๋ณ๋ ฌ ์ฒ๋ฆฌ๊ฐ ์ฉ์ดํจ
- ์์ฑ - ์ค๊ฐ์ฐ์ฐ - ์ข ๋จ์ฐ์ฐ ์ธ ๋จ๊ณ๊ฐ ์์. ์ค๊ฐ์ฐ์ฐ์ ์ฒด์ด๋์ด ๊ฐ๋ฅํ๋ฉฐ, ์ข ๋จ์ฐ์ฐ์ด ํธ์ถ๋์ด์ผ ์์ ์ ์ํํจ
Arrays.stream(): ๋ฐฐ์ด์ ์คํธ๋ฆผ์ผ๋ก ๋ง๋๋ ๋ฉ์๋(์ปฌ๋ ์ ์๋ ๊ฐ๋ฅํ๋ค)
stream.anyMatch(Predicate<T> predicate): ์คํธ๋ฆผ์ ์์๊ฐ ์ฃผ์ด์ง Predicate์ ์ผ์นํ๋์ง ์ฌ๋ถ๋ฅผ boolean ์ผ๋ก ๋ฐํํ๋ค. anyMatch๋ ํ๋๋ผ๋ ์ผ์นํ๋ฉด true(allMatch, noneMatch ์กด์ฌ)
Reduce ํ์ฉ - ๋ฐฐ์ด์ ๋ชจ๋ ํฉ์ณ๋ผ
import java.util.*;
public class App {
public static void main(String[] args) {
int [] array = {1,2,3,4,5};
int ret = Arrays.stream(array).reduce(0, (a,b)->a+b);
System.out.println(ret); //15
}
}
- reduce: ์คํธ๋ฆผ์ ์ข
๋จ์ฐ์ฐ์ผ๋ก ์คํธ๋ฆผ์ ๋ชจ๋ ์์๋ฅผ ํ๋์ ๊ฒฐ๊ณผ๋ก ์ง๊ณ ํ๋๋ฐ์ ์ฌ์ฉ๋๋ค.
- ๋ค์ํ ์ค๋ฒ๋ก๋ ํ์์ด ์์
- ์ฒซ๋ฒ์งธ ์ธ์ : ์ด๊ธฐ๊ฐ → ์ฐ์ฐ์ ๋์ ํฉ์ ์์ํ๋ ์ง์ ์คํธ๋ฆผ์ ์์๊ฐ ์๋ ๊ฒฝ์ฐ ์ต์ข ๊ฒฐ๊ณผ๋ก ๋ฐํ๋๋ ๊ฐ
- ๋๋ฒ์งธ ์ธ์: accumlator (a,b)→a+b ⇒ ๋ ๊ฐ์ ๊ฐ์ ํ์
์ธ์๋ฅผ ๋ฐ์ ๊ฐ์ ํ์
๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ๋ ํจ์ํ ์ธํฐํ์ด์ค(๋๋คํํ์)
- a๋ ํ์ฌ๊น์ง ๋์ ๋ ์ค๊ฐ๊ฒฐ๊ณผ
- b๋ ์คํธ๋ฆผ์์ ํ์ฌ ์ฒ๋ฆฌ์ค์ธ ๋ค์ ์์.
- a+b์์ a์ b๋ฅผ ๋ํ ๊ฐ์ ๋ฐํํ๊ณ ์ด ๋ฐํ ๊ฐ์ด ๋ค์ a๊ฐ ๋๋ค.
๋ฐฐ์ด์ ์์์ ๊ฐ๊ฐ n์ ๊ณฑํด์ ์๋ก์ด ๋ฐฐ์ด์ ๋ง๋ค์ด๋ผ
for๋ฌธ์ ์ฌ์ฉํ ์๋ ์์ง๋ง ์คํธ๋ฆผ์ ์ฐ๋ฉด ์ข ๋ ๊ณ ๊ธ์ง๊ฒ ๊ฐ๋ฅ
import java.util.*;
public class App {
public static void main(String[] args) {
int [] array = {1,2,3,4,5};
int [] ret = Arrays.stream(array).map(e -> e*2).toArray();
for (int i : ret) {
System.out.println(i); // 2 4 6 8 10
}
}
}
์ง์๋ง ๊ณจ๋ผ๋ด์ 2๋ฅผ ๊ณฑํ๋ค๋ฉด
import java.util.*;
public class App {
public static void main(String[] args) {
int [] array = {1,2,3,4,5};
int [] ret = Arrays.stream(array).filter(e -> e % 2 == 0).map(e -> e*2).toArray();
for (int i : ret) {
System.out.println(i); // 4 8
}
}
}
ํด์ฌ ํ ์ด๋ธ(HashMap)
์คํธ๋ฆผ์ ๋ฐฐ์ด์ ํ์ ๋์ง ์์(์ปฌ๋ ์ ์๋ ์ ์ฉ์ด ๊ฐ๋ฅ)
- HashMap์ java.util ํจํค์ง์ ์ํ๋ ๋ํ์ ์ธ ์ปฌ๋ ์
ํด๋์ค ์ค ํ๋(ํด์ํ
์ด๋ธ๊ธฐ๋ฐ)
- ์ปดํจํ ์์ ํค๋ฅผ ๊ฐ์ ๋งคํํ ์ ์๋ ๊ตฌ์กฐ์ธ, ์ฐ๊ด ๋ฐฐ์ด ์ถ๊ฐ์ ์ฌ์ฉ๋๋ ์๋ฃ ๊ตฌ์กฐ
- Key์ Value์ ์์ ์ ์ฅํ๋ Map์ธํฐํ์ด์ค์ ๊ตฌํ์ฒด์ด๋ค.
HashMap ์๋ฃํ์ mp์ ๋ํด์, ๊ฐ๋ค์ ๋ฝ์ผ๋ ค๋ฉด
import java.util.*;
public class App {
public static void main(String[] args) {
HashMap<String, Integer> mp = new HashMap<>();
mp.put("a", 1);
mp.put("b", 10);
mp.put("c", 100);
mp.values().stream().forEach(e->System.out.println(e)); //1 10 100
}
}
- put์ผ๋ก ๋ฃ๊ณ values().stream().forEach() ๋ก ๊ฐ์ ๋ฝ๋๋ค.
๊ฐ์ด ์๋๋ผ key๋ค์ ๋ฝ์ผ๋ ค๋ฉด
import java.util.*;
public class App {
public static void main(String[] args) {
HashMap<String, Integer> mp = new HashMap<>();
mp.put("a", 1);
mp.put("b", 10);
mp.put("c", 100);
mp.keySet().forEach(e->System.out.println(e)); // a b c
for(String a: mp.keySet()) { // ๋๊ฐ์ด Key๊ฐ ์ถ๋ ฅ
System.out.println(a); // a b c
}
}
}
๋ฌธ์์ด
์ํ
import java.util.*;
public class App {
public static void main(String[] args) {
String a = "lavine is zagabi";
for(char b : a.toCharArray()) {
System.out.println(b); // ๋ฌธ์์ด ํ๊ธ์์ฉ ์ถ๋ ฅ
}
}
}
Stringํ์ ์toCharArray()
๋ฌธ์์ด ๊ธฐ๋ฐ ๋ก์ง์ ๋ํ - ์นด์ดํธ ๋ฐฐ์ด
๋ฌธ์์ด ์์ ๊ฐ ๋ฌธ์๊ฐ ๋ช ๊ฐ ๋ค์ด๊ฐ ์๋์ง ์นด์ดํธ
import java.util.*;
public class App {
public static void main(String[] args) {
String a = "lavine is zagabi";
int [] cnt = new int[26];
for(char b : a.toCharArray()) {
System.out.println(b);// ๋ฌธ์์ด ํ๊ธ์์ฉ ์ถ๋ ฅ
if(b >= 'a' && b <= 'z'){
cnt[b-'a']++;
}
}
for (int i : cnt) {
System.out.println(i); //3 1 0 0 1 0 1 ....
}
}
}
import java.util.*;
public class App {
public static void main(String[] args) {
String a = "lavine is zagabi";
int [] cnt = new int[26];
for(char b : a.toCharArray()) {
System.out.println(b);// ๋ฌธ์์ด ํ๊ธ์์ฉ ์ถ๋ ฅ
if(b >= 'a' && b <= 'z'){
cnt[b-'a']++;
}
}
for (int i = 0; i < 26; i++) {
if (cnt[i] > 0) {
System.out.println((char) (i + 'a') + ": " + cnt[i]); // a:3, b:1, e:1, g:1, i:3 ....
}
}
}
}
chars๋ฅผ ์ฐ๋ฉด char๋ฅผ ์คํธ๋ฆผ์ผ๋ก ๋ง๋ค์ด์ ์ธ ์ ์๋ค
import java.util.*;
public class App {
public static void main(String[] args) {
String a = "lavine is zagabi";
int [] cnt = new int[26];
a.chars().filter(e -> e >= 'a' && e <= 'z').forEach(e -> cnt[e - 'a']++);
for (int i = 0; i < 26; i++) {
if (cnt[i] > 0) {
System.out.println((char) (i + 'a') + ": " + cnt[i]); // ์ถ๋ ฅ ๋์ผ
}
}
}
}
๋ฌธ์์ด ์ฃผ์ ๋ฉ์๋ 1 - split
import java.util.*;
public class App {
public static void main(String[] args) {
String a = "lavine is zagabi";
String [] b = a.split(" "); // ๊ณต๋ฐฑ ๊ธฐ์ค์ผ๋ก ๋๋ ์
for(String c : b) {
System.out.println(c);// lavine is zagabi ํ๋์ฉ ์ถ๋ ฅ
}
}
}
split์ ๊ตฌ๋ถ์๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ฌธ์์ด์ ๋ฐฐ์ด๋ก ๋ง๋ค์ด์ค
๋์ ์ ๊ทํํ์์ด ๋งค๊ฐ๋ณ์๋ก ๋ค์ด๊ฐ๋ฏ๋ก ๋ง์ฝ ๊ณต๋ฐฑ ๋์ .์ด ๊ตฌ๋ถ์๋ผ๋ฉด
import java.util.*;
public class App {
public static void main(String[] args) {
String a = "lavine.is.zagabi";
String [] b = a.split("\\."); // .๋ฅผ ๊ตฌ๋ถ์๋ก lavine is zagabi๊ฐ ๋ฐฐ์ด 0,1,2 ์ธ๋ฑ์ค๋ก ์์ฑ
for(String c : b) {
System.out.println(c);
}
}
}
๋ฌธ์์ด ์ฃผ์ ๋ฉ์๋ 2 - indexOf
๋ฐฐ์ด์์ ์ฐพ๋ ๋ฌธ์๊ฐ ๋ช๋ฒ์งธ ์์น์ ์๋์ง(๊ฐ์ฅ ์ฒ์ ์ฐพ์ ์์น ๊ธฐ์ค)
import java.util.*;
public class App {
public static void main(String[] args) {
String a = "lavine.is.zagabi";
int b = a.indexOf("a"); // 1 , ๋ง์ฝ ์๋ ๋ฌธ์์ด์ ์ธ์๋ก ๋ฐ์ผ๋ฉด -1 ๋ฆฌํด
System.out.println(b);
}
}
๋ฌธ์์ด ์ฃผ์ ๋ฉ์๋ 2 - substring
๋ฐฐ์ด์์ ์ํ๋ ๋ถ๋ถ์ ๋นผ๋ค๊ฐ ์ ๋ฐฐ์ด์ ๋ง๋๋ ๋ฒ
import java.util.*;
public class App {
public static void main(String[] args) {
String a = "lavine.is.zagabi";
String b = a.substring(0, 3); // lav
System.out.println(b);
}
}
- ์ฒซ๋ฒ์งธ ์ธ์: ์์ ์ธ๋ฑ์ค
- ๋๋ฒ์งธ ์ธ์: ๋ง์ง๋ง ์ธ๋ฑ์ค
ํ๋ณํ
๋ฌธ์์ด→์ ์ , ์ ์→๋ฌธ์์ด
import java.util.*;
public class App {
public static void main(String[] args) {
String a = "1234";
int b = Integer.parseInt(a);
System.out.println(b);
}
}
import java.util.*;
public class App {
public static void main(String[] args) {
String a = "1234";
int b = Integer.parseInt(a);
String c = Integer.toString(b);
System.out.println(b);
}
}
๋ฐฐ์ด ์ด๊ธฐํ
import java.util.*;
public class App {
public static void main(String[] args) {
int [] a = new int[5]; // ์ ๋ถ 0์ผ๋ก ์ด๊ธฐํ, boolean์ false, string์ null
Arrays.fill(a,30); // 30 30 30 30 30 ์ผ๋ก ์ด๊ธฐํ
for (int b : a) {
System.out.println(b);
}
}
}
1์ฐจ์ ๋ฐฐ์ด์ fill ๋ฉ์๋์ฐ๋ฉด ์ฝ๋ค.
2์ฐจ์ ๋ฐฐ์ด ์ ์ฒด๋ฅผ ์ด๊ธฐํํ๋๊ฑด ํ๋ฒ์ ๋ถ๊ฐ๋ฅ. ๊ทธ๋ฅ ํฌ๋ฌธ ๋๋ฆฌ๋ฉด๋จ
import java.util.*;
public class App {
public static void main(String[] args) {
int [][] a = new int[5][5];
for(int i = 0; i < 5; i++) {
Arrays.fill(a[i], 30);
}
for(int i = 0; i < 5; i++) {
for(int j=0; j<5; j++) {
System.out.println(a[i][j]); // 30์ด 25๊ฐ ๋์ฌ๊ฑฐ์ ์นด์ดํธ ์ฝ๋ ๊ตฌํํด๋ณด์
}
}
}
}
- a[0]์ fill ํด์ a[0][0]~a[0][4] ์ฑ์ฐ๋๊ฑธ a[4][4]๊น์ง ๋ฐ๋ณตํ๋๊ฒ
๋ฐฐ์ด ๋ณต์ฌ
import java.util.*;
public class App {
public static void main(String[] args) {
int [] a = {1,2,3,4,5};
int [] b = new int[a.length]; // ๊ฐ์ ํฌ๊ธฐ ๋ฐฐ์ด ๋ง๋ ๋ค์
System.arraycopy(a, 0, b, 0, a.length);
for(int i : b) {
System.out.println(i); // 1 2 3 4 5
}
}
}
a์ ๊ฐ์ ๋ณต์ฌํด์ b ๋ฐฐ์ด์ ๋ง๋ ๋ค. ๋ณต์ฌ๋ ํ a ๊ฐ ์๋ฌด๋ฆฌ ๋ณ๋ํด๋ b์ ์ํฅ ์์
DFS BFS
๋
ธ๋๊ฐ์ ๊ฐ์ ์ด ์๋ค ํ๋ค ๋ฐฉ๋ฌธํ๋ ๊ณณ์ ๋ฐฉ๋ฌธํ์ง ์๋๋ค.
BFS๋ ๋๋น์ฐ์ ์ผ๋ก ๋ฐฉ๋ฌธํ๋ค.
visted์ ๊ฒฝ์ฐ
- BFS๋
int→ BFS๋ ๊ฐ์ค์น๊ฐ ๊ฐ์ ๊ทธ๋ํ ๋ด์์ ์ต๋จ๊ฑฐ๋ฆฌ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ์ฐ์ด๊ธฐ ๋๋ฌธ์ ์ด๊ธฐ ์ ์ ์ ๊ฐ์ 1๋ก ๋ง๋ค๊ณ , ๋ฌธ์ ์ ๋ฐ๋ผ ๋ค๋ฅธ ๋ ธ๋๊น์ง์ ๊ฑฐ๋ฆฌ๋ฅผ …0๋ถํฐ ์์ํ๋ ๊ฒฝ์ฐ ์ด๊ธฐ ์ ์ ์ ๋ํ ๋ฐฉ๋ฌธ ์ฒ๋ฆฌ๋ฅผ ๋ค์ ํด์ค์ผ ํ๋ค - DFS๋
boolean
Adj[0].add(1) = 0๋ฒ์งธ ์ ์ ์์ 1๋ฒ์งธ ์ ์ ์ผ๋ก ๊ฐ๋ ๊ฐ์ ์ด ์๋ค๋ ๋ป
import java.util.*;
public class App {
private static List<List<Integer>> adj; // ์ธ์ ๋ฆฌ์คํธ 2์ฐจ์
private static boolean[] visited; // DFS visted
private static int[] visited2; // BFS visited
private static void DFS(int here) {
visited[here] = true;
System.out.print(here + " ");
for (int v : adj.get(here)) {
if (!visited[v]) { // ๋ฐฉ๋ฌธ์ด ์๋์ด์๋ค๋ฉด DFS ์ฌ๊ท
DFS(v);
}
}
}
private static void BFS(int here) {
Queue<Integer> queue = new LinkedList<>();
visited2[here] = 1 ;
queue.add(here);
while (!queue.isEmpty()) { // queue๊ฐ ๋น์ด์์๋๊น์ง ๋ฐ๋ณต
here = queue.poll(); // queue ๊ฐ์ฅ ์์์๋๊ฑธ ๋นผ๋ฉด์ ๊ฐ์ ธ์จ๋ค.
System.out.print(here+" ");
for (int there : adj.get(here)) {
if (visited2[there] == 0) { //๋ฐฉ๋ฌธ์ด ์๋๊ฒฝ์ฐ
visited2[there] = visited2[here] + 1; // ๋ฐฉ๋ฌธ ํ๋ฉด์
queue.add(there); // ์ต๋จ๊ฑฐ๋ฆฌ ๊ฑธ์ด!
}
}
}
}
public static void main(String[] args) {
int num = 5;
adj = new ArrayList<>();
for (int i = 0; i < num; i++) {
adj.add(new ArrayList<>()); // ๋น arrayList์ arrayList๋ฅผ ์ถ๊ฐ ex. {{}, {}, {}, ...}
}
adj.get(0).add(1);
adj.get(0).add(2); // 0์์ 1๊ฐ๋ ๊ฐ์ ๊ณผ 2๊ฐ๋ ๊ฐ์ ์กด์ฌ
adj.get(1).add(0); // 1์์ 0,3,4 ๋ก ๊ฐ๋ ๊ฐ์ ์กด์ฌ
adj.get(1).add(3);
adj.get(1).add(4);
visited = new boolean[num]; // static์ผ๋ก ๋ง๋ visited์ ๊ฐ ๋ถ์ฌ(๋ณดํต ๋ฌธ์ ์์ ์
๋ ฅ์ผ๋ก ์ฃผ์ด์ง ๊ทธ๋ฐ num๊ฐ์ ๋ฐ์์ ์ค์ ํจ)
DFS(0);
System.out.print("\n");
visited2 = new int[num]; // ์ต๋จ๊ฑฐ๋ฆฌ ๋ฐฐ์ด์ ๋ง๋ค์ด์ผํจ <- int์จ์ผํ๋์ด์
BFS(0);
}
}
์ถ๋ ฅ
0 1 3 4 2
0 1 2 3 4
DP
๋ํ์ ์ผ๋ก ํผ๋ณด๋์น ์์ด์ด ์๋ค.
import java.util.*;
public class App {
private static int[] memo; // ์ทจํฅ, ์ ์ญ๋ณ์๋ก ํ๋๊ฒ ์ข์ผ๋ฉด ์ด๋ ๊ฒ
private static int fibo(int n) {
if (n <= 1) return n;
if (memo[n] == 0) { // DP ์ ๊ฐ์ด ์์ผ๋ฉด ๊ณ์ฐ
memo[n] = fibo(n - 1) + fibo(n - 2);
}
return memo[n]; // ๊ฐ์ด ์์ผ๋ฉด ๊ทธ๋ฅ return
}
public static void main(String[] args) {
int num = 5; // ๋๋ ค๋ ์๋จ
memo = new int[num + 1];
for (int i = 0; i <= num; i++) {
System.out.println("fibo(" + i + ") = " + fibo(i));
}
}
}
//fibo(0) = 0
//fibo(1) = 1
//fibo(2) = 1
//fibo(3) = 2
//fibo(4) = 3
//fibo(5) = 5
Binary Search
์ ๋ ฌ๋ ๋ฐฐ์ด์์ ํ๋ฉด ๋๋ค
Arays.binarySearch() ์ฐ๋ฉด ๋จ
import java.util.*;
public class App {
public static void main(String[] args) {
int [] a = {1,2,3,4,5};
int target = 3;
int index = Arrays.binarySearch(a, target);
if ( index >= 0 ) {
System.out.println("Found at: " + index); // 2
} else {
System.out.println("Not found");
}
}
}