파이썬
리스트에 다차원 요소가 들어있을 때 sort
list.sort()나 sorted()를 사용할 때는 기본적으로 각 튜플의 첫 번째 요소부터 차례대로 비교하여 정렬한다. 즉, 다차원 요소가 들어 있는 리스트에서 정렬 기준이 명시되지 않으면 튜플의 첫 번째 요소부터 비교하고, 첫 번째 요소가 동일하면 두 번째 요소, 두 번째 요소도 같으면 세 번째 요소… 이런 방식으로 순차적으로 비교하여 정렬한다.
★ 예시 : (year, month, day, name) 형태의 리스트
# 학생 리스트가 (year, month, day, name) 형식으로 저장되어 있을 때
student_list = [
(2000, 5, 21, "Alice"),
(1999, 12, 15, "Bob"),
(2000, 5, 15, "Charlie"),
(2001, 1, 10, "Dave")
]
- 여기서 list.sort()를 호출하면 다음 순서로 정렬이 진행된다.
- 첫 번째 요소(year)를 기준으로 오름차순 정렬.
- year가 같으면 **두 번째 요소(month)**를 기준으로 정렬
- month도 같으면 **세 번째 요소(day)**를 기준으로 정렬
- 마지막까지 같다면 **네 번째 요소(name)**를 기준으로 정렬
정렬 결과
[(1999, 12, 15, "Bob"), # 1. year가 가장 작음
(2000, 5, 15, "Charlie"), # 2. year 같고 month, day 오름차순
(2000, 5, 21, "Alice"),
(2001, 1, 10, "Dave")] # 3. 가장 마지막 year
자바
Generic
자바에서 제네릭(generics)은 클래스, 메소드, 인터페이스를 선언할 때 데이터 타입을 파라미터로 받을 수 있게 해주는 기능이다. 제네릭을 사용하면 코드의 재사용성과 안정성을 높일 수 있다. 주요 특징은 다음과 같다.
- 컴파일 타임 타입 체크
- 제네릭은 컴파일 시점에 타입을 체크하여, 잘못된 타입이 사용되는 것을 방지한다.
- 예를 들어 List<String>으로 선언하면 이 리스트에는 오직 String 타입만 담을 수 있다.
- 타입 안정성
- 제네릭을 사용하면 캐스팅(casting)을 피할 수 있어 타입 안정성을 높일 수 있다.
- 예를 들어, 제네릭을 사용하지 않는 List에서 객체를 꺼낼 때는 (String)처럼 캐스팅해야 하지만, 제네릭을 사용하면 그런 과정이 필요 없다.
- 코드 재사용성
- 여러 타입에서 사용할 수 있는 코드(클래스, 메소드)를 쉽게 작성할 수 있다.
- 예를 들어 List<T> 같은 제네릭 타입으로, 리스트 내부에 어떤 타입의 객체를 넣어도 동일한 코드를 사용할 수 있다.
Generic 여러 타입 선언 시
public class Pair<T, S> { ... }
public class Pair<T1, T2> { ... }
- 같은 타입이라도 이름이 달라야 한다.
📜 작성한 게시글
[파이썬 순열(Permutations)과 조합(Combinations)] 👉 https://dev-cloud.tistory.com/376
[Programmers 코딩테스트 L1. 가장 가까운 같은 글자] 👉 https://dev-cloud.tistory.com/377
[Programmers 코딩테스트 L1. 문자열 내 마음대로 정렬하기] 👉 https://dev-cloud.tistory.com/378
[Programmers 코딩테스트 L1. 모의고사] 👉 https://dev-cloud.tistory.com/379
[BOJ 코딩테스트 5635. 생일] 👉 https://dev-cloud.tistory.com/380
[자바 중급 11. Generic 1] 👉 https://dev-cloud.tistory.com/381
'TIL' 카테고리의 다른 글
[TIL] 2024년 11월 08일 (2) | 2024.11.09 |
---|---|
[TIL] 2024년 11월 07일 (0) | 2024.11.07 |
[TIL] 2024년 10월 30일 (0) | 2024.10.30 |
[TIL] 2024년 10월 29일 (0) | 2024.10.29 |
[TIL] 2024년 10월 26일 (0) | 2024.10.29 |