파이썬 알고리즘 : 소수 만들기

2024년 5월 3일 알고리즘 문제풀이 문제 소수 만들기 난이도 Lv.1 코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 from itertools import combinations def solution(nums): answer = 0 board = [False for _ in range(3001)] board[2] = board[3] = True for num in range(4,3001): for i in range(2,num): if not num%i: break else: board[num] = True nCr = list(combinations(nums,3)) for i in nCr: if board[sum(i)]: answer += 1 return answer 나올 수 있는 모든 범위의 소수 여부를 판단한 후 문제를 풀었다. 이걸 에라토스테네스의 체라고 한단다. ...

2024년 5월 3일 · 1 분 · 배준수

이메일 템플릿 렌더링

Today I Learned 날짜 2024년 5월 2일 목요일 내용 실수 처리 몇가지 실수를 뿌려놓은게 있어서 열심히 메꾸었다. 가장 먼저, 코어스크립트와 앱블록을 활성화한 유저들을 탐색하는 기능을 고쳤다. 당연히 Dict 일거라 생각하고 처리한 부분에서, 뜬금없이 문자열이 튀어나와 오류가 나고있었다. if not isinstance(settings_data, dict): 를 추가해서 해결했다. 스프레드시트에 데이터가 올바르게 들어가지 않고 있었다. 각 유저들이 앱을 사용하는 상황을 저장하는 방식을 바꾸었는데 이 로직의 코드는 변경하지 않아 작동하지 않는 문제였다. 지난주 이메일 레거시 코드를 개선하고 테스트 하는 과정에서 수신 주소를 내 개인 메일로 바꾸어놨는데, 이 부분을 복구하지 않고 실서버 까지 올라가버렸다.. VOC가 나한테 와서 상당히 당황스러웠다. 메일 주소 바꾸는건 어렵지 않았지만 문제는 템플릿이 렌더링되지 않는 것이었다. ...

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

파이썬 알고리즘 : Build Array from Permutation

2024년 5월 2일 알고리즘 문제풀이 문제 Build Array from Permutation 난이도 Easy 코드 1 2 3 4 5 6 class Solution: def buildArray(self, nums: List[int]) -> List[int]: ans = [0 for _ in range(len(nums))] for i in range(len(nums)): ans[i] = nums[nums[i]] return ans

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

Microsoft AI Tour in Seoul 참여기

Today I Learned 날짜 2024년 4월 30일 화요일 내용 너그러운 샐러드랩의 관용덕에 양재에서 열린 마이크로소프트 AI 투어에 다녀왔습니다. 아침 8시 30분에 양재 aT센터에 도착했습니다. 회사 이름을 넣을줄은 몰랐어요. 아침을 주길래 먹었습니다. 가자마자 뭔가 주길래 봤더니 코파일럿 잘 쓰는 법입니다. 참고하세용 9시 30분부터 키노트세션이 열렸습니다. 한 4~5천명 온 것 같아요. 저 Scott Hanselman님은 마이크로소프트 개발자 커뮤니티의 부사장이십니다. 다행히 각 자리마다 동시통역 오디오가 제공되서 알아듣는데는 성공했습니다. 이 날(4월 30일)부터 코파일럿에 공식적으로 한국어가 지원된다면서 시연을 해주었지만, AI가 100% 헛소리를 해버리는 바람에 대환장파티긴 했습니다. Copilot in Microsoft 365가 공식적으로 한국어 지원을 한다고 하니 엑셀이나 워드, 파포 작업하실 때 쓰시면 좋겠습니다. ...

2024년 4월 30일 · 4 분 · 배준수

파이썬 알고리즘 : 코코넛 그 두 번째 이야기

2024년 4월 30일 알고리즘 문제풀이 문제 코코넛 그 두 번째 이야기 난이도 실버 5 코드 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 import sys def check(num: int): cnt = 1 for i in range(2,num): tmp = num for _ in range(i): tmp -= 1 tmp *= (i-1) if not tmp%i: tmp //= i else: break else: cnt = i return cnt while True: n = int(sys.stdin.readline()) if n == -1: break tmp = check(n) if tmp < 2: print(f"{n} coconuts, no solution") else: print(f"{n} coconuts, {tmp} people and 1 monkey") 문제에서 처리하는 순서대로 그대로 구현했다. 약간 헷갈렸던건, 예시에선 5명이였는데 인원수대로 처리하면 된다는 걸 생각못하고 무조건 5명이라 생각했다.. ...

2024년 4월 30일 · 1 분 · 배준수

쇼피파이 앱 결제방식

