JAVA

Int vs Integer? / String, StringBuilder, List, Collections 관련 메소드 / Algorithm

느리지만 꾸준하게 2022. 6. 28. 22:31

String 관련 메서드

package cote.velog;

import java.util.ArrayList;
import java.util.List;
import java.util.Locale;

public class grammer {
    public static void main(String[] args) {
        String str = "abcde";
        int a = str.length();
        boolean b = str.isEmpty();
        System.out.println(a);
        System.out.println(b);

        int c = str.charAt(2);
        int d = str.indexOf("c");
        int e = str.lastIndexOf("c");

        String aa = str.substring(2, 4);
        String bb = str.substring(3);

        System.out.println(aa);
        System.out.println(bb);

        String aaa = str.replace('b', 'k');
        boolean aaaa = str.equals("abcde");
        System.out.println(aaaa);

        boolean bbbb = str.contains("bc");
        System.out.println(bbbb);

        String cc = str.trim();
        System.out.println(cc);

        String dd = str.toLowerCase();
        String ee = str.toUpperCase();

        System.out.println(ee);

        Integer f = str.compareTo("abcdd");
        System.out.println(f);

        Integer g = Integer.parseInt("300");
        System.out.println(g);

        String h = Integer.toString(300);
        System.out.println(h);

    }
}

 

 

StringBuilder 관련 메소드

변경 가능한 타입 => 문자열을 변경해야 하는 문제에서 StringBuilder 사용

// StringBuilder 관련 메소드
StringBuilder sb = new StringBuilder();

sb.append("abc");
System.out.println(sb);
sb.insert(2, "kk");
System.out.println(sb);

sb.deleteCharAt(2);
System.out.println(sb);

sb.setCharAt(0, 'h');
System.out.println(sb);
sb.reverse();
System.out.println(sb);

sb.setLength(2);
System.out.println(sb);
sb.setLength(4);

 

 

List 관련 메소드

// List 관련 메소드
    List<String> list = new ArrayList<>();
    List<String> list2 = new ArrayList<>();
    list.add(1, "대전");
    list.addAll(list2);

    list.get(0);
    list.set(0, "대구");

    list.indexOf("대구");
    list.lastIndexOf("대구");

    list.remove(0);
    list.remove("대구");
    list.removeAll(list2);
    list.retainAll(list2);

    list.clear();
    list.isEmpty();
    list.size();

    list.contains("서울");
    list.containsAll(list2);

    list.removeIf(k -> k % 2 != 0); // 람다식 -> 홀수를 list에서 모두 제거

}

 

 

 

Collections 관련 메소드

int[] arr = {1123, 1412, 23, 44, 512132};
List<Integer> list = new ArrayList(Arrays.asList(arr));

Collections.max(list); // list의 원소 중 가장 큰 값 반환
Collections.min(list); // list의 원소 중 가장 작은 값 반환

Collections.sort(list); // 오름차순 정렬
Collections.sort(list, Collections.reverseOrder()); // list 내림차순 정렬

Collections.reverse(list);

Collections.frequency(list, 23);

Collections.binarySearch(list, 24);

System.out.println(list);

 

 

int vs integer

int는 변수의 타입

변수 = 값을 저장할 수 있는 메모리 상의 공간

 

변수의 타입 = 자료형 = data type

=> 자료형은 data type에 따라 값이 저장될 공간의 크기와 저장 형식을 정의한 것

 

기본형과 참조형으로 나뉨. int는 기본형

 

integer는 기본형을 객체로 다루기 위해 사용하는 클래스 => 레퍼 플래스 wrapper class

(Integer는 int의 레퍼클래스)

 

int : 자료형(primitive type)

  • 산술 연산 가능함
  • null로 초기화 불가

 

 

Integer : 래퍼 클래스 (Wrapper class)

  • Unboxing하지 않을 시 산술 연산 불가능함
  • null값 처리 가능

 

boxing : primitive type -> wrapper class 변환 ( int to Integer )

unboxing : wrapper class -> primitive type 변환 ( Integer to int )

 

 

 

Algorithm

Brute - force Algorithm

문자열 매칭 알고리즘을 단순하게 구현

 

int BruteForceMatch(string text, string pattern)
{
	for (int i = 0; i <= text.size() - pattern.size(); i++)
	{
		int j = 0;
		while (j < pattern.size() && text[i + j] == pattern[j])
			j++;

		// match at i
		if (j == pattern.size())
			return i;
	}

	return -1;
}

 

 

 

Failure function 코드 예시

void FailureFunction(string pattern)
{
	F[0] = 0;
	int i = 1;
	int j = 0;

	while (i < pattern.size())
	{
		if (pattern[i] == pattern[j])
		{
			F[i] = j + 1;
			i++;
			j++;
		}
		else if (j > 0)
			j = F[j - 1];
		else
		{
			F[j] = 0;
			i++;
		}
	}
}

 

 

 

KMP 알고리즘 코드 예시

int KMPmatch(string text, string pattern)
{
	int n = text.size();
	int m = pattern.size();
	FailureFunction(pattern);

	int i = 0;
	int j = 0;
	while (i < n)
	{
		if (text[i] == pattern[j])
			if (j == m - 1)
				return i - j;
			else
			{
				i++;
				j++;
			}
		else
		{
			if (j > 0)
				j = f[j - 1];
			else
				i++;
		}
	}

	return -1;
}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

참고 : https://velog.io/@hygge/Java-%EC%BD%94%EB%94%A9%ED%85%8C%EC%8A%A4%ED%8A%B8-%EB%AC%B8%EB%B2%95-%EC%86%8D%EC%84%B1-%EC%A0%95%EB%A6%AC

 

[Java] 코딩테스트 문법 속성 정리 (1)

파이썬으로 코테를 공부한 나..◠‿◠ 어느 날 자바로 코딩테스트를 치라는 청천벽력같은 공지를 보게 되는데.. (더보기)

velog.io

 

 

https://velog.io/@hwan2da/%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-KMP-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98

 

[알고리즘] KMP 알고리즘

KMP 알고리즘

velog.io

 

 

https://velog.io/@hadoyaji/int%EC%99%80-Integer%EB%8A%94-%EB%AC%B4%EC%97%87%EC%9D%B4-%EB%8B%A4%EB%A5%B8%EA%B0%80

 

int와 Integer는 무엇이 다른가

int와 Integer는 무엇이 다른가 // 기본부터 다시 시작하기

velog.io