21년 2월 1일

한 일

  • 자바 소켓통신으로 Http 요청을 구현해보았고 성공적인 Response를 받을 수 있었다.

    1. URL 클래스를 직접 구현하여, http://www.naver.com:80/test?query=test 와 같은 형식의 url을

      프로토콜, 도메인 이름, uri, 파라미터등으로 구분하도록 하였다.

    2. URL클래스 내부적으로 java.net의 InetAddress 클래스를 이용하여 DNS서버에서 IP주소를 알아낸다.

    3. 직접 구현한 URL 클래스를 이용하여 http 헤더를 붙여서 소켓통신으로 http request를 보내고 response를 받아온다.(내일 예정)

  • TCP/IP 4계층 모델에 대하여 공부 및 포스팅 하였다. (이번 내용은 정보를 서술할 뿐이라 다른 글을 거의 복사했다.)

  • 프로그래머스 징검다리건너기 문제를 풀었다.

    1. 징검다리건너기

      • 각 돌은 건널 수 있는 숫자가 정해져있고(일정 숫자 이상 밟으면 부서진다고 상상), 최대로 점프할 수 있는 거리는 k로 제한된다.

      • 내 풀이:

        1. 한번에 뛸 수 있는 거리는 k이므로, stones를 전체 순회하며 k 길이만큼의 구간이 사용 가능한 횟수를 구한다.

          ex) 1~k 구간이 버틸 수 있는 사람 수는 1~k번째 돌에 적힌 숫자 중 최대값이며, 그 다음은 2~k+1번째 구간의 값을 구한다.

        2. 이렇게 구한 값중 최소값이 징검다리를 건널 수 있는 최대 인원이다.(k개의 구간이 무너지는 순간 아무도 건널 수 없으므로)
        3. 결국 구간 max값을 stones길이만큼 구해야 하는데, 효율성 통과를 위해 구간값을 segment tree로 구했다.
      • 다른 사람 풀이:

        1. 징검다리 건널 수 있는 최대 인원은, 돌에 적힌 숫자 중 최대값과 최소값의 사이이다.
        2. binary search로 answer를 바꿔가며, 정답을 찾는다.

잘못한 것

  • 네트워크는 대학교때도 꺼려했던 과목이라 기본이 많이 부족하다.
  • 기본이 부족한데도 조급함을 느끼며 빨리빨리 하려고 했다.

잘한 것

  • 다시 일상으로 복귀하고 있다.

느낌

  • 조바심을 느껴 쓱 훑고 빨리 구현하려고 하니, 아무것도 하지 못한 느낌이다.
  • 기본이 부족하면 차근차근 공부해야겠다. 시간은 많다.

할 일

  • 코드스쿼드 미션하기
  • 네트워크 공부하기
  • 프로그래머스 문제 풀기