파이썬 알고리즘 : 바탕화면 정리

2023년 12월 15일 알고리즘 문제풀이 문제 바탕화면 정리 난이도 Lv.1 코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 def solution(wallpaper): answer = [] files_x = [] files_y = [] n = len(wallpaper) m = len(wallpaper[0]) for i in range(n): for j in range(m): if wallpaper[i][j] == '#': files_x.append(i) files_y.append(j) answer.append(min(files_x)) answer.append(min(files_y)) answer.append(max(files_x)+1) answer.append(max(files_y)+1) return answer 처음엔 보고 조금 겁먹었지만 의외로 한번에 풀려버렸다. 존재하는 파일들을 모두 포함하는 드래그 중 가장 거리가 짧은 것을 찾기 위해 DFS나 BFS를 이용해야하나? 라는 생각을 했었다. 하지만 결국 존재하는 파일들의 x 좌표 값중 최솟값과 최댓값, y 좌표 중 최솟값과 최댓값만 찾으면 해결되는 문제였다. 조금 유의할 것은, 최댓값의 좌표에는 +1을 해주어야 한다. 파일의 좌측 상단 모서리를 기준으로하기 때문에 파일을 포함시키기 위해선 파일의 우측 하단 모서리까지 포함해야 한다. ...

2023년 12월 15일 · 1 분 · 배준수

파이썬 알고리즘 : 나머지가 1이 되는 수 찾기

2023년 12월 14일 알고리즘 문제풀이 문제 나머지가 1이 되는 수 찾기 난이도 Lv.1 코드 1 2 3 4 5 def solution(n): answer = 0 for i in range(2,n): if not (n-1)%i: return i

2023년 12월 14일 · 1 분 · 배준수

프론트 쫄보

Today I Learned 날짜 2023년 12월 14일 목요일 내용 테스트 서버에 데모버전 어드민 페이지 기능이 배포되었다. 환경변수 이전 TIL에서도 언급했듯, 유저에게 체험할 기회를 줄 데모 쇼핑몰과 데모 어드민 사이트는 우리가 환경변수로 계정 정보를 설정해야 했다. 이 계정 정보가 Shopify인지, 알파리뷰인지가 헷갈렸다. local에서 입력했던 정보로 알파리뷰와 Shopify 에서 각각 로그인했을 때, Shopify에서만 로그인이 되길래 Shopify 계정 정보라고 생각했다. 그런데, “우리가 Shopify 계정을 검증할 수 없는데 왜 받아야 하는가?”에 대해 대답할 수 없었다. 관련 코드를 열심히 찾다가 내가 간과했던 사실을 깨달았다. 데모버전 로그인에서는 비밀번호에 대한 검증 로직을 지웠다! 계정 정보를 우리가 설정한다는 이유로 지웠던 기억이 이제야 났다. 내가 테스트 했던 계정은 같은 ID로 알파리뷰와 Shopify에 모두 가입되어있다보니 헷갈렸던 문제였다. ...

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

이메일 송신 관련 로직

Today I Learned 날짜 2023년 12월 14일 수요일 내용 데모버전 어드민 페이지 생성과 관련된 PR의 머지를 기다리던 중, 새로운 Task를 받아 파악하고 있었다. Notification Email Activation 문제 인지 우리 서비스에선 소비자에게 보내는 메일이 다양한데, 이 중 하나가 무언가 통지하는 이메일이다. 3가지로 분류되는데, 회원이 아닌 사람이 작성한 리뷰에 인증(Verification)을 요구하기 위해 보내는 메일이 그 중 하나이다. 다른 2가지와는 다르게 이 기능에만 활성화(activation) 조절 기능이 없는 상황이라 만들어야 한다. 여기에, 활성화 조절 시 현재 발송될 예정인 메일들에 대한 조치를 묻는 과정도 추가해야 한다. ...

2023년 12월 13일 · 2 분 · 배준수

Session 이용하기

Today I Learned 날짜 2023년 12월 12일 화요일 내용 Session 현재까지 데모버전으로 로그인을 한다는 것은 우리가 원하는 계정(데모 스토어를 위한 계정)에 자동으로 로그인 해주는 것 외에는 딱히 차이가 없었다. 해당 스토어를 체험을 위해 잘 구성하기만 하면 되겠다고 생각했다. 하지만 어드민 페이지에서 기타 store나 account에 대한 setting을 변경할 수 있다는 문제를 인지했다. 꼭 critical 하지 않은 정보들도 있겠지만, 쇼핑몰의 위젯이나 리뷰 관련된 컨텐츠들만 제공해야할 데모 버전이기 떄문에 불필요한 수정을 방지하는 것이 필요하다고 생각했다. 내가 탐색해본 결과, 알파리뷰 어드민 페이지에서 Settings에 들어가는 버튼은 2곳에 있다. 좌 하단과 우측 상단 user 아이콘을 클릭하면 나타나는 버튼. 데모버전에서는, 이 둘을 무력화해야했다. ...

