TIL

TIL_20230509

번잔중 2023. 5. 9. 23:28

오늘 할 일

  • LeetCode 데일리 문제 풀기
  • 원티드 프리온보딩

오늘 배운 것

LeetCode 데일리 문제 풀기

  • 오늘의 문제: 54. Spiral Matrix(https://leetcode.com/problems/spiral-matrix/)
  • 문제 조건
    • m x n 행렬이 주어지고, 행렬 내에 있는 모든 요소를 나선형 순서에 맞춰서 반환해라.
  • 문제 해결 과정
    • 순서는 오른쪽 -> 아래 -> 왼쪽 -> 위의 반복이다. 사이클을 반복하면서 방문하지 않은 노드가 없을 때까지 돌려주면 된다.
    • 각 방향에서 끝 지점에 도달한 경우 다음 방향으로 넘어갈 수 있도록 바꿔주어야 한다. 그림을 그려서 확인해보면 더 확실하지만 한 사이클이 돌고나서 시작점과 끝점이 각각 +1, -1 된다. 그렇기 때문에 순차적으로 오-아-왼-위 순서가 끝날 때마다 마지막 지점에 도달한 값을 저장해서 증감시켜주고 다음 사이클을 돌 수 있도록 해야 한다.
    • 방향별 인덱스 증감
      • 오른쪽: (0,0), ..., (0, n - 1)
      • 아래: (0, n - 1), ..., (n - 1, n - 1)
      • 왼쪽: (n - 1, n - 1), ..., (n - 1, 0)
      • 위: (n - 1, 0), ..., (0, n - 2)
    • 우선 전체 개수에 도달하면 while문을 빠져나온다.
    • 그렇지 않은 동안에는 for문을 순회하면서 증가, 감소 연산을 시작값, 끝값을 방향에 따라 설정해서 반복한다. 이 때 주의할 점은 한 방향으로의 순회가 끝나면 시작점 또는 끝점의 값을 더하거나 빼줘야 한다는 점이다. 그 이유는 다음 사이클에서 더 안쪽에 있는 값들로 순회하기 위해서이다.

원티드 프리온보딩

  • 오늘은 AWS의 메시지 큐에 대해서 배웠습니다.
  • AWS SQS
    • 표준 대기열: 무제한 처리량 / 최소한 한 번 전달(여러 번 전달될 수도 있음) / 최선 노력 순서 / 순서 보장  
    • (많이 씀)FIFO(First - In - First - Out) 대기열: 초당 최대 300개의 메시지 / 정확히 한 번 처리 / 선입선출 전달
    • Dead Letter Queue: SQS에서 처리 실패한 경우, 예컨대 이메일을 보내려고 했는데 이메일이 보내지지 않은 경우에 Dead Letter Queue에 메시지를 넣어두고 나중에 Re-Try할 수 있는 코드 작성이 가능해진다.
  • AWS Kinesis
    • 모든 규모의 스트리밍 데이터를 비용 효율적으로 처리할 수 있는 핵심 기능과 더불어 애플리케이션 요구사항에 가장 적합한 도구를 선택할 수 있는 유연성을 제공
    • 순서 보장
    • 클라이언트에서 이벤트 발생시 Kinesis의 샤드라는 단위의 처리기에 메시지가 들어가고 그 후에 서버를 통해 DB 저장소에 저장된다.
    • 일반적으로 로그 시스템에 많이 쓰인다. - 서비스 분석을 위한 행동 로그
  • 실습 - 파일 처리 시스템(이미지 저장시 크롭 사이즈로 잘라서 저장하는 시스템)
    1. 기존 서버
    2. 유저 → 서버로 image url을 보내면 서버가 이미지를 다운로드 받아서 사이즈별로 Crop한 뒤에 S3에 저장하기
    3. 유저 → 서버로 image url을 보내면 서버는 SQS에 image url을 넘겨준다. SQS는 여러 개의 람다를 실행하고, 람다는 이미지를 외부에서 다운로드 받아 Crop한 후에 S3에 저장하기
    4. 결과: 1 < 2 < 3 순서대로 효율이 좋아진다.

느낀점

  • 리트코드의 오늘 문제는 기분이 새롭습니다. 이전까지 정말로 + 극도로 혐오하던 스타일의 문제여서 더 그런 것 같습니다. 해당 문제를 뜯어서 생각해보니 해결해볼 수 있을 것 같은 기분도 들었고, 코드를 직접 작성하면서 틀린 부분을 찾아 수정하니 제대로 동작했습니다. 메서드를 만들어서 처리할까 고민했었는데, 그냥 while문으로 돌려도 코드가 보기 불편한 정도는 아니어서 그대로 작성했습니다.
  • 프리온보딩에서 첫 실습을 했습니다. 이미지 저장을 위해 url을 보내면서 실습에 참여했는데, 아주 즐거웠습니다.
  • 오늘은 취업 / 이력서 관련 질문도 받아주셔서 궁금한 점을 물어보고 아주 디테일하게 답변해주셨습니다. 감사합니다!_!

내일 할 일

  • LeetCode 데일리 문제 풀기
  • Heart - 게시판 글 수정 및 삭제 이미지 처리 로직 작성하기
  • 운동하기 - 웨이트 트레이닝

'TIL' 카테고리의 다른 글

TIL_20230511  (0) 2023.05.11
TIL_20230510  (0) 2023.05.10
TIL_20230508  (0) 2023.05.08
TIL_20230507  (0) 2023.05.07
TIL_20230506  (0) 2023.05.06