Doit 알고리즘

업데이트:

자료구조란?

데이터 단위와 데이터 자체 사이의 물리적 또는 논리적인 관계
자료를 효율적으로 이용할 수 있도록 컴퓨터에 저장하는 방법이다.


배열

같은 자료형의 변수로 이루어진 구성 요소가 모인 것으로 배열 구성 요소의 자료형은 int형이나 double형 등 어떤 형이든 상관 없다.

  • 배열 선언 방법
int[] a
int a[]
  • int 자료형의 구성 요소 개수가 5개인 배열
a = new int[5];

위 선언의 의미는 int형의 배열 본체를 생성하고 그것을 변수 a가 참조하도록 설정한다는 것이다.
new 연산자가 생성하는 것은 배열 본체에 대한 참조이다.
참조하는 곳이 a에 대입되고 그 결과 배열 변수 a가 배열 본체를 참조한다.

  • 구성요소 배열 안의 모든 구성요수의 형은 같고 직선 모양으로 줄지어 있다.
    배열의 개별 요소에 접근하기 위해 연산자 []안에 넣는 정수형 인덱스 이다.
    배열의 구성 요소는 자동으로 0으로 초기화되는 규칙이 있습니다.
배열 변수 이름[인덱스]
  • 구성 요소 초기값 구성 요소 초기값은 배열을 생성할 때 각 구성 요소에 넣어지는 값으로, 구성 요소를 초기화하는 값이다.

  • 구성 요소수(길이) 배열 본체와 함께 구성 요소의 개수인 구성 요솟수를 나타내는 length라는 변수가 만들어 진다.
    배열의 길이라고도 한다.

배열 변수 이름.length;
  • 실습 1
package doit.algorism.practice;

public class chap02 { 

	public static void main(String args[]) {
		int[] a = new int[5];
		
		a[1] = 37;
		a[3] = 51;
		a[4] = a[1]*2;
		
		for(int i=0;i<a.length;i++) {
			System.out.println("a["+i+"] 의 값  : " + a[i]);
		}
	}
}



  • 실습 2

    배열의 요소값을 초기화하며 배열 선언

  • 배열 본체의 생성과 동시에 각 요소의 초기화가 가능하다.
package doit.algorism.practice;

public class chap02 { 

	public static void main(String args[]) {
		int[] a = {1,2,3,4,5};
		
		for(int i=0; i<a.length;i++) {
			System.out.println("a["+i+"]의 값 : " + a[i]);
		}
	}
}



  • 배열의 복제 배열의 복제는 clone메소드를 호출하여 쉽게 만들 수 있다.
    배열을 복제하고 복제한 배열에 대한 참조를 생성한다.
    배열 이름.clone
    
  • 실습
package doit.algorism.practice;

public class chap02 { 
	
	public static void main(String args[]) {
		
		int[] a = {1,2,3,4,5};
		int[] b = a.clone();
		
		b[3] = 0;
		
		System.out.print("a=");
		for(int i=0;i<a.length;i++) {
			System.out.print(" " + a[i]);
		}
		
		System.out.print("\nb=");
		for(int i=0;i<b.length;i++) {
			System.out.print(" " +b[i]);
		}
	}
}



  • 배열 요소의 최대값 구하기
a[0] = max;

for(int i=1; i<n; i++){
  if(a[i]>max){
    max = a[i];
  }
}

이 처럼 배열 요소를 하나씩 차례로 살펴보는 과정을 알고리즘 용어로 주사라고 한다.
주사 : 데이터를 하나씩 지나면서 살피고 조사하는 일.



  • 배열 요소의 최대값 구하기(메소드 이용)
package doit.algorism.practice;

import java.util.Scanner;

public class chap02 { 
	
	static int maxOf(int[] a) {
		int max = a[0];
		for(int i=1; i<a.length; i++) {
			if(a[i] > max);
			max = a[i];
		}
		return max;
	}
	
	public static void main(String args[]) {
		
		Scanner sc = new Scanner(System.in);
		
		System.out.print("사람 수 : ");
		int n = sc.nextInt();
		
		int[] height = new int[n];
		
		for(int i=0; i<height.length; i++ ) {
			System.out.print((i+1)+"번 째 사람의 키 : ");
			height[i] = sc.nextInt();
		}
		
		System.out.println("최대값은 " + maxOf(height) + "입니다.");
	}
}



댓글남기기