문제 설명
https://school.programmers.co.kr/learn/courses/30/lessons/120876
제한 사항
입출력 예
풀이
import java.util.HashMap;
import java.util.stream.Collectors;
class Solution {
public int solution(int[][] lines) {
HashMap<Integer, Integer> numMap = new HashMap<>();
for (int i = 0; i < lines.length; i++)
for (int j = lines[i][0]; j < lines[i][1]; j++)
numMap.put(j, numMap.getOrDefault(j, 0) + 1);
return numMap.values().stream().filter(i -> i > 1).collect(Collectors.toList()).size();
}
}
후기
처음 이 문제를 봤을 때는 뭔가 이상했다. 이게 왜 0단계인가..? 문제만 보면 2단계인 요격 시스템 문제보다 어려워 보였다. 그래서 이 정도 난이도가 왜 0단계냐... 하고 풀고 있었는데 푸는 중에 뭔가 진짜 이상해서 문제를 다시 보고 제한 사항을 봤더니 선분의 개수가 3개였다;; 그래서 풀던걸 초기화하고 다시 풀었다. HashMap을 써서 간단하게 풀 수 있다. x축 각 숫자를 가지고 있는 선분의 개수를 저장해서 그걸 세는 식으로 풀면 쉽다. 선분의 개수가 많아져도 이렇게 풀 수 있지만 2단계 이상에서부터 최적화를 시키는 문제를 몇 번 보다보니 더 좋은 다른 방법이 있나 생각해보게 만들어서 처음에 풀기 어려웠던 것 같다.
아무리 생각해도 0단계 정답률 낮은 순은 1단계나 2단계 열화판인 것 같다...
'코딩테스트 (프로그래머스) > Java' 카테고리의 다른 글
[프로그래머스][JAVA][Lv. 0] 안전지대 (0) | 2023.08.31 |
---|---|
[프로그래머스][JAVA][Lv. 2] N개의 최소공배수 (0) | 2023.08.31 |
[프로그래머스][JAVA][Lv. 2] 리코쳇 로봇 (0) | 2023.08.30 |
[프로그래머스][JAVA][Lv. 0] 평행 (0) | 2023.08.30 |
[프로그래머스][JAVA][Lv. 0] 정수를 나선형으로 배치하기 (0) | 2023.08.29 |