Today I Learned 날짜 2024년 4월 29일 월요일 내용 데모스토어의 결제 고객들에게 우리 서비스의 사용 예시를 보여주기 위한 데모버전 스토어가 있다. 이 스토어에선 당연히 우리 서비스에서 유료 플랜을 사용할 때만 접근 가능한 기능들도 보여준다. 따라서 구독 중으로 처리해야 하는데, 결제는 되면 안된다. 굳이 우리가 쓰는 서비스를 결제처리할 이유가 없다. 결제 관련된 로직은 처음 들여다봤는데, 예상과 다르게 처리가 쇼피파이쪽에서 이루어지고 있었다. app_subscribtion으로 처리되고 있었는데, 우리가 결제 간격과 가격 등을 설정하면 됐다. 무료 체험기간, 각 플랜의 이름 등등.. 쇼피파이는 이 설정에 따라 알맞은 때에 결제를 하고 웹훅으로 우리에게 보내준다. 우리가 저장한 데이터는 쇼피파이에 요청으로 보낸 설정과 동일하게 되어있다. 쇼피파이에 요청을 보내고(1) 그대로 우리 서버에도 저장해두는 것. 핵심은, 우리 데이터베이스를 이용해 결제를 처리하는게 아니라는 것과 결국 결제는 쇼피파이쪽에 보내진 데이터에 따라 이뤄진다는 것이다. ...

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

파이썬 알고리즘 : 메뉴 리뉴얼

2024년 4월 29일 알고리즘 문제풀이 문제 메뉴 리뉴얼 난이도 Lv. 2 코드 1차시도 85/100 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 def solution(orders, course): answer = [] arr_set = set() for i in range(len(orders)): for j in range(len(orders[i])): arr_set.add(orders[i][j]) orders[i] = set(orders[i]) for n in course: arr = [] cnt = 2 nCr = itertools.combinations(arr_set,n) for x in list(nCr): tmp = 0 for p in orders: if set(x) <= p: tmp += 1 k = sorted(x) word = ''.join(k) if tmp > cnt: cnt = tmp arr = [word] elif tmp == cnt: arr.append(word) answer += arr answer.sort() return answer 반복문을 남발하여서 그런지, 4개 정도의 테스트케이스가 시간초과로 통과하지 못했다. ...

2024년 4월 29일 · 1 분 · 배준수

더미 리뷰가 생성안되는 이슈 처리

Today I Learned 날짜 2024년 4월 26일 금요일 내용 더미리뷰 프로덕트 리뷰 서비스에 처음 가입하는 스토어에게 더미 리뷰를 생성해준다. 리뷰가 있어야 위젯을 어떻게 이용할 수 있는지 확실히 알 수 있기 때문이다. 최근 가입한 스토어 몇개에 더미리뷰가 생성되지 않는 문제가 발견됐다. 관련 로직을 살펴보았다. 처음 서비스에 가입하여, 샵과 관련된 데이터를 생성할 때 리뷰서버로 요청을 보내 더미 리뷰를 만들어달라는 요청을 보낸다. 이 요청의 결과는 boolean 값으로 반환되는데 True면 샵 데이터에 check_demo_review 가 False값으로 저장된다. 문제가 된 샵들은 모두 True로 저장되어 있었다. 만약 요청이 잘못되었더라면, elastic apm에 에러나 로그가 남았을텐데 그렇진 않았다. 나는 요청자체는 작동하지만 응답으로 False값이 오는 것 같다고 예상했다. ...

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

파이썬 알고리즘 : 기능개발

2024년 4월 26일 알고리즘 문제풀이 문제 기능개발 난이도 Lv. 2 코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 def solution(progresses, speeds): answer = [] idx = 0 while idx < len(progresses): cnt = 0 for i in range(len(progresses)): progresses[i] += speeds[i] while idx < len(progresses): if progresses[idx] >= 100: idx += 1 cnt += 1 else: break if cnt: answer.append(cnt) return answer 가장 앞에 있는 기능이 100이 될때까지 모든 값들의 크기를 늘렸다. 이후 첫번 째 기능 개발이 완료되었을 때 100이 넘는 것들을 같이 처리해주고 갯수를 세주었다. ...

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

shein 임포터 실패

Today I Learned 날짜 2024년 4월 25일 목요일 내용 Shein이 싫다. 결국 Shein 임포터 태스크는 잠정 보류됐다. 현재 일정상으론 내가 완성할 수 없기 때문이다. 그 이유라고 한다면 아직 프론트 작업은 시작조차 안한 상태고 크롬 드라이버 떄문인지, Shein에서 사람 탐색 기능때문인지 간헐적으로 요청이 실패하고 있으며 이 부분으로 인해 서비스가 멈추는걸 방지하고자 아마존 람다나 구글 쪽에 함수를 올리기엔 시간이 부족하다. 아쉽기도 하고 자존심도 상하고 하.. 예외처리 모든 앱블록을 조회하는 함수가 실서버에서 제대로 작동하지 않았었다. 원인은 ECS에 태스크를 등록할 때 보안그룹을 제대로 설정하지 않아 RDS에 접근하지 못한 것이 원인이었다. 이 부분을 해결하고 나서는, 여러 에러들이 떴다. Key Error와 메인 테마를 찾지 못해 변수가 지정되지 않아 생기는 오류들이었다. 쇼피파이 API로 가져오는 모든 테마의 형식을 내가 확인할 수 없으니, 원하는 형식이 아닐경우 예외처리하고 넘어가는 코드를 추가했다. ...

2024년 4월 25일 · 1 분 · 배준수