오늘 할 일
- 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 저장소에 저장된다.
- 일반적으로 로그 시스템에 많이 쓰인다. - 서비스 분석을 위한 행동 로그
- 실습 - 파일 처리 시스템(이미지 저장시 크롭 사이즈로 잘라서 저장하는 시스템)
- 기존 서버
- 유저 → 서버로 image url을 보내면 서버가 이미지를 다운로드 받아서 사이즈별로 Crop한 뒤에 S3에 저장하기
- 유저 → 서버로 image url을 보내면 서버는 SQS에 image url을 넘겨준다. SQS는 여러 개의 람다를 실행하고, 람다는 이미지를 외부에서 다운로드 받아 Crop한 후에 S3에 저장하기
- 결과: 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 |