22.05.03 개발 일기

Leekimoon·2022년 5월 3일
0

개발 일기

목록 보기
7/21
post-thumbnail

한줄 요약 : 과제 시작!!

오늘의 계획

LeetCode 문제 풀기 (Linked List)
1) Linked List Cycle
2) Linked List Cycle II
제로베이스 과제 풀기
1) HTML/CSS 과제 1

오늘은 LeetCode Linked List 문제 유형들의 어려움을 겪었다.
1번 문제와 2번 문제 둘다 원형 리스트 문제들이였는데, 노드 디자인이 아래 형태로 이뤄져있다.

 function ListNode(val) {
     this.val = val;
      this.next = null;
  }

별도의 기능들은 직접 prototype을 선언하여 사용할수 있지만, 함수들이 호출 되는 구조를 아직 이해가 부족해서 해당 문제를 푸는데 어려움을 겪었다.
오늘은 두 문제가 비슷한 유형인데, 원형리스트가 있으면 true 없으면 false를 return 하는 거였지만 length나 식별할 수 있는 위치를 어떻게 찾아야 하는지가 어려웠다.
별도의 prototype 으로 입력값을 넣어주려 했지만 생각처럼 입력 되지 않아서 식별하는 거에 대해서만 찾았지만, 1시간이 넘는 시간동안 사투를 벌였지만 해결하지 못해, 문제풀이를 보고 분석하였다.
일단 해당 원형리스트 존재 여부는 for문을 이용하는 방법과 Set 함수를 이용하는 방법을 참고 하였는데,

//Set 함수를 통한 원형 리스트 탐색
var detectCycle = function(head) {

    let uniques = new Set();
    
    while(head) {
        if (uniques.has(head)) {
            console.dir(uniques)
            return head;
        }
        uniques.add(head);
        head = head.next;
    }
    return head;  

};

//for문 통한 탐색
var detectCycle = function(head) {

  var slow = head;
  var fast = head;
  while (slow && fast) {
    slow = slow.next;
    fast = fast.next ? fast.next.next : undefined;
    if (slow === fast) return true;
  }
  return false;

};

원형 리스트
Set을 통한 리스트 탐색을 할때 해당 Set에 담긴 데이터를 보면 노드 형태를 유지 하며, 해당 값들이 저장이 되는데, 반복문 과 Set함수의 has()를 통해 val와 next가 가르키는 것이 동일 값이 존재하면 원형리스트가 존재 하는 것으로 판단하여 푸는 방법이였다.

for문을 통한 것은 좀 더 직관적이였는데, slow 변수는 한 칸씩 이동, fast 변수는 두 칸씩 이동을 하다 서로 값이 동일 해지면, 원형리스트가 있다고 판단하였다.

해당 유형들을 보며 리스트에 대해서 탐색하는 방법에 대해 알게 되었다.

그리고 대망의 과제를 이제 시작 하게되었다.
과제에 대해서 언급을 하면 생소한 기술도 있었지만, 디자인 시안이 주어져서 디자인에 대해서 color 값이나 margin 값 배치 등이 가이드 되어있고, 과제에서는 구체적으로 사용해야 되는 기술들을 언급하므로써 원하는 방향을 가이드 해주어서 해당 기술들을 찾아가며 문제를 풀 수 있었다.
디자인 시안을 보기 위해 피그마 사이트를 가입 하게 되었는데, 웹 페이지로 그래픽 요소 구현들이 너무 좋은 느낌을 받았다.

일기를 마무리 하면 이제 과제를 시작 하였고 과제 시한은 6월 말일 까지지만 최대한 빠르게 구현하여, 검토 하는 것을 목표를 하려 한다. -끝- §( ̄▽ ̄

profile
FrontEnd Developer

3개의 댓글

comment-user-thumbnail
2022년 5월 3일

연결 리스트도 이제 같이 익숙해져 봅시다. 화이팅

답글 달기
comment-user-thumbnail
2022년 5월 3일

오늘 알고리즘 난의도 무엇...😭 그래도 머리 싸매고 끙끙 앓은 만큼 기억에 더 많이 남을 것 같습니다 ㅎㅎ 과제도 가이드라인을 잘 잡아주셔서 생각보다 할 만 하네요!! 초스피드로 과제를 해결해봅시다 😊

답글 달기
comment-user-thumbnail
2022년 5월 3일

원형 리스트 문제도 쉽지 않았던 것 같습니다! 피그마는 여러모로 참 좋은 것 같아요. 확실히 협업툴로 많이 사용되는 이유를 알 것 같네요 🙂

답글 달기