파이썬 알고리즘 : 크레인 인형뽑기 게임

2024년 2월 26일 알고리즘 문제풀이 문제 크레인 인형뽑기 게임 난이도 Lv.1 코드 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 29 30 def solution(board, moves): n = len(board) stk = [] answer = 0 # 열에서 가장 위에 있는 인형을 찾는 함수 # 찾으면 board에서 0으로 바꾸고 반환 def first_target(row): for i in range(n): if board[i][row]: result = board[i][row] board[i][row] = 0 break else: result = False return result # 인형이 있을 때, 이미 들어있는 인형과 동일하면 2개 제거, 아니면 추가 for x in moves: row = x-1 tmp = first_target(row) if tmp: if stk: if stk[-1] == tmp: stk.pop() answer += 2 continue stk.append(tmp) return answer

2024년 2월 26일 · 1 분 · 배준수

기술개발 초안 작성

Today I Learned 날짜 2024년 2월 23일 금요일 내용 내가 짤 코드 생각해보기 이전부터 항상 느끼던 갈증은 “내가 어떻게 코드를 작성할 것인가”를 미리 생각하지 못하는 것에서 발생했다. 직접 VS Code 에 입력할 때가 되어서야, ChatGPT에게 물어보고 나서야 내가 나아갈 방향을 안다는 것은 내가 개발자가 아닌 코드싸개에 불과하다는 걸 시사한다. 지난 1월 30일에 작성한 TIL에 있던 내용이다. 내가 뱉은 말을 지키기 위해, 실행에 옮겼다. 어제 개발자들끼리 회의도 있었기 때문에 충분히 가능하다고 생각했다. ...

2024년 2월 23일 · 2 분 · 배준수

파이썬 알고리즘 : 짝지어 제거하기

2024년 2월 23일 알고리즘 문제풀이 문제 짝지어 제거하기 난이도 Lv.2 코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 def solution(s): arr = list(s) stk = [] for i in range(len(s)): if not stk: stk.append(arr[i]) continue else: if stk[-1] == arr[i]: stk.pop() else: stk.append(arr[i]) if not stk: answer = 1 else: answer = 0 return answer

2024년 2월 23일 · 1 분 · 배준수

스프린트 전 개발팀 회의

Today I Learned 날짜 2024년 2월 22일 목요일 내용 3회의 다음 스프린트의 기획과 디자인이 어제 나왔다. 저번 스프린트에 대한 회고에서, 사전에 개발자들끼리 조율하지 않아 발생하는 문제들에 대해 팀 구성원 모두 인지하고 있었기 떄문에 약속한대로 프론트와 백 간의 주고 받는 데이터에 대해 이야기를 나누었다. 이 Try의 관찰자로서 어떻게 이야기를 주고 받을지에 대해 큰 틀을 짰다. 데이터 그 자체에 주목하며 각 페이지 별로 필요한 데이터를 확인한다. ex. 위젯의 생성 시간, 상품의 평점 등 ...

2024년 2월 22일 · 2 분 · 배준수

파이썬 알고리즘 : 정수 내림차순으로 배치하기

2024년 2월 22일 알고리즘 문제풀이 문제 정수 내림차순으로 배치하기 난이도 Lv.1 코드 1 2 3 4 5 6 7 def solution(n): arr = list(str(n)) map(int,arr) arr.sort(reverse=True) map(str,arr) answer = ''.join(arr) return int(answer)

2024년 2월 22일 · 1 분 · 배준수

기획서로 계획 작성

Today I Learned 날짜 2024년 2월 21일 수요일 내용 스프린트 파악하기 다음에 진행될 스프린트의 기획과 디자인이 나왔다. 완성본은 아니지만, 플로우차트와 PRD 문서를 참고하면서 내가 무엇을 어떻게 구현해야 할 지 파악했다. 여러 부분에서 어떻게 구현해야 할지 난감하기도 하고, 내가 잘 모르는 부분이라 걱정도 된다. 실시간 데이터를 반영해야 하는 부분이 있다. 최근 작성된 리뷰, 구매 등을 파악해야 하는데 이 부분이 많이 난감하다. 기존에 우리 서비스에도 있는 내용이긴 한데, 스크립트가 스토어의 테마에 추가되는 부분이라 어떻게 구현하는 건지 파악이 힘들다. 실시간 정보를 어디에 저장하고 어디서 받아오는지 빨리 파악해야 하는데.. 고객에게 성과를 보여주기 위해 클릭 수를 체크해야 한다. 이 부분도 어떻게 처리해야 하지… 장바구니도 Shopify 쪽에서 관리하는 걸로 알고 있는데 프론트에서 호출할 때마다 카운트해서 저장해야 되나..? 아직까지는 “잘” 구현하는 것보단 “어떻게” 구현해야 할 지가 더 큰 문제긴 하다. 기획 문서를 봐도 잘 떠오르지 않는다. 갈 길이 참 멀구만 ...

