ssung_항해일지/항해99_프로그래밍 기초(알고리즘)

알고리즘 - 3일차

ssungcohol 2023. 1. 31. 01:38

Split 메서드

 - 구분자를 기준으로 문자열을 잘라 배열로 입력할 때 사용하는 메서드

 

사용방법

 - split (String regex);  :  구분자를 바탕으로 배열 형식으로 문자열을 잘라준다.

 - split (String regex, int limit);  :  위의 방식과 동일하게 배열 형식으로 문자열을 잘라주지만, limit 수만큼 잘라준다.

 

split (String Rex); - [ " " ] 공백 " " 으로 분리

 

public static void main(String[] args) {
	String str = "Hello World";
	String[] ArrayStr = str.split(" ");
    
    for (String s : ArraysStr)
    	System.out.println(s);
}
출력 값
Hello
World

split (String Rex); - [ "," ] : " , " 으로 분리

public static void main(String[] args) {
	String str = "ABCDEFG,HIJKLMN,OPQUSTU,VWXYZ";
	String[] ArrayStr = str.split(",");
    
    for (String s : ArraysStr)
    	System.out.println(s);
}
출력값
ABCDEFG
HIJKLMN
OPQUSTU
VWXYZ

여러 개의 구분자로 분리 - , @ - 공백을 구분자로 분리

 

public static void main(String[] args) {
	String str = "안녕하세요, 이메일주소는 sungjae@naver.com";
	String[] ArrayStr = str.split(",|@|-| ");
    
    for (String s : ArraysStr)
    	System.out.println(s);
}
출력 값
안녕하세요
이메일주소는
sungjae
naver.com

하나의 값만 가져오기

 

public static void main(String[] args) {
	String str = "111-2222-3333";
	String[] ArrayStr = str.split("-")[1];
    
    for (String s : ArraysStr)
    	System.out.println(s);
}
출력 값 ( [1] -  배열의 1번째 위치의 값)
2222

split (String regex, int limit);  -  limit만큼만 문자열을 나누어 준다

public static void main(String[] args) {
	String str = "123 4 5 67 890";
	String[] LimitThree = str.split(" ", 3);
    String[] LimitTExceed = str.split(" ", 10);
    String[] LimitZero = str.split(" ", 0);
    String[] LimitMinus = str.split(" ", -1);
    
    for (int i = 0; i < LimitThree.length; i++)
    	System.out.println(i + "배열 : " + LimitThree[i]);
        
    for (int i = 0; i < LimitExceed.length; i++)
    	System.out.println(i + "배열 : " + LimitExceed[i]);
        
    for (int i = 0; i < LimitZero.length; i++)
    	System.out.println(i + "배열 : " + LimitZero[i]);
        
    for (int i = 0; i < LimitMinus.length; i++)
    	System.out.println(i + "배열 : " + LimitMinus[i]);
}
LimitThree LimitExceed LimitZero LimitMinus
0배열 : 123
1배열 : 4
2배열 : 5 67 890
0배열 : 123
1배열 : 4
2배열 : 5
3배열 : 67
4배열 : 890
5배열 : 
6배열 : 
0배열 : 123
1배열 : 4
2배열 : 5
3배열 : 67
4배열 : 890
0배열 : 123
1배열 : 4
2배열 : 5
3배열 : 67
4배열 : 890
5배열 : 
6배열 : 
3개의 배열로 나눔 범위 초과시 일반 표기 배열이 ""으로 나올시 배열에서 제외 일반 split() 과 동일 출력

복잡도

 - 복잡도(Complexity)는 알고리즘의 성능을 나타내는 척도, 시간과 공간으로 나눌 수 있다.

 - 시간복잡도 : 알고리즘을 위해 필요한 연산 횟수. 특정한 크기의 입력에 대하여 알고리즘이 얼마나 오래 걸리는지 의미

 - 공간복잡도 : 알고리즘을 위해 필요한 메모리의 양. 특정한 크기의 입력에 대하여 알고리즘이 얼마나 많은 메모리를 차지하는지를 의미

 

시간 복잡도

 - 시간복잡도를 표현할 때는 빅오(Big-O) 표기법을 사용한다. 빅오 표기법은 가장 빠르게 증가하는 항만을 고여하는 표기법이다. 즉, 함수의 상한만 나타낸다.

 

 

공간 복잡도

 - 공간복잡도를 표기할 때도 빅오 표기법을 이요한다. 일반적으로 메모리 사용량 기준은 MB 단위로 제시된다.

 (코딩 테스트에서는 보통 메모리 사용량을 128 ~ 512MB정도로 제한, 즉 데이터 개수가 1000만 단위가 넘지 않게 설계)

728x90