디자인 설계 공부

Today I Learned 날짜 2023년 11월 20일 월요일 내용 조그만 QA에 관련된 Task를 맡기 위한 기초 공부에 시작했다! UML 모델 만들때 쓰는 표준언어 클래스 다이어그램 UML은 14개의 다이어그램이 있다. 클래스 다이어그램은 클래스 내부의 정적인 내용이나 클래스 사이의 관계를 표기. 개념 차원 : 문제 도메인의 구조를 나타내며, 사람이 풀고자 하는 문제의 구조와 개념 기술 명세와 구현 차원 : 소프트웨어 설계 등을 위해, 소스코드와 깊은 연관 클래스 클래스의 이름, 속성, 기능 등 표기 ...

2023년 11월 20일 · 3 분 · 배준수

Onboarding 회고

Onboarding 회고 시작 전의 생각 꽤 흔한 CRUD 사이트를 만드는 과제였다. Angular나 FastAPI는 처음이라 걱정은 되었지만, 크게 복잡한 기능도 없어서 많이 낙관했다. 유저와 관련된 기능도 회원가입과 비밀번호 암호화가 제외된 로그인 뿐이었고 내부에 Todo와 관련된 기능들도 생성, 삭제, 조회 ,수정 뿐이라 조금 공부하면 해볼만할 것이라고 판단했다. 파이썬이라는 언어의 측면에서도 알고리즘 공부때 많이 사용했으므로 걸림돌이 되지 않을 것이라고 생각했다. 문제 정의 구현에 매몰되어 구현이 늦어졌다. 온보딩 과제를 진행하는데 태용님의 권유로 ChatGPT를 배제하였다. 기존에도, 공식 Document를 읽고 원하는 지식을 얻는 습관이 필요하다고 생각하였기에 충분히 납득하였다. Document마다 다르긴 하지만 FastAPI와 Angular는 개념들에 대한 설명과 사용 예시가 나와있었고 작은 프로젝트를 진행하는 과정도 나와있었다. ...

2023년 11월 18일 · 4 분 · 배준수

Onboarding OFF

Today I Learned 날짜 2023년 11월 17일 금요일 내용 화요일부터 너무 바빠다는 핑계로 TIL 작성을 미뤘다. 습관화하는 이유는 어떤 상황에서도 루틴을 유지하기 위함이니 반성해야겠다. 꼭 적자. 온보딩 종료 지난주 월요일(구현은 화요일부터)에 시작된 온보딩 과제가 종료되었다. 목요일에 다른 개발자 분들 앞에서 발표를 마쳤다. 나와 같이 입사한 주영님이 기가 막히게 잘 하셨는데 그에 비해 내 결과물이 참 초라하긴 했다. 부끄럽긴 했지만, 갈 길이 머니 계속 노력해야 하고 갈 길이 정말 멀다는 걸 느꼈다는 것만으로도 만족한다. Angular를 제대로 이해하지 못했다. Todo 상세보기를 위한 데이터를 query parameter로 넘긴 것, 화면 출력 값 업데이트를 위해 새로고침 한 것, Subscribe 와 비동기의 개념 , 자신이 작성한 코드에 대한 이해와 고민이 부족한 것 등에 대해서도 감사한 피드백을 많이 받았다. 사실 발표 전에는 내 수준이 너무 부족해서 지적 받을게 산더미같아 발표하기 싫었다. 오늘 대표님이 피드백은 다른 사람이 시간을 들여 제공하는 것이기에 감사해야 한다는 말씀을 하신걸 듣고 생각해보니 정말 감사한 시간이었다는 생각이 든다. 덕분에 끝났다는 생각보단, 더 보완해서 완성도를 높이고 싶다는 욕심이 생겼다. ...

2023년 11월 17일 · 2 분 · 배준수

파이썬 알고리즘 : 2 x n 타일링

2023년 11월 17일 알고리즘 문제풀이 문제 2 x n 타일링 난이도 Lv.2 코드 1 2 3 4 5 6 7 8 9 10 11 12 def solution(n): dp = [0 for _ in range(60001)] x = 1 while x <= n: if x == 1: dp[x] = 1 elif x == 2: dp[x] = 2 else: dp[x] = (dp[x-1] + dp[x-2])%1000000007 x += 1 return dp[n] 많이 볼 수 있는 DP문제이다. 2 x n 일땐 이전 조합들을 합친 것만으로도 다음 갯수를 산출할 수 있어서 크게 어렵지 않다. 수가 커지기 때문에 나머지로 표시해야 한다는 사실을 잠시 잊었다.. ...

2023년 11월 17일 · 1 분 · 배준수

파이썬 알고리즘 : X만큼 간격이 있는 n개의 숫자

2023년 11월 16일 알고리즘 문제풀이 문제 X만큼 간격이 있는 n개의 숫자 난이도 Lv.1 코드 1 2 3 4 5 6 7 8 def solution(x, n): answer = [] d = x num = x while len(answer) < n: answer.append(num) num += d return answer 크게 어려울 것 없는 문제였다. 문제에 제한 조건이 주어지는데 while문에 추가하면 마지막 테스트 케이스에서 틀린다. 문제가 알아서 제한하여 준다는 뜻이니 걸지 말것. ...

