Skip to content

K-MG-0328/AlgorithmJava

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

42 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ๋ฉ”์„œ๋“œ ์ •๋ฆฌ

๋ฌธ์ž์—ด

charAt(int index)

๐Ÿ“Œ ํŠน์ • ์œ„์น˜์˜ ๋ฌธ์ž ๊ฐ€์ ธ์˜ค๊ธฐ

substring(int beginIndex, int endIndex)

๐Ÿ“Œ ๋ถ€๋ถ„ ๋ฌธ์ž์—ด ์ถ”์ถœ

split(String regex)

๐Ÿ“Œ ํŠน์ • ๋ฌธ์ž๋กœ ๋ฌธ์ž์—ด ๋ถ„ํ• 

replace(String old, String new)

๐Ÿ“Œ ๋ฌธ์ž์—ด ์น˜ํ™˜

replaceAll(String regex, String replacement)

๐Ÿ“Œ ์ •๊ทœ์‹ ๊ธฐ๋ฐ˜ ์น˜ํ™˜

indexOf(String s)

๐Ÿ“Œ ํŠน์ • ๋ฌธ์ž/๋ฌธ์ž์—ด์˜ ์ฒซ ๋“ฑ์žฅ ์œ„์น˜

contains(CharSequence s)

๐Ÿ“Œ ๋ฌธ์ž์—ด ํฌํ•จ ์—ฌ๋ถ€ ํ™•์ธ

toCharArray()

๐Ÿ“Œ ๋ฌธ์ž์—ด์„ ๋ฌธ์ž ๋ฐฐ์—ด๋กœ ๋ณ€ํ™˜

trim()

๐Ÿ“Œ ๋ฌธ์ž์—ด ์•ž๋’ค ๊ณต๋ฐฑ ์ œ๊ฑฐ

๋ฐฐ์—ด

Arrays.get(int index)

๐Ÿ“Œ ๋ฐฐ์—ด์˜ ํŠน์ • ์ธ๋ฑ์Šค์˜ ์š”์†Œ ๊ฐ€์ ธ์˜ค๊ธฐ

Arrays.sort(int[] arr)

๐Ÿ“Œ ๋ฐฐ์—ด์„ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•ฉ๋‹ˆ๋‹ค.

Arrays.sort(Integer[] arr, Collections.reverseOrder())

๐Ÿ“Œ ๋ฐฐ์—ด์„ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•ฉ๋‹ˆ๋‹ค. (int[]๊ฐ€ ์•„๋‹Œ Integer[] ์‚ฌ์šฉ)

Arrays.copyOf(int[] arr, int newLength)

๐Ÿ“Œ ๋ฐฐ์—ด์„ ์ง€์ •๋œ ๊ธธ์ด๋งŒํผ ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค.

Arrays.copyOfRange(int[] arr, int start, int end)

๐Ÿ“Œ ๋ฐฐ์—ด์˜ ํŠน์ • ๋ถ€๋ถ„์„ ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค. (end๋Š” ํฌํ•จ๋˜์ง€ ์•Š์Œ)

Arrays.asList(T... a)

๐Ÿ“Œ ๋ฐฐ์—ด์„ ๋ฆฌ์ŠคํŠธ๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค. (int[]๋Š” Integer[]๋กœ ๋ณ€ํ™˜ ํ•„์š”)

Arrays.stream(arr).anyMatch(x -> x == value)

๐Ÿ“Œ ๋ฐฐ์—ด์— ํŠน์ • ๊ฐ’์ด ํฌํ•จ๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

Arrays.toString(int[] arr)

๐Ÿ“Œ ๋ฐฐ์—ด์„ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

Arrays.fill(int[] arr, int value)

๐Ÿ“Œ ๋ฐฐ์—ด์„ ํŠน์ • ๊ฐ’์œผ๋กœ ์ฑ„์›๋‹ˆ๋‹ค.

(int) Arrays.stream(arr).filter(x -> x > value).count()

๐Ÿ“Œ ํŠน์ • ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ์š”์†Œ์˜ ๊ฐœ์ˆ˜๋ฅผ ์…‰๋‹ˆ๋‹ค.

Arrays.stream(arr).sum()

๐Ÿ“Œ ๋ฐฐ์—ด์˜ ๋ชจ๋“  ์š”์†Œ๋ฅผ ๋”ํ•ฉ๋‹ˆ๋‹ค.

Arrays.stream(arr).min().getAsInt() / Arrays.stream(arr).max().getAsInt()

๐Ÿ“Œ ๋ฐฐ์—ด์—์„œ ์ตœ์†Œ๊ฐ’๊ณผ ์ตœ๋Œ€๊ฐ’์„ ์ฐพ์Šต๋‹ˆ๋‹ค.

Arrays.stream(arr).sorted().boxed().collect(Collectors.toList())

