TIL
TIL_20230429
번잔중
2023. 4. 29. 23:42
오늘 할 일
- LeetCode 데일리 문제 풀기
- 원티드 프리온보딩 사전 세팅
- 원티드 과제 제출하기
오늘 배운 것
LeetCode 데일리 문제 풀기
- 오늘의 문제: 1697. Checking Existence of Edge Length Limited Paths(https://leetcode.com/problems/similar-string-groups/)
- 문제 조건
- n개의 노드들로 이루어진 무방향 그래프는 edgeList에 의해 정의되고, edgeList[i] = [ui, vi, disi]는 거리 disi를 갖는 노드 ui와 vi 사이의 에지를 나타낸다. 두 노드 사이에 여러 개의 에지가 있을 수 있다.
- queries라는 배열이 주어지는데, queries[j] = [pj, qj, limitj]에서 각 queries[j]가 pj와 qj 사이에ㅔ 각각의 에지상의 경로가 완전하게 limitj보다 작은지 아닌지를 결정해야 한다.
- boolean 타입의 배열 answer를 반환하는데, answer.length == queries.length이고 query[j]에 대한 경로가 있으면 answer의 j번째 값이 true이고 그렇지 않으면 false이다.
- 문제 해결 과정
- 우선 그래프에 서로의 연결 성분을 표시해주어야 한다. 양방향이지만 edgeList에 있는 값 중에서 거리가 최소인 값을 넣어주면 된다.
- queries를 한 번 실행할 때마다 시작점으로부터 목표지점까지 갈 수 있는 경로의 값을 찾아서 경로의 값이 queries[2]보다 작다면 true, 아닌 경우에는 false를 정답 배열에 넣어준다.
- 방법으로는 해당 경로에 해당하는 경우의 수를 모두 찾아서 가능한 경우가 하나라도 있다면 true가 되도록 만들어야 한다.
- 구현 실패 ...
- 정답 코드 설명
- union-find 알고리즘 문제라고 한다. 어제 나왔던 문제가 union-find 문제라서 연달아 출제한 것으로 보인다.
- 아직 이해하지 못해서 코드를 남겨둘 생각! 이해하고 나서 이어서 작성하겠다.
원티드 프리온보딩 사전 세팅 + 원티드 사전 과제 제출
- 원티드 사전 세팅은 오래걸릴 줄 알았으나 금방 마무리 했습니다.
- 사전 과제의 경우 여러 질문이 나왔는데요.
- AWS 인프라를 사용함으로써 얻을 수 있는 이점 → 유연성, 저비용
- RDBMS를 사용해야하는 상황과 NOSQL를 사용해야하는 상황
- RDBMS: 데이터 간 관계가 존재하는 정형화된 데이터를 다루는 경우에 사용한다. 사원 - 부서 사이의 관계를 다대일 관계로 정의할 수 있다.
- NoSQL: 형식이나 스키마가 일정하지 않은 비정형 데이터를 다루는 데에 적합하다. SNS, 로그, 센서 데이터 등의 데이터를 NoSQL을 사용하여 유연하게 처리할 수 있다.
- 매일 다른 시간 평소의 3배에 달하는 트래픽이 몰리는 SNS 서비스가 있습니다. 어떤 형식으로 아키텍쳐를 구성하면 서버를 더 안정적으로 운영할 수 있을까요?
- 로드밸런서와 Auto Scailing을 통한 분산 처리 및 수평 확장
- 데이터의 경우 캐싱을 통해 DB 부하를 줄일 수 있다.
- 작업을 비동기로 처리해야하는 상황 3가지를 설명
- 대용량의 파일 다운로드 / 업로드
- 외부 API 호출
- 대규모 요청 발생
- 해당 내용들을 검색도 해가면서 찾아 답변을 작성했습니다.
느낀점
- 리트코드를 풀면서 너무 어렵고 이해하기 어렵다고 생각이 드는 문제였습니다. 아직 이해하지 못했는데, 유니온-파인드 알고리즘을 이해하고 다시 보면 좋다고 하니 한 번 해보겠습니다.
- 원티드 프리온보딩을 신청하고 사전 과제를 풀어봤는데, 백엔드 개발자로서 해볼 수 있는 고민들이라 찾아서 답변 작성하는 과정이 재밌었습니다.ㅎㅎㅎ
내일 할 일
- LeetCode 데일리 문제 풀기
- 코드스테이츠 - Cloud > AWS > RDS 내용 노션에 정리하기
- 코딩 카페 등록하기