2023년 12월 12일 · 2 분 · 배준수

파이썬 알고리즘 : 멀리 뛰기

2023년 12월 12일 알고리즘 문제풀이 문제 멀리뛰기 난이도 Lv.2 코드 1 2 3 4 5 6 7 8 9 10 11 12 def solution(n): answer = 0 dp = [0 for _ in range(n+1)] for i in range(1,n+1): if i == 1: dp[i] = 1 elif i == 2: dp[i] = 2 else: dp[i] = (dp[i-1] + dp[i-2])%1234567 answer = dp[n] return answer n번째 칸은 ...

2023년 12월 12일 · 1 분 · 배준수

데모 사이트 제작

Today I Learned 날짜 2023년 12월 11일 월요일 내용 구현 방향 데모용 어드민 페이지를 들어갈 때 로그인이 없어야 한다. 우리 서비스를 경험해 보고 싶은 사람에게 제공되는 기능이기 때문이다. 그 외의 것들은 우리 서비스와 동일해야 한다. 따라서 특정 쇼핑몰을 데모용 쇼핑몰로 만들고, 데모 로그인은 그 쇼핑몰로 접속하는 것을 의미한다고 판단했다. 로그인 로직을 아예 없앨지, 서버가 알아서 처리해주도록 할지가 고민되었다. 우선 알파리뷰 어드민 페이지로 접속하는 로직을 파악하기로 했다. 간단히 말하면, Shopify에서 unique 하게 설정하는 여러 값들이 존재한다. 내가 데모 로그인을 요청하는 유저의 verification을 대신 해주기엔 너무 복잡했다.. 따라서 기존 유저가 해야할 일을 내가 대신하는 방향으로 계획을 잡았다. ...

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

파이썬 알고리즘 : 땅따먹기

2023년 12월 11일 알고리즘 문제풀이 문제 땅따먹기 난이도 Lv.2 코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 def solution(land): n = len(land) answer = 0 dp = [[0 for _ in range(4)] for _ in range(n)] dp[0] = land[0] def check(next_row,next_col): arr = [] for i in range(4): if i == next_col: continue arr.append(dp[next_row-1][i]) return max(arr) x = 1 while x < n: for i in range(4): dp[x][i] = check(x,i) + land[x][i] x += 1 answer = max(dp[-1]) return answer 각 행에는 4개의 열이 있다. 각 열에 올 수 있는 방법의 경우는 3가지이다. 예를 들어 2행 0열에 오는 방법은 2행 1열, 2행 2열, 2행 3열에서 오는 것이다. 이러한 원리를 바탕으로 DP를 설정했다. ...

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

네번째 테스크 : 체험판 만들기

Today I Learned 날짜 2023년 12월 8일 금요일 내용 새로운 Task를 시작했다. 데모 사이트 고객들이 알파리뷰를 체험해볼 수 있도록 데모 쇼핑몰과 그 관리 페이지를 만들기 시작했다. 기존 어드민페이지는 로그인이 필요한데, 알아서 데모를 위한 계정으로 로그인하도록 구현할 예정이다. 기존에 있는 Shopify 계정에 데모용 쇼핑몰을 추가하여 설정하려고 했는데, 생각해보니 알파리뷰에는 계정에 속해있는 다른 쇼핑몰로 이동할 수 있는 기능이 있다. 따라서 고객이 다른 페이지에 접근할 수 있다는 위험성이 존재했다. 따라서 새로운 구글 계정과 shopify 계정을 만들고 여기에는 데모용 쇼핑몰만 설치할 예정이다. 이번 Task의 핵심 목표는 2가지 정도로 추려진다. ...

2023년 12월 8일 · 1 분 · 배준수

파이썬 알고리즘 : 로또의 최고 순위와 최저 순위

2023년 12월 08일 알고리즘 문제풀이 문제 로또의 최고 순위와 최저 순위 난이도 Lv.1 코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 def solution(lottos, win_nums): def translate(p): if p >=2: return 7-p else: return 6 answer = [] cnt = 0 unknown = 0 for num in lottos: if not num: unknown += 1 continue if num in win_nums: cnt += 1 continue max_match = cnt + unknown min_match = cnt answer.append(translate(max_match)) answer.append(translate(min_match)) return answer 확실한 것을 통해 최저 순위를 확정지을 수 있고 정해지지 않은 수가 모두 맞는다고 가정하면 최고 순위도 알 수 있다. ...

2023년 12월 8일 · 1 분 · 배준수