ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • JAVA 자료구조 및 알고리즘 [01] : 배열
    ALGORITHM/JAVA 2022. 1. 30. 16:20
    자료구조 :
    프로그램 개발 시 특정한 문제나 목표를 해결하기 위해 여러가지 요소를 모아 조직화된 데이터를 이루는 것. 자료구조를 통해 효율적으로 데이터를 저장하고 데이터 간 관계를 정의할 수 있으며 데이터의 접근, 수정, 삭제 등의 관리를 할 수 있다. 또한 코드의 양을 줄일 수 있다.

    자료구조 - 선형구조 :
    데이터를 일렬로 나열. 인접한 요소들 간에 하나의 요소만 존재.

    자료구조 - 비선형구조 :
    데이터를 계층 구조화 한 형태.
    인접한 요소들 간에 다수의 요소가 존재.

     

     

    알고리즘 :
    문제를 해결하기 위한 일련의 과정 및 논리적인 절차.

    ex.
    최솟값 찾기 :
    정수형 변수 다섯 개를 서로 다른 숫자로 초기화 하고(int num1....num5) int mini는 int mini=int num1로 초기화한다. 그리고 조건문을 통해 min과 각각의 변수 크기를 비교하여 min보다 작을 경우 min에다가 그 변수값을 재할당한다.

    int num1 = 2; int num2 = 7; int num3 = 4; int num 4=3; int num5=5; int mini = num1;
    if(num2 < mini) mini = data2;
    if(num3 < mini) mini = data3;
    if(num4 < mini) mini = data4;
    if(num5 < mini) mini = data5;
    System.out.println("최솟값 : " + mini); ...... 출력 : 2

    ex. 위의 내용을 함수로 만들어서 써도 된다
    (ex. 비교할 숫자들을 파라미터로 입력하는 함수)

     

     

    배열 :
    데이터 타입이 같은 여러 개의 변수를 한 곳에 모아둔 것. 배열은 스택, 큐, 트리와 같은 알고리즘과 깊은 연관을 가진다.

    배열 자료의 기본값(default value) :
    byte, int, short(0),
    float(0.0), long(0L),
    double(0.0),
    char('\u0000\, but 출력 안 됨),
    boolean(false, bool은 0이 아니면 전부 1로 취급)

    배열의 초기화 :
    1) 배열 선언과 동시에 0으로 초기화 :
    int [] arr1 = new int [1];   ... [0]
    2) 배열 생성 시 크기는 지정 안 하고 저장할 요소만 명시 :
    int [] arr2 = new int[] {0, 1, 2,}; 
    3) 저장할 요소만 명시 :
    int [] arr 3 = {0, 1, 2, 3, 4};


    foreach 반복문 (향상된 for문) : 
    ex.
    int [] stu = new int [10];
    for(int i = 0; i < stu.length; i++) {
    stu[i] = (i + 1001);
    }
    for(int stuNum : stu) {
    System.out.println("학생번호  (최초 오름차순) : " + stuNum);
    }  


    (* 단 인덱스로 접근 필요 할 때는 foreach 사용 못 함)



    배열 통한 오름차순 / 내림차순 :
    int [] stu = new int [10];
    for(int i = 0; i < stu.length; i++) {
    stu[i] = (i + 1001);
    }

    int [] stu2 = new int[stu.length];
    for(int i = 0; i < stu.length; i++) {
    stu2[ ( stu.length - 1) - i ] = stu[ i ];
    }

    for(int stuNum : stu2) {
    System.out.println("학생번호 (내림차순 재할당) : " + stuNum);
    }





    50개의 랜덤한 수를 가진 배열에서 최소/최대값 구하기 :
    (java.util.Random 클래스를 이용해 난수를 구한다)





    배열 이용해 소수 구하기
    :





    배열 복사 : 

    [1] 얕은 복사 -
    그냥 바로 배열에 원본을 대입한다. 서로 연결된 아바타를 만드는 것과 같다.



    [2] 깊은 복사 -

    원본과 같은 크기를 가진 배열을 일단 먼저 생성한 후 반복문을 통해 값을 넣어준다.
    나와 똑같이 생겼지만 다른 클론을 만드는 것과 같다.





    <깊은 복사  참고 메서드> 
    : clone(),
    System.arraycopy(Object src, int srcPos, Object dest, int destPost, int length),
    Arrays.copyOf(..),
    Arrays.copyRange(..)



    [2-1] 메서드 이용 배열 복사 -




     

     

    다차원 배열 :

    [0] -
    int [][] arr = new int [2][1];



    [1] 2차원 배열 초기화 -




    [2] 다차원 배열로 매출 총합과 상품 수익 구하기 -
          // 첫번째 i for문 : 일주일 치 수익 계산
          // 두번째 k for문 : 하루 치의 수익 계산.




    [3] 다차원 배열을 이용한 구구단 -


     

Designed by Tistory.