- 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;
}
}