java 알고리즘 보물창고

개미Coder
|2024. 5. 29. 11:46
반응형

정렬 알고리즘에 대하여

https://hsp1116.tistory.com/33

 

기본 정렬 알고리즘(Sorting Algoritm) 요약 정리 (선택, 삽입, 버블, 합병, 퀵) v1.1

정렬 알고리즘은 n개의 숫자가 입력으로 주어졌을 때, 이를 사용자가 지정한 기준에 맞게 정렬하여 출력하는 알고리즘이다.예를 들어 n개의 숫자가 저장되어있는 배열을, 오름차순의 조건으로

hsp1116.tistory.com

 

src.zip
0.00MB

 

 

재귀함수(return으로 for문 없이 반복)

public class MyMain_Recursive {
	
	// 재귀 함수
	static int hap(int n) {
		if(n==1) return 1;
		// return 값이 자기 자신을 호출하기 때문에, for문을 쓰지 않아도 더하기가 계속 반복된다.
		// 한 메소드에서 계속 반복되는게 아니라 static int hap(9).. static int hap(8)..
		// 과 같이 n 값이 계속 변하기 때문에 별개로 실행되는 것이다.
		return n + hap(n-1);
	}
	
	public static void main(String[] args) {
		
		// 함수(메소드) 재귀호출
		int n = 10;
		int sum = 0;
		
		sum = hap(n);
		System.out.printf("%d까지의 합 : %d\n", n, sum); // result = 55
	}
}


 

 

 

ArrayList를 사용하는 알고리즘

더보기
public class MyMain_LastCard {

	public static void main(String[] args) {
		
		// 1. N개의 카드숫자 입력받는다
		// 2. 1장의 카드가 남을때까지 아래 내용 반복
		// 1) 첫번째 카드 버린다
		// 2) 두번째 카드 마지막으로 보낸다
		// 3. 마지막 남은 카드를 출력
		
		int N; // 카드 숫자
		
		Scanner scanner = new Scanner(System.in);
		N = scanner.nextInt();
		List<Integer> card = new ArrayList<Integer>(); // 카드 생성
		for(int i = 1; i < N; i++) {
			card.add(i);
		}
		
		//        0 1 2 3 4
		// card = 1 2 3 4 5
		
		// 1장의 카드가 남을때까지 반복
		while(card.size()>1) {
			// 1번째 카드 버린다
			card.remove(0);
			// 2번째 카드(결과적으로 1번째)를 마지막으로 보낸다
			int no = card.remove(0);
			card.add(no);
			// 위의 식과 동일
			// card.add(card.remove(0));
		}
		System.out.println(card.get(0));
		
	}
}



 

 

 

 

 

ArrayList 배열을 Array로 변경(toArray와 Arrays를 활용)

더보기
import java.util.ArrayList;
import java.util.List;

class Solution {
	public String[] solution(String[] strArr) {

		List<String> answer2 = new ArrayList<String>();
        int result = 0;
        int indexResult = 0;
		for(int i = 0; i < strArr.length; i++) {
			indexResult = strArr[i].indexOf("ad");
			if(indexResult == -1) {
                answer2.add(strArr[i]);
                result++;
			}
		}
		String [] answer = new String [answer2.size()];
		
		for(int i = 0; i < answer.length; i++) {
			answer[i] = answer2.get(i);
		}
		return answer;
	}
}

https://rachel0115.tistory.com/entry/Java-%EB%B0%B0%EC%97%B4%EC%97%90%EC%84%9C-ArrayList%EB%A1%9C-ArrayList%EC%97%90%EC%84%9C-%EB%B0%B0%EC%97%B4%EB%A1%9C-%EB%B3%80%ED%99%98%ED%95%98%EA%B8%B0

 

[Java] 배열에서 ArrayList로, ArrayList에서 배열로 변환하기

자바에는 Collection 인터페이스를 구현하는 List, Set, Queue 계열의 자료 구조가 있다. 이 객체들을 배열로 만들거나, 배열의 데이터를 Collection 자료구조로 변환해야될 상황이 있다. 그 방법에 대해서

rachel0115.tistory.com

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

class Solution {
	public String[] solution(String[] strArr) {

		List<String> answer2 = new ArrayList<String>();
        int result = 0;
        int indexResult = 0;
		for(int i = 0; i < strArr.length; i++) {
			indexResult = strArr[i].indexOf("ad");
			if(indexResult == -1) {
                answer2.add(strArr[i]);
                result++;
			}
		}
		String [] answer = answer2.toArray(new String[answer2.size()]);
		Arrays.toString(answer);
		
		return answer;
	}
}


더 쉽게 Array로 변경하는 방법

- Arrays.toString() 사용할 필요도 없다.

String [] arr1 = new String[set1.size()];
set1.toArray(arr1);

 

 

replace or StringBuilder.setCharAt

 

더보기

- 문자열에 중복이 없을 때 사용가능한 코드

class Solution {
    public String solution(String my_string, String overwrite_string, int s) {
        String answer = "";
        String result = "";
        
        // my_string의 문자열중 s인덱스부터 overwrite_string의 길이까지 출력
        answer = my_string;
        
        int charSub = s;
        for(int i = 0; i < overwrite_string.length(); i++){
        	answer = answer.replace(answer.charAt(charSub), overwrite_string.charAt(i));
        	charSub++;
        }
        
        return answer;
    }
}

 

- 내가 처음에 원했던 replace의 기능이 StringBuilder에 있었다.

class Solution {
    public StringBuilder solution(String my_string, String overwrite_string, int s) {

		StringBuilder answer = new StringBuilder(my_string);
        
		for(int i = 0; i < overwrite_string.length(); i++) {			
			answer.setCharAt(s++, overwrite_string.charAt(i));
		}
        
        return answer;
    }
}

 

 

toCharArray를 사용해서 문자열 자릿수의 문자 뽑아내기 or  replace 연달아 사용하기

 

- my code

 

 

 

 

if문의 길이를 짧게 함축시켜보자

반응형

'java(2)↗' 카테고리의 다른 글

[회원가입] form Servlet 전달  (0) 2024.06.17
JSP를 활용해서 웹사이트 만들기  (0) 2024.06.05
java Stream  (0) 2024.05.29
java 2차원배열 및 알고리즘  (0) 2024.05.14
java 요약노트(2)  (0) 2024.05.13