문제
선분 3개가 평행하게 놓여 있습니다. 세 선분의 시작과 끝 좌표가 [[start, end], [start, end], [start, end]] 형태로 들어있는 2차원 배열 lines가 매개변수로 주어질 때, 두 개 이상의 선분이 겹치는 부분의 길이를 return 하도록 solution 함수를 완성해보세요.
입출력 예
lines | result |
[[0, 1], [2, 5], [3, 9]] | 2 |
[[-1, 1], [1, 3], [3, 9]] | 0 |
[[0, 5], [3, 9], [1, 10]] | 8 |
lines에서 선분의 양 끝점이 -100부터 100까지 있다 했습니다.
그래서 임의로 길이가 200인 배열을 하나 만들어주고,
그 배열 안에 lines의 원소들이 지나간 자리를 +1씩 찍어줍니다.
만약 두 선분이 겹쳐졌다면 원소값이 2 이상일겁니다.
1. 길이가 200인 배열 생성
int arr[] = new int[200];
2. 배열에 -100부터 100까지의 양 끝점이 찍히도록 for문 생성
for(int i=0; i<lines.length; i++){
for(int j=lines[i][0]+100; j<lines[i][1]+100; j++){
arr[j]++;
}
}
3. 배열의 원소 값이 1 초과 = 겹친 부분임
for(int z=0; z<arr.length; z++){
if(arr[z] > 1){
answer++;
}
}
코드
import java.util.*;
class Solution {
public int solution(int[][] lines) {
int answer = 0;
int arr[] = new int[200];
for(int i=0; i<lines.length; i++){
for(int j=lines[i][0]+100; j<lines[i][1]+100; j++){
arr[j]++;
}
}
for(int z=0; z<arr.length; z++){
if(arr[z] > 1){
answer++;
}
}
return answer;
}
}
제가 작성한 코드는 아래에서 확인하실 수 있습니다.
https://github.com/eonwy/programmers
GitHub - eonwy/programmers: 🔎 coding-test (programmers) 🔍
🔎 coding-test (programmers) 🔍. Contribute to eonwy/programmers development by creating an account on GitHub.
github.com
'🫧 코테 : CodingTest' 카테고리의 다른 글
[프로그래머스] Java : 특이한 정렬 (0) | 2024.04.17 |
---|---|
[프로그래머스] Java : 유한소수 판별하기 (0) | 2024.04.15 |
[프로그래머스] Java : 평행 (0) | 2024.04.11 |
[프로그래머스] Java : 외계어 사전 (0) | 2024.04.03 |
[프로그래머스] Java : 안전지대 (0) | 2024.04.02 |