๐Ÿ“Œ ๋ฐฐ์—ด์„ ์ •๋ ฌ๋œ ๋ฆฌ์ŠคํŠธ๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

๋ฐฐ์—ด <-> ๋ฆฌ์ŠคํŠธ ๋ณ€ํ™˜ โญโญโญ

๊ฐ์ฒด ๋ฐฐ์—ด -> ๋ฆฌ์ŠคํŠธ ๋ณ€ํ™˜

Integer[] array = {1, 2, 3};

๐Ÿ“Œ ๊ฐ์ฒด ๋ฐฐ์—ด

List list = Arrays.asList(array)

๐Ÿ“Œ ๋ฐฐ์—ด์„ ๊ณ ์ •๋œ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. Arrays.asList(array)๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฐฐ์—ด์˜ ๊ฐ ์š”์†Œ๊ฐ€ ๋ฆฌ์ŠคํŠธ์˜ ๊ฐœ๋ณ„ ์š”์†Œ๋กœ ๋ณ€ํ™˜๋ฉ๋‹ˆ๋‹ค.

List list = new ArrayList<>(Arrays.asList(array))

๐Ÿ“Œ ๋ฐฐ์—ด์„ ์ˆ˜์ • ๊ฐ€๋Šฅํ•œ List๋กœ ์ƒ์„ฑํ•ด์„œ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ๋ณธํ˜• ๋ฐฐ์—ด -> ๋ฆฌ์ŠคํŠธ ๋ณ€ํ™˜ โญโญโญ

Java์˜ ์ œ๋„ค๋ฆญ์€ ๊ธฐ๋ณธํ˜•(int, double, ๋“ฑ)์„ ์ง์ ‘ ๋‹ค๋ฃฐ ์ˆ˜ ์—†์œผ๋ฏ€๋กœ, List์™€ ๊ฐ™์ด ๊ธฐ๋ณธํ˜• ๋ฐฐ์—ด์„ ์ œ๋„ค๋ฆญ ํƒ€์ž…์œผ๋กœ ์‚ฌ์šฉํ•˜๋ฉด ํƒ€์ž… ๋ถˆ์ผ์น˜ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
๊ธฐ๋ณธํ˜• ๋ฐฐ์—ด์„ ๋ฆฌ์ŠคํŠธ๋กœ ๊ฐœ๋ณ„ ์š”์†Œ๋กœ ๋ณ€ํ™˜ํ•˜๋ ค๋ฉด ๊ฐ int๋ฅผ Integer๋กœ ๋ฐ•์‹ฑํ•œ ํ›„ ์ด๋ฅผ ๋ฆฌ์ŠคํŠธ๋กœ ๋ชจ์•„์•ผํ•ฉ๋‹ˆ๋‹ค.

int[] array = {1, 2, 3};

๐Ÿ“Œ ๊ธฐ๋ณธํ˜• ๋ฐฐ์—ด

List<int[]> list = Arrays.asList(array);

๐Ÿ“Œ Arrays.asList(array)๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด, ๋ฐฐ์—ด ์ „์ฒด๊ฐ€ ํ•˜๋‚˜์˜ ์š”์†Œ๋กœ ์ทจ๊ธ‰๋˜์–ด [int[]] ํ˜•ํƒœ์˜ ๋ฆฌ์ŠคํŠธ๊ฐ€ ๋งŒ๋“ค์–ด์ง‘๋‹ˆ๋‹ค.

List list = Arrays.stream(array).boxed().collect(Collectors.toList()); โญ

๐Ÿ“Œ ๋ฐฐ์—ด์„ int - > Integer๋กœ ๋ณ€ํ™˜ ํ›„ ๋ฆฌ์ŠคํŠธ๋กœ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. .

๊ฐ์ฒด ๋ฐฐ์—ด <- ๋ฆฌ์ŠคํŠธ ๋ณ€ํ™˜

list.toArray(new Integer[list.size()])

list.toArray(new Integer[0])

๐Ÿ“Œ ๋ฆฌ์ŠคํŠธ๋ฅผ ๊ฐ์ฒด ๋ฐฐ์—ด๋กœ ์ƒ์„ฑํ•ด์„œ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ๋ณธํ˜• ๋ฐฐ์—ด <- ๋ฆฌ์ŠคํŠธ ๋ณ€ํ™˜

int[] intArray = list.stream().mapToInt(i -> i).toArray(); โญ

๐Ÿ“Œ ์ŠคํŠธ๋ฆผ์„ ์ด์šฉํ•ด ๊ธฐ๋ณธํ˜• ๋ฐฐ์—ด๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

๋ฆฌ์ŠคํŠธ

int idx = list.indexOf(10);