2024년 2월 21일 · 1 분 · 배준수

당연히 안되는 것 구별해내기

Today I Learned 날짜 2024년 2월 20일 화요일 내용 유지 보수 종료 유지 보수 스프린트가 종료됐다. 이전에 AI 서비스를 만드는 스프린트와 다음에 진행될 것의 사이에서 이전에 부족하거나 고쳐야 할 부분을 다듬었다. 개인적인 욕심으로는, AI 때 만든 기능들에 대한 테스트 코드를 추가하고 싶었는데 미루길 반복하다 시간이 부족해서 못했다. 주어진 시간이 없다기 보단, 내가 AI 시작하기 전에 완성했어야 했지만 그러지 못한 것들에 낭비된 시간, 이메일 CSS 한다고 날린 시간이 크다. 개인적으로 시간을 들여서라도 좀 만들어놔야겠다. ...

2024년 2월 20일 · 2 분 · 배준수

쿼리문에 join이 필요한 경우

Today I Learned 날짜 2024년 2월 19일 월요일 내용 SQL 쿼리문에서 Join 그동안 쿼라를 이용해 관계(relationship)를 맺고 있는 여러 데이터를 가져올때 joinedload를 사용했다. 예를 들어, shop_detail 테이블에 있는 필드 use_ai는 우리 서비스에서 AI 기능을 사용하는 지를 나타낸다. id가 shop_id로 일치하는 Shop을 불러올 때, shop_detail도 같이 가져오기 위해 쿼리문을 다음과 같이 작성할 수 있다. 1 2 stmt = select(models.Shop).options(joinedload(models.Shop.shop_detail).where(models.Shop.id == shop_id) result = db.execute(stmt).scalar_one_or_none() 이 떄, result는 [models.Shop](http://models.Shop) 형식이겠지만, shop_detail을 참조할 수 있다. print(result.shop_detail.use_review)와 같은 형식으로! ...

2024년 2월 19일 · 1 분 · 배준수

table만으로 Email html 만들기

Today I Learned 날짜 2024년 2월 16일 금요일 내용 Email Template를 깨달은 남자 난 더이상 Email에 담을 HTML을 만드는 게 두렵지 않다. 깨달아버렸기 때문이다. 2가지 과정에서 깨달음이 있었다. Div가 아닌 Table 이메일 서버가 HTML을 출력할 때 의도하지 않게 해석하는 경우가 많다. <head> 나 <body>를 읽지 않는 경우도 많고 <div>를 제대로 처리하지 않아 padding이나 margin이 엉망이 되기도 한다. 검색해보면 가장 많이 나오는 말은 <table>, <tr>, <td> 태그를 사용하라는 것. 이 태그는 테이블을 만드는데 사용되는데, tr은 table row의 약자로 행을 의미하고 td는 table data로 행 내에 들어갈 정보를 의미한다. 사실 가로(열)로 이해해도 무방하다. ...

2024년 2월 16일 · 4 분 · 배준수

공식적으로 불가능을 확인

Today I Learned 날짜 2024년 2월 15일 목요일 내용 앱을 삭제한 스토어의 데이터에 접근하는 법 은 없었다. Shopify partner에게 답변이 왔는데, webhook 시그널의 전달과 access token 무효화는 비동기적으로 발생해서 접근할 수 없다고 한다. 당장은 방법이 없어, 우리 서버 내 데이터만 삭제하는 걸로 Task를 종료했다. 아름다운 사람은 머문 자리도 아름답다는 누군가의 말처럼, 우리가 삭제된 이후에 우리의 흔적을 남기지 않도록 하고 싶은데 마땅한 방법이 떠오르지 않는다. 앱을 삭제하는건 Shopify 쪽에서 발생하는 일이라 우리가 제어할 수 있는 방법이 없다. 미래를 볼 순 없는 노릇이니 삭제할 만한 shop을 고를 수도 없고.. 삭제 이후에는 재설치하지 않는 한 access_token을 얻을 수 없는데 어찌해야 할까.. 짱구좀 굴려봐야겠다. ...

2024년 2월 15일 · 2 분 · 배준수