2023년 11월 16일 · 1 분 · 배준수

파이썬 알고리즘 : 124 나라의 숫자

2023년 11월 14일 알고리즘 문제풀이 문제 124 나라의 숫자 난이도 Lv.2 코드 1 2 3 4 5 6 7 8 9 10 11 12 13 def solution(n): nums = [] while n: a = n%3 if a: n = n//3 nums.append(str(a)) else: n = n//3 -1 nums.append('4') nums.reverse() answer = ''.join(nums) return answer 코드 자체는 단순해보이지만 해결하는데 정말 어려운 문제였다. 등장할 수 있는 숫자가 3개(1,2,4)였기 때문에 3진법을 이용하면 될 것 같다는 생각 자체는 바로 떠올렸다. 하지만 답을 유추해내기 쉽지 않았는데 추가적인 조건이 있기 때문이다. 아래 표를 통해 설명하겠다. ...

2023년 11월 14일 · 2 분 · 배준수

1보 전진을 위한 3보 후퇴

Today I Learned 날짜 2023년 11월 13일 월요일 내용 진행은 못하고 여기저기 늪에 빠져 허우적거리다 하루가 끝나버렸다. 2등 뽑기 대회의 1등 오늘 API를 구현 중에 이상한 상황을 맞닥뜨렸다. 내가 구현하던 것은 로그인을 시도하는 메서드로서, 성공하면(정확히는 입력인 아이디와 비밀번호가 데이터베이스 존재한다면) 해당 유저가 DB에서 가진 고유 id(회원가입할 떄 입력하는 user_id가 아님)를 반환하도록 하는 기능이였다. 문제는 첫번째 호출 때는 response를 반환하지 않는 문제였다. 같은 payload를 보내도 첫번째는 response가 나타나지 않고 두번째만 나타났다. 여기서 첫번째라함은 해당 페이지가 로드된 이후의 가장 첫 호출이다. 꽤 오래 고생했는데, 원인은 CORS로 인한 것으로 판단되었다. 따라서 현재 Local 상황에서는 CORS의 Origins를 제한없이 풀어놨더니 해당 문제가 해결되었다. 물론 CORS를 무력화시킨 것이기 때문에 정확한 원인을 찾아 해결하고 Cors를 정상화시켜야 하지만, 우선 갈길이 멀기 떄문에 해결한 것만으로도 다행이다. ...

2023년 11월 13일 · 1 분 · 배준수

파이썬 알고리즘 : 신고 결과 받기

2023년 11월 13일 알고리즘 문제풀이 문제 신고 결과 받기 난이도 Lv.1 코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 def solution(id_list, report, k): n = len(id_list) answer = [0 for _ in range(n)] table = [[0 for _ in range(n)] for _ in range(n)] for x in report: sender, receiver = x.split() a = id_list.index(sender) b = id_list.index(receiver) table[b][a] = 1 for i in table: if sum(i) >= k: for j in range(len(i)): if i[j]: answer[j] += 1 return answer 어떤 배열들을 만들어야 하는지 헷갈렸지만 크게 어려운 문제는 아니었다. ...

2023년 11월 13일 · 1 분 · 배준수

ETA

Today I Learned 날짜 2023년 11월 10일 금요일 내용 Angular 공부 특정 유저의 할일 관리 조회 및 생성 API 구현 서버에서 받은 데이터 화면 출력 및 일정 변경(11월 10일 금요일 ⇒ 11월 15일 수요일 완성 목표) Response 출력하기 서버에 Request를 보낸 후 Response로 받은 것을 어떻게 처리해야 할지 감을 잡는데 꽤 오래 걸렸다. 원하는 Data를 받는 것 자체는 생각보다 쉽게 해결되었는데, 해당 Data를 화면에 출력하는 부분이 문제였다. 지금 생각해보면 괜히 어렵게 생각한 것 같아 어처구니가 없긴 한데.. ...

2023년 11월 10일 · 1 분 · 배준수

파이썬 알고리즘 : 게엠 맵 최단 거리

2023년 11월 10일 알고리즘 문제풀이 문제 게임 맵 최단 거리 난이도 Lv.2 코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 from collections import deque def solution(maps): answer = -1 n = len(maps) m = len(maps[0]) da = [1,-1,0,0] db = [0,0,1,-1] maps[0][0] = 0 q = deque() q.append([0,0,0]) while q: a,b,cnt = q.popleft() if a == n-1 and b == m-1: answer = cnt+1 print(a,b) return answer for i in range(4): na = a + da[i] nb = b + db[i] if na < 0 or na >= n or nb < 0 or nb >= m or not maps[na][nb]: continue q.append([na,nb,cnt+1]) maps[na][nb] = 0 return answer BFS를 이용해서 특정 조건(맵 상 벽이라던가, 맵 범위 밖이라던가, 방문한 곳이라던가)을 제외하여 최단 거리를 구하는 문제는 이제 충분히 적응됐다. ...

2023년 11월 10일 · 1 분 · 배준수