๐Ÿ“Œ x๊ฐ€ ๋ช‡ ๋ฒˆ์งธ ์ธ๋ฑ์Šค์— ์žˆ๋Š”์ง€ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. (์—†์œผ๋ฉด -1) ๋‚ด๋ถ€์ ์œผ๋กœ ์ˆœ์ฐจ ๊ฒ€์ƒ‰ โ†’ O(n)

boolean b = list.contains(10);

๐Ÿ“Œ ๋ฆฌ์ŠคํŠธ์— ์š”์†Œ๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. (true/false)

Collections.sort(list);

๐Ÿ“Œ ๋ฆฌ์ŠคํŠธ๋ฅผ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌํ•ฉ๋‹ˆ๋‹ค.

Collections.sort(list, Comparator.reverseOrder());

๐Ÿ“Œ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌํ•ฉ๋‹ˆ๋‹ค.

Collections.binarySearch(list, key)

๐Ÿ“Œ ์ •๋ ฌ๋œ ๋ฆฌ์ŠคํŠธ์— ๋Œ€ํ•ด, key๊ฐ€ ์žˆ์„ ๊ฒฝ์šฐ ์ธ๋ฑ์Šค ๋ฐ˜ํ™˜, ์—†์œผ๋ฉด ์Œ์ˆ˜ ๋ฐ˜ํ™˜ O(log n)

Collections.max(list), Collections.min(list)

๐Ÿ“Œ ์ตœ๋Œ“๊ฐ’, ์ตœ์†Ÿ๊ฐ’ O(n)

Collections.reverse(list)

๐Ÿ“Œ ๋ฆฌ์ŠคํŠธ์˜ ์ˆœ์„œ๋ฅผ ๋’ค์ง‘์Œ

Collections.swap(list, i, j)

๐Ÿ“Œ ๋‘ ์ธ๋ฑ์Šค์˜ ์š”์†Œ ๊ตํ™˜

Map

map.containsKey("apple")

๐Ÿ“Œ ์กด์žฌํ•˜๋ฉด true, ์—†์œผ๋ฉด false

map.getOrDefault("banana", 0);

๋งต์— key๊ฐ€ ์กด์žฌํ•˜๋ฉด ๊ทธ ๊ฐ’์„, ์กด์žฌํ•˜์ง€ ์•Š์œผ๋ฉด defaultValue ๋ฐ˜ํ™˜

map.putIfAbsent("apple", 1);

ํ•ด๋‹น key๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์„ ๋•Œ๋งŒ (๊ฐ’์ด null์ด ์•„๋‹ ๋•Œ๋งŒ) (key, value)๋ฅผ ์‚ฝ์ž…

map.replace("apple", 2, 3);

๊ธฐ์กด ๊ฐ’์ด 2์ผ ๋•Œ๋งŒ 3์œผ๋กœ ๊ต์ฒด (replace(K key, V oldValue, V newValue) โ†’ oldValue๊ฐ€ ์ผ์น˜ํ•˜๋Š” ๊ฒฝ์šฐ์—๋งŒ ๊ต์ฒด)

map.keySet()

๋ชจ๋“  ํ‚ค๋ฅผ ์ˆœํšŒํ•ด์•ผ ํ•  ๋•Œ keySet() ์‚ฌ์šฉ

map.values()

๋ชจ๋“  ๊ฐ’์— ๋Œ€ํ•ด์„œ๋งŒ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•  ๋•Œ values()

map.entrySet()

(key, value) ์Œ์„ ๋™์‹œ์— ๋‹ค๋ค„์•ผ ํ•  ๋•Œ entrySet()

    for (Map.Entry<String, Integer> e : map.entrySet()) {
        System.out.println(e.getKey() + " -> " + e.getValue());
    }

Map ์‹œ๊ฐ„ ๋ณต์žก๋„

โ€ข	HashMap: ํ‰๊ท ์ ์œผ๋กœ put, get, containsKey ๋“ฑ ์ฃผ์š” ์—ฐ์‚ฐ์ด O(1)
โ€ข	TreeMap: ๋‚ด๋ถ€์ ์œผ๋กœ Red-Black Tree ๊ตฌ์กฐ, O(log n)
โ€ข	LinkedHashMap: ํ‰๊ท ์ ์œผ๋กœ O(1), ์‚ฝ์ž… ์ˆœ์„œ๋ฅผ ์œ ์ง€ํ•˜์ง€๋งŒ ํ•ด์‹œ ๊ตฌ์กฐ ์‚ฌ์šฉ

Math

Math.abs(int a)

๐Ÿ“Œ ์ฃผ์–ด์ง„ ์ˆซ์ž์˜ ์ ˆ๋Œ“๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ex) Math.abs(-5); // โ†’ 5

Math.max(int a, int b)

๐Ÿ“Œ ๋‘ ์ˆ˜ ์ค‘ ํฐ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

Math.min(int a, int b)

๐Ÿ“Œ ๋‘ ์ˆ˜ ์ค‘ ์ž‘์€ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

