Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- Redux
- Next
- 리엑트
- JS
- React
- react-query
- 리액트
- customModal component 만들기
- programmers
- 배열
- 생명주기
- todolist
- Firebase
- 겹치는 선분의 길이
- next-pwa
- 파이어베이스
- 투두리스트
- 넥스트
- 달리기경주
- Recoil
- SSR
- google firebase
- JavaScript
- 자바스크립트
- debounce
- csr
- lifecycle
- 리덕스
- NextJS
- useMutation
Archives
- Today
- Total
끄적끄적
[Programmers] 겹치는 선분의 길이 풀이(JS) 본문
첫번째 실패한 문제해결 방법과 이유)
0 - 200 까지의 array를 만들고, array의 index를 각 꼭지점으로 설정하여 선분이 존재하는 꼭지점에 +1씩 하엿다.
그리고 0 부터 200까지 순회를 한번 하며, array의 요소가 연속으로 2이상이 나온다면 겹치는 선분이라고 판단하였다.
이는 선분이 아닌 양끝에 꼭지점이 있어도 선분이라고 판단되는 잘못된 생각이었다.
// 잘못된 코드
function solution(lines) {
let arr = new Array(201).fill(0);
for(let i=0; i<lines.length; i++){
let point = lines[i];
for(let j=point[0]; j<=point[1]; j++) arr[100+j]++;
}
let answer = 0;
for(let i=0; i<arr.length-1; i++){
if(arr[i] >=2 && arr[i+1] >= 2) {
answer++;
}
}
return answer;
}
위와 같은 풀이는 다음과 같은 그림의 형태일때 잘못된 답을 내놓는다.
위의 경우는 겹치는 선분이 0임에도, 꼭지점만 보고 판단하면 2라는 결과를 낸다.
따라서 꼭지점에 선이 존재하는 걸로 증가시키는 것이 아닌 , 선분이 존재하면 증가하는 걸로 변경하였다.
예를 들어 0-1이라는 선분이 존재하면 arr[0]++을 해주고, 2-3이라는 선분이 존재하면 arr[2]++를 해주는 것이다.
위를 해결한 풀이 이다.
function solution(lines) {
// point1) 선분의 왼쪽을 기준으로 하기때문에 array는 201개로 설정한다
let arr = new Array(201).fill(0);
for(let i=0; i<lines.length; i++){
let point = lines[i];
for(let j=point[0]; j<point[1]; j++) {
// point2) 여기서 j는 point[1]보다 1작을때를 한계로 설정하여야 한다.
arr[100+j]++;
}
}
let answer = 0;
for(let i=0; i<arr.length-1; i++){
if(arr[i] >=2) {
// point3) 풀이방식의 의도대로 여기의 arr[i]는 arr[i]와 arr[i+1]이 선분으로
// 이어져 있다는 것을 의미한다.
answer++;
}
}
return answer;
}
javascript의 더욱 간단한 메소드들을 이용하여 짧게 작성할 수 도 있지만 ,
for문 등 최대한 내 스스로 어떤 풀이인지 알아보기 쉽게 만들어봐야겠다..
'Programmers' 카테고리의 다른 글
[Programmers] 신고 결과 받기 (JS) (0) | 2024.01.22 |
---|---|
[Programmers] 햄버거 만들기 (JS) (0) | 2024.01.19 |
[Programmers] 둘만의 암호 (JS) (0) | 2024.01.18 |
[Programmers] 대충 만든 자판 (JS) (0) | 2024.01.18 |
[Programmers] 가장 많이 받은 선 풀이(JS) (0) | 2024.01.10 |
Comments