[Programmers] Lv0 겹치는 선분의 길이 Java
2023. 1. 26. 05:54ㆍCS/자료구조 & 알고리즘
728x90
문제 출처
[프로그래머스 코딩 테스트 연습]
https://school.programmers.co.kr/learn/courses/30/lessons/120876?language=java
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 풀이
- lines의 최소 최대 범위 만큼 배열을 만들고 그 배열에 각각 기록을 하면 겹치는 부분을 쉽게 구할 수 있다.
- 겹치는 부분은 2번 이상 기록된 거이므로 2번 이상 된것을 세면 된다.
소스 코드
import java.util.Arrays; public class Solution { public int solution(int[][] lines) { int left = lines[0][0]; int right = lines[0][1]; for (int i = 1; i < lines.length; i++) { left = Math.min(left, lines[i][0]); right = Math.max(right, lines[i][1]); } int[] lineMap = new int[right - left + 1]; for (int[] line : lines) for (int i = line[0]; i < line[1]; i++) lineMap[i - left]++; return (int) Arrays.stream(lineMap).filter(i -> i >= 2).count(); } }
728x90
'CS > 자료구조 & 알고리즘' 카테고리의 다른 글
[Programmers] Lv0 분수의 덧셈 Java (0) | 2023.01.28 |
---|---|
[Programmers] Lv0 안전지대 Java (0) | 2023.01.27 |
[Programmers] Lv0 평행 Java (0) | 2023.01.25 |
[Programmers] Lv0 n의 배수 고르기 Java (0) | 2023.01.24 |
[Programmers] Lv0 자릿수 더하기 Java (0) | 2023.01.23 |