[한화시스템 BEYOND SW캠프 7기] #21. Java - Array / List

아로롱·2024년 6월 10일

BEYOND SW CAMP 7

목록 보기
22/30

이전 알고리즘 스터디 때 정리한 내용이 있어
이론은 간단히 짚고, 프로그래머스 문제 풀이로 복습하였다.
👉🏻 Java | 배열과 리스트 보러가기


📂 배열 (Array)

동일한 자료형의 데이터를 연속적으로 저장하고 관리하는 데이터 구조.
배열은 자료형 타입 바로 옆에 [] 기호를 사용하여 표현.
배열의 길이는 고정 !

int[] odds = {1, 3, 5, 7, 9};
String[] weeks = {"월", "화", "수", "목"};

✔️ 선택정렬


선택 정렬은 정렬되지 않은 부분에서 가장 작은 (혹은 가장 큰) 원소를 선택하여
정렬된 부분의 끝에 추가하는 방식으로 배열을 정렬하는 알고리즘.

🫧 버블정렬


버블 정렬은 인접한 두 원소를 비교하여 정렬하고, 이를 반복하여 리스트를 정렬하는 알고리즘.
반복이 진행될수록 끝 index에 큰 값이 위치하게 된다 !

📦 다차원 배열


2차원, 3차원 등 가능하지만 2차원 배열이 가장 많이 쓰인다 !

int[][] arr = new int[2][3];
int[][] arr2 = new int[2][]; //가변배열
int[][] arr3 = {{1,2,3}, {1,2,3}};
int[][] arr4 = {{10, 20},{10,20,30},{10,20,30,40}};
  • 출력방법
    • Arrays.deepToString(arr)
    • 배열안에 배열에 들어있는 형식으로 객체안의 객체가 들어있으므로, Arrays.toString()을 사용하게 되면 각 배열의 메모리 주소가 출력됨 !

🗃️ 리스트(List)

java에서 List는 여러 개의 요소를 저장하는 자료구조로서 배열과 다르게 요소의 추가/삭제가 가능.

  • List는 인터페이스로서, ArrayList, LinkedList 등의 List 인터페이스를 구현한 자료형이 존재.
    • 여기서 ArrayList / LinkedList 등을 포괄하는 List라는 큰 틀이 있고, 세부 카테고리로서 ArrayList, LinkedList 등이 있다는 정도로 이해.
ArrayList<String> pitches = new ArrayList<String>();
ArrayList<String> pitches = new ArrayList<>();
// 일반적으로 뒷부분의 자료형은 생략
List<String> pitches = new ArrayList<>();
// 가장 일반적인 선언방식으로 앞부분의 ArrayList대신에 인터페이스인 List자료구조를 선언
// 뒷부분에서 ArrayList를 선언.
// ArrayList는 가장 많이 사용되는 List의 구현체

리스트의 크기는 정해져 있지 않고 동적으로 변하므로 add, remove등의 추가/삭제가 가능

  • 배열처럼 index를 기반으로 데이터 접근. ex)리스트객체명.get(index)

✉️ 프로그래머스 문제 풀이

배열과 리스트 모두 활용.

정수 n과 정수 배열 numlist가 매개변수로 주어질 때,
numlist에서 n의 배수가 아닌 수들을 제거한 배열을 return하도록 solution 함수를 완성해주세요.

제한사항

  • 1 ≤ n ≤ 10,000
  • 1 ≤ numlist의 크기 ≤ 100
  • 1 ≤ numlist의 원소 ≤ 100,000

입출력 예

  • n 3
  • numlist [4, 5, 6, 7, 8, 9, 10, 11, 12]
  • result [6, 9, 12]
import java.util.*;

class Solution {
    public int[] solution(int n, int[] numlist) {
    	// n의 배수가 아닌 수를 보관할 tmp 선언
         List<Integer> tmp = new ArrayList<>();
        // numlist의 원소 중 n의 배수가 맞다면 tmp에 추가
        for(int i = 0; i < numlist.length; i++){
            if(numlist[i] % n == 0){
                tmp.add(numlist[i]);
            }
        }
        // 배열을 return 하기 위해 answer 배열에 tmp 값 삽입
        int[] answer = new int[tmp.size()];
        for(int i = 0; i < answer.length; i++){
            answer[i] = tmp.get(i);
        }
        return answer;
    }
}

📌 today

알고리즘 스터디에서 만났던 친군데...
왜 이렇게 낯서니... 배열과 리스트야... 🫠
이차원 배열은 문제를 풀 때마다 처음부터 짚어봐야 이해가 가는 것 같다.
문제 풀 때는 펜과 노트가 없으면 아직 머릿속 정보들이 정리가 어려워
다른 사람들 보다 시간이 걸린다. 질보단 양으로 승부하기.
문제 많이 풀어보고 적응하기 ! 🏃🏻‍♀️

실습 시간에 프로그래머스에서 ... 분명 강사님이랑 똑같이 썼는데
오류가 나던 문제의 답변 코드들은.. 충격적이게도
return answer 을 안 써서 발생한 오류들이었다.. ^^
이번에 큰 충격요법 받았으니까 다음부터는 이런 허술한 실수를 하지 않길 바라며💥

profile
Dilige, et fac quod vis

0개의 댓글