배열
- 배열: 같은 자료형의 묶음. 크기가 고정
- ArrayList: 같은 자료형의 묶음 크기가 동적
코드
배열
/* 1차원 배열 */
type[] arrName = new type[count]; // 배열 선언 및 0으로 초기화
type[] arrName = {value1, ...}; // 배열 선언 및 초기화
arrName[index]; // 배열값 조회
arrName.length; // 배열의 길이
Arrays.sort(arrName); // 배열의 데이터를 정렬
Arrays.toString(arrName); // 배열의 모든 데이터를 String으로 변환
/* 2차원 배열 */
type[][] arrName = new type[rows][columns]; // 배열 선언 및 0으로 초기화
type[][] arrName = {{value1, ...}, {value2, ...}, ...}; // 배열 선언 및 초기화
arrName[arr_index][column_index]; // 배열값 조회
ArrayList
ArrayList<ReferenceType> list = new ArrayList<>();
ArrayList<ReferenceType> list = new ArrayList<>(list);
list.add(value); // 리스트 맨뒤 값 추가
list.get(index); // 해당 인덱스의 값에 접근
list.remove(index); // 해당 인덱스의 값 삭제. O(N)
list.size(); // 데이터의 개수
list.isEmpty(); // 비어있는지 여부 확인
Collections.sort(list); // 정렬
예시
배열 정렬
public class Main {
private static int[] solution(int[] arr) {
int[] clone = arr.clone(); // 배열을 복사하여 새로운 배열 생성
Arrays.sort(clone); // 원본 배열 자체를 정렬
return clone;
}
public static void main(String[] args) {
int[] arr = {1, 7, 2, 8, 3};
int[] sortedArr = solution(arr);
System.out.println(Arrays.toString(arr));
System.out.println(Arrays.toString(sortedArr));
}
}
배열 중복값 제거후 내림차순 정렬
- Arrays 클래스의 stream()은 stream으로 변환. stream의 Primitive Type인 IntStream의 데이터를 boxed()로 Integer로 변환하고 distinct()를 통해 중복 제거 후 Integer형 배열로 중복 제거된 데이터를 반환
- distinct()는 O(N)을 보장
import java.util.Arrays;
import java.util.Collections;
public class Main {
private static int[] solution(int[] arr) {
// 중복값 제거
Interger[] result = Arrays.stream(arr).boxed().distinct().toArray(Integer[]::new);
Arrays.sort(result, Collections.reverseOrder()); // 내림차순 정렬
// int형 배열로 변환
return Arrays.stream(result).mapToInt(Integer::intValue).toArray();
}
}
추천 문제
(프로그래머스)
- Lv1: 두 개 뽑아서 더하기(68644) / 두 개 뽑아서 더하기(68644) 해설
- Lv1 : 모의고사(42840) / 모의고사(42840) 해설
- Lv2 : 행렬의 곱셈(12949) / 행렬의 곱셈(12949) 해설
- Lv1 : 실패율(42889) / 실패율(42889) 해설
- Lv2 : 방문 길이(49994) / 방문 길이(49994) 해설
- Lv 0 : 배열의 평균값(120817) / 배열의 평균값(120817) 해설
- Lv 0: 배열 뒤집기(120821) / 배열 뒤집기(120821) 해설
- Lv 2: N^2 배열 자르기(87390) / N^2 배열자르기(87390) 해설
- Lv 1: 나누어 떨어지는 숫자 배열(12910) / 나누어 떨어지는 숫자 배열(12910) 해설
(leetcode)
-
스택
코드
예시
추천 문제
(Programmers)
- Lv 2: 괄호 회전하기(76502) / 괄호 회전하기(76502) 해설
- Lv 2: 짝지어 제거하기(12973) / 짝지어 제거하기(12973) 해설
- Lv 2: 주식 가격(42584) / 주식 가격(42584) 해설
- Lv 1: 크레인 인형뽑기 게임(64061) / 크레인 인형 뽑기 게임(64061) 해설
- Lv 3: 표 편집(81303) / 표 편집(81303) 해설
- Lv 1: 같은 숫자는 싫어(12906) / 같은 숫자는 싫어(12906) 해설
- Lv 2: 올바른 괄호(12909) / 올바른 괄호(12909) 해설
- Lv 0: 컨트롤 제트(120853) / 컨트롤 제트(120853) 해설
(leetcode)
-
큐
코드
예시
추천 문제
(프로그래머스)
- Lv 2: 기능개발(42586) / 기능개발(42586) 해설
- Lv 1: 카드 뭉치(159994) / 카드 뭉치(159994) 해설
- Lv 2: 다리를 지나는 트럭(42583) / 다리를 지나는 트럭(42583) 해설
(leetcode)
-
해시
코드
예시
추천 문제
(프로그래머스)
- Lv 1: 완주하지 못한 선수(42576) / 완주하지 못한 선수(42576) 해설
- Lv 2: 영어 끝말잇기(12981) / 영어 끝말잇기(12981) 해설 (JS X)
- Lv 2: 전화번호 목록(42577) / 전화번호 목록(42577) 해설 (Java/JS X)
- Lv 2: 할인 행사(131127) / 할인 행사(131127) 해설
- Lv 2: 오픈 채팅방(42888) / 오픈 채팅방(42888) 해설
- Lv 3: 베스트 앨범(42579) / 베스트 앨범(42579) 해설
- Lv 1: 신고 결과 받기(92334) / 신고 결과 받기(92334) 해설
- Lv 2: 메뉴 리뉴얼(72411) / 메뉴 리뉴얼(72411) 해설
- Lv 2: 의상(42578) / 의상(42578) 해설
- Lv 2: [3차] 압축(17684) / [3차] 압축(17684) 해설
트리
코드
예시
추천 문제
(프로그래머스)
- Lv 2: 예상 대진표(12985) / 예상 대진표(12985) 해설
- Lv 3: 다단계 칫솔 판매(77486) / 다단계 칫솔 판매(77486) 해설
- Lv 2: 미로 탈출(159993) / 미로 탈출(159993) 해설 (Python/JS. 나머지는 그래프)
- Lv 3: 양과 늑대(92343) / 양과 늑대(92343) 해설 (Java/Python/JS. 나머지는 그래프)
- Lv 3: 길 찾기 게임(42892) / 길 찾기 게임(42892) 해설
- Lv 3: 입국심사(43238) / 입국심사(43238) 해설
- Lv 4: 트리 트리오 중간값(68937) / 트리 트리오 중간값(68937) 해설
(leetcode)
-
-
집합
코드
예시
추천 문제
(프로그래머스)
- Lv 1: 폰켓몬(1845) / 폰켓몬(1845) 해설
- Lv 2: 영어 끝말잇기(12981) / 영어 끝말잇기(12981) 해설 (Java/JS만. 나머지는 해시)
- Lv 2: 전화번호 목록(42577) / 전화번호 목록(42577) 해설 (JS만. 나머지는 해시)
- Lv 3: 섬 연결하기(42861) / 섬 연결하기(42861) 해설
(leetcode)
-
그래프
코드
예시
추천 문제
(프로그래머스)
- Lv 2: 미로 탈출(159993) / 미로 탈출(159993) 해설 (Python/JS X)
- Lv 2: 게임 맵 최단 거리(1844) / 게임 맵 최단거리(1844) 해설
- Lv 3: 네트워크(43162) / 네트워크(43162) 해설
- Lv 3: 양과 늑대(92343) / 양과 늑대(92343) 해설 (Java/Python/JS X)
- Lv 2: 배달(12978) / 배달(12978) 해설
- Lv 3: 경주로 건설(67259) / 경주로 건설(67259) 해설
- Lv 2: 전력망을 둘로 나누기(86971) / 전력망을 둘로 나누기(86971) 해설
- Lv 3: 가장 먼 노드(49189) / 가장 먼 노드(49189) 해설
- Lv 5: 방의 개수(49190) / 방의 개수(49190) 해설
- Lv 3: 순위(49191) / 순위(49191) 해설
- Lv 3: 합승 택시 요금(72413) / 합승 택시 요금(72413) 해설
- Lv 2: 타겟 넘버(43165) / 타겟 넘버(43165) 해설
- Lv 3: 여행 경로(43164) / 여행 경로(43164) 해설
(leetcode)
-
-
'코딩테스트 > PCCP(Java)' 카테고리의 다른 글
[PCCP] Java - 기본문법 (1) | 2025.01.24 |
---|