[프로그래머스] 겹치는 선분의 길이 - Java

Yunki Kim·2023년 1월 10일
0

프로그래머스

목록 보기
87/101
post-thumbnail

문제


링크


코드

class Solution {
    public int solution(int[][] lines) {
        int[] rail = new int[200];
        for (int[] line : lines) {
            for (int j = (line[0] + 100); j < (line[1] + 100); j++) {
                rail[j]++;
            }
        }

        int answer = 0;
        for (int value : rail) {
            if (value > 1) answer++;
        }
        return answer;
    }
}

리뷰

문제를 풀 때 주의해야할 점은 겹치는 '점'이 아닌 겹치는 선분이다.
문제에서 주어진 예시로 {3, 5} 구간이 겹치게 되면 결과는 겹치는 점인 3이 아니라 겹치는 선분의 길이인 2이다.

선분의 시작점과 끝점의 범위는 -100 부터 100이다.
배열에서 음수의 인덱스 값을 표현할 수 없으므로 0 ~ 200범위의 배열을 만들어주고 입력받은 좌표에 100을 더해 배열에 선분을 그리도록 하였다.

입력받은 좌표가 {3, 5} 이면 103번, 104번 인덱스에 값이 들어가는 방식이다.

이렇게 입력받은 좌표를 전부 입력하게되면 배열 중 1보다 큰 수가 있는 것은 선분이 겹쳤다는 것을 알 수 있다.

0개의 댓글

관련 채용 정보