01. 배열 java 로 구현하기

박해인·2024년 1월 14일
0

배열의 특징

  1. 동일한 데이터 타입을 순서에 따라 관리하는 자료 구조이다.
  2. 정해진 크기가 있다.
  3. 요소의 추가와 제거시 다른 요소들의 이동이 필요하다
  4. 배열의 i번째 요소를 찾는 인덱스 연산이 빠르다.
  • jdk 클래스 : ArrayList, Vector

Array 구현하기

public class MyArray {

	int[] intArr;   	//int array
	int count;  		//개수
		
	public int ARRAY_SIZE;
	public static final int ERROR_NUM = -999999999;
	
	public MyArray()
	{
		count = 0;
		ARRAY_SIZE = 10;
		intArr = new int[ARRAY_SIZE];
	}
	
	public MyArray(int size)
	{
		count = 0;
		ARRAY_SIZE = size;
		intArr = new int[size];
	}
	
	public void addElement(int num)
	{
		if(count >= ARRAY_SIZE){
			System.out.println("not enough memory");
			return;
		}
		intArr[count++] = num;
				
	}

	public void insertElement(int position, int num)
	{
		int i;
		
		if(count >= ARRAY_SIZE){  //꽉 찬 경우
			System.out.println("not enough memory");
			return;
		}
		
		if(position < 0 || position > count ){  //index error
			System.out.println("insert Error");
			return;
		}
		
		for( i = count-1; i >= position ; i--){
			intArr[i+1]  = intArr[i];        // 하나씩 이동
		}
		
		intArr[position] = num;
		count++;
	}
	
	public int removeElement(int position)
	{
		int ret = ERROR_NUM;
		
		if( isEmpty() ){
			System.out.println("There is no element");
			return ret;
		}
		
		if(position < 0 || position >= count ){  //index error
			System.out.println("remove Error");
			return ret;
		}
		
		ret = intArr[position];
		
		for(int i = position; i<count -1; i++ )
		{
			intArr[i] = intArr[i+1];
		}
		count--;
		return ret;
	}
	
	public int getSize()
	{
		return count;
	}
	
	public boolean isEmpty()
	{
		if(count == 0){
			return true;
		}
		else return false;
	}
	
	public int getElement(int position)
	{
		if(position < 0 || position > count-1){
			System.out.println("검색 위치 오류. 현재 리스트의 개수는 " + count +"개 입니다.");
			return ERROR_NUM;
		}
		return intArr[position];
	}
	
	public void printAll()
	{
		if(count == 0){
			System.out.println("출력할 내용이 없습니다.");
			return;
		}
			
		for(int i=0; i<count; i++){
			System.out.println(intArr[i]);
		}
		
	}
	
	public void removeAll()
	{
		for(int i=0; i<count; i++){
			intArr[i] = 0;
		}
		count = 0;
	}
}

배열문제

LV2.삼각달팽이 (이중배열 사용하기)

정수 n이 매개변수로 주어집니다. 다음 그림과 같이 밑변의 길이와 높이가 n인 삼각형에서 맨 위 꼭짓점부터 반시계 방향으로 달팽이 채우기를 진행한 후, 첫 행부터 마지막 행까지 모두 순서대로 합친 새로운 배열을 return 하도록 solution 함수를 완성해주세요.

public class array01 {
	
	public int [] solution(int n){
		
			int[][] triangle = new int[n][n];
			int v = 1;
			int x = 0;
			int y = 0;
			
			while(true) {
				
				// 아래로 이동
				while(true) {
					triangle[y][x] = v++;
					if(y+1 == n || triangle[y+1][x]!=0)
						break;
					y += 1;	
				}
				
				if(x+1==n || triangle[y][x+1]!=0)
					break;
				
				x += 1;
			}
			
			//오른쪽으로 이동
			while(true) {
				
				if(triangle[y-1][x-1] != 0 ) break;
				
				x-=1;
				y-=1;
				
			}
			
			
			//왼쪽 위로 이동
			while(true) {
				triangle[x][y] = v ++;
				if(triangle[y-1][x-1] !=0 ) break;
				
				if(y+1 == n || triangle[y+1][x] !=0 )break;
				y+=1;
			
			}
			
			int[] result = new int[v -1];
			int index = 0;
			
			for(int i=0; i<n; i++) {
				for(int j=0; j<=i; j++) {
					result[index++] = triangle[i][j];
				}
			}
			
			
			return result;
	}
			
		}
profile
갓생살고싶어라

0개의 댓글