본문 바로가기
알고리즘/문자열, 정렬

[알고리즘] 배열 총 정리 with Java

by VIPeveloper 2022. 3. 8.
반응형

string에 이어 배열 관련 문제까지 모두 끝마쳤다. 25%라고 하니 벌써 1/4를 푼 것이다.

뿌듯하기도 하면서 아직 기초를 다지는 시간인데 아직도 모르는 것이 있다고 생각하니 더 자극받고 더 잘하고 싶은 마음이 생겼다. 

이번 알고리즘 풀이의 목적은 온전한 정리를 진행하며 내가 푼 문제들을 기록해나가며 완강하기인데, 지금까지는 효과가 매우 좋은 것 같다. 블로그 알고리즘 포스팅 글을 보며 내가 어떤 사소한(하지만 중요한) 것들을 배워나갔고, 적용은 잘 시키고 있는지 알 수 있었던 좋은 기회가 된 것 같다. 이번 주는 빠르게 3주 차 강의를 완강하는 것을 목표로 나아가고자 한다. 느리지만 정확하고, 제대로 나아가는 내가 될 것이다.

 

배운 것 정리

1. if, else if, else 에 대한 생각

. 사실 else if에 대해 그렇게 많은 생각을 두지 않았다. if가 아니면 else이지 않는가? 이번 강의를 들으면서 else if라는 또 다른 가능성에 대해 고려할 수 있다는 생각이 들었다.

2. 피보나치 수열

private static void solution(int i) {
    int [] arr = new int[i+1];
    for (int j = 1; j <= i; j++) {
        if(j==1 || j==2){
            arr[j] = j;
        } else{
            arr[j] = arr[j-1]+arr[j-2];
        }
    }
    // 1 2 3 5 8 13 21 34 55 
    for (int j = 1; j < i; j++) {
        System.out.print(arr[j]+" ");
    }
}

3. int [] 배열의 초기화는 0으로 되어있다.

4. 에라토스테네스의 체

. 주로 특정 숫자까지의 소수의 개수를 구하고자 할 때 사용하는 듯하다.

private static void solution(int i) {
    int [] arr = new int[i+1];
    int answer = 0;
    for (int j = 2; j <= i; j++) {
        if(arr[j] == 0){
            answer++;
            for (int k = j; k <= i; k+=j) {
                arr[k] = 1;
            }
        }
    }
    System.out.println("answer = " + answer);
}

5. 숫자 뒤집기 알고리즘 2가지

. stringbuilder 사용

private static void solution(int i) {
    StringBuilder stringBuilder = new StringBuilder(String.valueOf(i));
    String answer = stringBuilder.reverse().toString();
    System.out.println("answer = " + Integer.parseInt(answer));
}

. %, / 사용

private static void solution(int i) {
    int answer = 0;
    while (i>0){
        answer = (answer*10) + (i%10);
        i = i/10;
    }
    System.out.println(answer);
}

6. 이중, 3중, 4중 for문에 대한 생각

. 기준점이 몇개냐에 따라 달라지는 것 같다. 3중포문 이상이어도 무서워하지 말자.

반응형