TIL Java

내일배움캠프 10일차 TIL _ 3주 2일차

mad038 2024. 4. 30. 22:26

 

  • 오늘 있었던 일
    • 스파르타 와 자바의 기초를 이용해 자바를 복습한다.
  • 알고리즘 및  백준 정리
더보기

알고리즘

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.IntStream;

class Solution {
    public int[] solution(int[] arr) {
    int[] answer = new int[arr.length - 1];
        
        if(arr.length == 1){
            answer = new int[]{-1};
        }else{
            
        

        int index = arr[0];
        for(int i : arr){
            if(index > i){
                index = i;
            }
        }
        List<Integer> list = Arrays.stream(arr).boxed().collect(Collectors.toList());
        int finalIndex = list.indexOf(index);
        long[] mini = Arrays.stream(IntStream.range(0, arr.length).toArray())
                .filter(id -> id != finalIndex)
                .mapToLong(id -> arr[id])
                .toArray();

        for(int i = 0; i < mini.length; i++){
            answer[i] = Integer.parseInt(mini[i] + "");
        }
            
            }
        return answer;
    }
}

 

  • 스트림 API를 이용해 배열을 고치게 만들었다.

백준

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.StringTokenizer;


public class Main {
    static List<Integer>[] list ;;
    private static boolean[] vir;
    static int z = 0;

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st;
        int pc = Integer.parseInt(br.readLine());
        int cont = Integer.parseInt(br.readLine());
        list = new ArrayList[pc + 1];
        vir = new boolean[pc + 1];

        for (int i = 0; i <= pc; i++) {
            list[i] = new ArrayList<Integer>();
            vir[i] = false;
        }

        for (int i = 0; i < cont; i++) {
            st = new StringTokenizer(br.readLine());
            int a = Integer.parseInt(st.nextToken());
            int b = Integer.parseInt(st.nextToken());
            list[b].add(a);
            list[a].add(b);
        }

        zombie(1);

        System.out.println(z);
    }

     static void zombie(int pc) {
        if (vir[pc]) {
            return;
        }
        vir[pc] = true;
        if(pc != 1){
            z++;
        }
        for ( int t : list[pc]){
            if (!vir[t]){
                zombie(t);
            }
        }
    }


}
 

[알고리즘] 너비 우선 탐색(BFS)이란 - Heee's Development Blog

Step by step goes a long way.

gmlwjd9405.github.io

 

[알고리즘] 깊이 우선 탐색(DFS)이란 - Heee's Development Blog

Step by step goes a long way.

gmlwjd9405.github.io

 

열거 타입 실 사용

public enum OperatorType {
    ADD(new AddOperator()),
    SUB(new SubtractOperator()),
    DIV(new DivideOperator()),
    MLT(new MultiplyOperator()),
    MOD(new ModOperator());

    private AllOperator operator;

    OperatorType(AllOperator operator) {
        this.operator = operator;
    }

    public AllOperator getOperator() {
        return operator;
    }

    public void setOperator(AllOperator operator) {
        this.operator = operator;
    }

}
  • 기존 항목을 상수로 만들때 쓰기 편하고 확장성을 늘리기 용이하도록 만들었다.

 

깃허브 정리

더보기

● git

  •  반드시 push 하기전 pull로 가져와 체크 후 push한다
  • dev 모드 계발자 모드로 먼저 제작하자

 


당일 회고

  • 하루종일 백준을 풀고 복습했다. 어느정도 이해가 되는거 같은데 아직 많이 부족한걸 느낀다.