Math.pow(double a, double b)

๐Ÿ“Œ a^b (a์˜ b์ œ๊ณฑ)์„ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค.

Math.sqrt(double a)

๐Ÿ“Œ ์ฃผ์–ด์ง„ ์ˆซ์ž์˜ ์ œ๊ณฑ๊ทผ์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

Math.floor(double a)

๐Ÿ“Œ ์ฃผ์–ด์ง„ ์ˆซ์ž๋ฅผ ๋‚ด๋ฆผ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

Math.ceil(double a)

๐Ÿ“Œ ์ฃผ์–ด์ง„ ์ˆซ์ž๋ฅผ ์˜ฌ๋ฆผ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

Math.round(double a)

๐Ÿ“Œ ์ฃผ์–ด์ง„ ์ˆซ์ž๋ฅผ ๋ฐ˜์˜ฌ๋ฆผ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

ํŒฉํ† ๋ฆฌ์–ผ ๊ณ„์‚ฐ

TopDown ๋ฐฉ์‹

public static long factorial(int n) {
    if (n == 0 || n == 1) return 1;
    return n * factorial(n - 1);
}
factorial(5);

BottomUp ๋ฐฉ์‹

public static long factorial(int n) {
    for(int i = 1; i <= n; i++) {
        answer = answer * i;
    }
    return answer;
}
factorial(5);

์ตœ๋Œ€๊ณต์•ฝ์ˆ˜(GCD)๋ฅผ ๊ตฌํ•˜๋Š” ๋ฉ”์„œ๋“œ

public static int gcd(int a, int b) {
    // 12 18
    // 18 12
    // 12 6
    // 6 0
    return b == 0 ? a : gcd(b, a % b);
}
gcd(12, 18); // 6

์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜(LCM)๋ฅผ ๊ตฌํ•˜๋Š” ๋ฉ”์„œ๋“œ

public static int gcd(int a, int b) {
    return b == 0 ? a : gcd(b, a % b);
}

public static int lcm(int a, int b) {
    return a * (b / gcd(a, b));  // ๋น„๊ต ์ˆ˜ ์ค‘ ์ž‘์€์ˆ˜ * ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜ = ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜ 
}
lcm(12, 18); // 36

์ˆœ์—ด

์ˆœ์—ด์˜ ๊ฐœ์ˆ˜ = P(n,r) = n! / (n-r)!

int์™€ long์˜ ๋ฒ”์œ„

int (32๋น„ํŠธ ์ •์ˆ˜)

โ€ข ์ตœ์†Œ๊ฐ’: -2,147,483,648 (์•ฝ -2.1ร—10^9)
โ€ข ์ตœ๋Œ€๊ฐ’: 2,147,483,647 (์•ฝ 2.1ร—10^9)

long (64๋น„ํŠธ ์ •์ˆ˜)

โ€ข ์ตœ์†Œ๊ฐ’: -9,223,372,036,854,775,808 (์•ฝ -9.22ร—10^18)
โ€ข ์ตœ๋Œ€๊ฐ’: 9,223,372,036,854,775,807 (์•ฝ 9.22ร—10^18)

๊ฑฐ๋“ญ์ œ๊ณฑ

โ€ข 2^30 = 1,073,741,824 โ†’ int ๋ฒ”์œ„ ๋‚ด โ€ข 2^31 = 2,147,483,648 โ†’ int ๋ฒ”์œ„ ์ดˆ๊ณผ
โ€ข 10^9 = 1,000,000,000 int ๋ฒ”์œ„ ๋‚ด โ€ข 10^10 = 10,000,000,000 โ†’ int ๋ฒ”์œ„ ์ดˆ๊ณผ

โ€ข 2^63 โ‰ˆ 9.22ร—10^18 (๊ฒฝ๊ณ„์„ ) โ€ข 10^18 = 1,000,000,000,000,000,000 โ†’ long ๋ฒ”์œ„ ๋‚ด
โ€ข 10^19 = 10,000,000,000,000,000,000 โ†’ long ๋ฒ”์œ„ ์ดˆ๊ณผ

Factorial

โ€ข 12! = 479,001,600 (์•ฝ 4.79ร—10^8) โ†’ int ๋ฒ”์œ„ ๋‚ด
โ€ข 13! = 6,227,020,800 (์•ฝ 6.23ร—10^9) โ†’ int ๋ฒ”์œ„ ์ดˆ๊ณผ
โ€ข 20! = 2,432,902,008,176,640,000 (์•ฝ 2.43ร—10^18) โ†’ long ๋ฒ”์œ„ ๋‚ด
โ€ข 21! = 51,090,942,171,709,440,000 (์•ฝ 5.10ร—10^19) โ†’ long ๋ฒ”์œ„ ์ดˆ๊ณผ

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages