[Softeer Lv2 - 금고털이] 를 공부하며 배웠던 Collection.sort관련 메소드 정리이다.
List<int[]> jewel_list = new ArrayList<>();
for(int i=0; i<N; i++){
jewel_list.add(Integer.parseInt(st.nextToken()), Integer.parseInt(st.nextToken())});
}
Collections.sort(jewel_list, (o1, o2) -> o2[1] - o1[1]);
list는 정렬하려는 리스트입니다.
(o1, o2) -> o2[1] - o1[1] 부분은 Comparator를 정의합니다. 이 Comparator는 두 요소를 비교하여 어떤 요소가 앞에 올지 정의합니다.
o1 및 o2는 비교할 두 요소입니다. 이 코드는 두 요소의 두 번째 원소로 비교를 수행합니다.
o2[1] - o1[1]은 비교 로직입니다. 이것은 두 번째 원소(인덱스 1)를 기준으로 두 요소를 비교합니다.
o2[1] - o1[1]은 두 번째 원소(o2[1])에서 두 번째 원소(o1[1])를 뺀 값을 반환합니다.
반환 값이 양수라면, o2[1]가 o1[1]보다 크므로 o2가 o1보다 우선순위가 높다는 의미입니다. 따라서 o2가 앞에 위치하게 됩니다.
반환 값이 음수라면, o1[1]이 o2[1]보다 크므로 o1이 o2보다 우선순위가 높다는 의미입니다. 따라서 o1이 앞에 위치하게 됩니다.
[Softeer Lv2 - 바이러스] 를 공부하며 오류가 났던 것 정리

위 제약 조건을 만족하기 위해, K(바이러스) 수를 int 형으로 선언하였다.
하지만, long 형의 자료형을 사용해주어야 % 1000000007 하기 전의 곱셈 값을 표현할 수 있었다.
자료형에 유의하자!
[Softeer Lv2 - 8단변속기] 를 공부하며 알았던 내용 정리
Arrays.equals(list1, list2)는 boolean값으로 return 하며
1) 동일한 요소를 갖는 지
2) 같은 순서로 포함하고 있는 지 확인
list1.equals(list2) 역시 boolean 값이며, str.equals와 동일하게 동작한다.
1) 동일한 요소를 같은 순서로 가지고 있는 지 확인
1) list1, list를 Arrays.sort로 sorting한다.
2) 그 후에, Arrays.equals(list1, list2)를 한다.
[Softeer Lv2 - 장애물 인식 프로그램] 을 공부하며 알았던 내용 정리
input_str = "10010001";
for(int i=0; i<N; i++){
num_list[i] = Character.getNumericValue(input_str.charAt(i))
를 통해 str 각각의 값을 charAt으로 char형으로 불러온 후,
Character.getNumericValue()를 통해 int형 값으로 변환해준다.
DFS : [Depth-First-Search] 깊이 우선 탐색 --> 경로의 특징을 저장
BFS : [Breadth-First-Search] 넓이 우선 탐색 --> 최단 경로 탐색
이번 문제를 풀면서, 처음으로 DFS를 활용하여 코딩을 해보았다. 자세히 알기!
Queue는 add로 넣고 poll로 뺀다.
while(queue.isEmpty()){
System.out.println(queue.poll());
}
DFS 알고리즘을 활용할 때는, 제약조건을 잘 활용하기, 재귀함수를 잘 할용하기
[Softeer Lv2 - GBC] 을 공부하며 알았던 내용 정리
문제에서, 공백을 기준으로 한 입력 예시가 많이 나왔다.
따라서, 항상 쓰던 BufferedReader와 StringTokenizer를 혼합하여 사용해보기로 하였는데, 계속 0이 아닌 리턴값 오류가 떴다.
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
int M = Integer.parseInt(st.nextToken());
for(int i=0; i<N; i++){
int meter = Integer.parseInt(st.nextToken());
int speed = Integer.parseInt(st.nextToken());
}
결과적으로는, StringTokenizer를 한 번만 사용하여 입력을 처리하여 오류가 났다. 이로 인해, 입력에서 토큰이 누락되어 인덱스를 넘어가는 'NoSuchElementException'이 발생했다.
for (int i = 0; i < N; i++) {
StringTokenizer inputTokenizer = new StringTokenizer(br.readLine());
int meter = Integer.parseInt(inputTokenizer.nextToken());
int speed = Integer.parseInt(inputTokenizer.nextToken());
}