Notion 게시글을 Velog로 배포 자동화 개발 1차 완료
추후에 사용을 편하게 하도록 패키지로 배포해서, 어디서나 사용할 수 있게 함.
그러나 지금 argparser
를 사용해서 settings.py 값을 채우게 했는데, 이를 컴퓨터 env 환경변수를 사용하도록 변경해야 함. (편의성 증대)
CLI (터미널 인터페이스)에서 Notion2Velog 동작하도록 설정 완료
코드 리팩토링
settings.py 변수 설정 완료
PYPI 계정 생성 및 패키지 배포 완료
개발 내용 정리 및 readme.md 작성
[**고객] 서비스 플로우
**마음에 드는 꽃집 서치 → 마음에 드는 상품 서치 → 장바구니 담기 → 결제 진행 → 이후 꽃집 사장이 수락하면 지정한 날짜에 픽업 or 거절하면 환불처리
[꽃집 사장] 서비스 플로우
첫 로그인 시 → 사업자 등록 → 가게 정보 설정 → 상품 설정
이후에 고객이 주문하면 → 주문 내역 확인 → 수락 및 거절
[고객 사이드 앱 기능 분석]
회원가입
이름 / 생년월일 / 핸드폰 번호(본인확인)
닉네임 / 아이디(이메일)
로그인
이메일 / 비밀번호 로그인
SNS 로그인 기능 (네이버/카카오/구글/애플)
홈화면
근처 꽃집 검색 기능
지도뷰(Map View) 기능 및 Marker 기능 (주변 꽃집 정보 보여줘야 함)
추천 기능
이벤트 베너
꽃집 상세페이지
가게 정보
상품 정보
리뷰 정보
장바구니 담기 / 바로 주문하기 (+ 픽업 날짜 설정)
예약페이지 (어느 플로우에 예약하기로 빠지는지 확인 필요)
- 예약자 / 픽업날짜 및 시간 / 가격 / 상품 종류
- 색상 / 목적 / 요구사항 등 입력
- <span style='color:red'>**가격도 입력??? - 고객이 정하는 게 맞나?**</span>
해당 페이지는 `꽃집 사장` 님이랑 인터랙션 일어나는 부분이 있으므로 추후에 좀 더 조사 필요
주로 채팅과 정해진 거절 사유 선택으로 이루어지는듯
결제 페이지
구매할 상품 정보 ( 예약자 / 상품명 / 픽업시간 )
카드결제 선택란
카카오페이 / 토스페이 / 네이버페이
최종 금액
SELECT PD.PRODUCT_CODE AS PRODUCT_CODE, SUM(OS.SALES_AMOUNT) * PD.PRICE AS SALES
FROM OFFLINE_SALE AS OS
LEFT JOIN PRODUCT AS PD ON OS.PRODUCT_ID = PD.PRODUCT_ID
GROUP BY PD.PRODUCT_CODE
ORDER BY SALES DESC, PRODUCT_CODE ASC
def solution(phone_book):
phone_dict = dict()
for phone in phone_book:
phone_dict[phone] = True
for phone in phone_book:
for i in range(1,len(phone)):
try:
if(phone_dict[phone[:i]]): return False
except KeyError:
pass
return True
import math
def solution(fees, records):
answer = []
min_time, min_fee, unit_time, unit_fee = fees
park_dict = dict()
for record in records:
time, car_number, is_enter = record.split(" ")
if car_number not in park_dict:
park_dict[car_number] = [time]
else:
park_dict[car_number].append(time)
for car_number in sorted(list(park_dict.keys())):
record = park_dict[car_number]
def cal_time_diff(time1, time2):
hour1,min1 = map(int,time1.split(":"))
hour2,min2 = map(int,time2.split(":"))
return (hour2*60 + min2) - (hour1*60 + min1)
def cal_park_fee(time):
if time <= min_time:
return min_fee
else:
return min_fee + unit_fee * math.ceil((time - min_time)/unit_time)
sum_park_time = 0
while(len(record) > 0):
if(len(record) == 1):
sum_park_time += cal_time_diff(record[0],"23:59")
record = []
else:
sum_park_time += cal_time_diff(record[0],record[1])
del record[:2]
answer.append(cal_park_fee(sum_park_time))
return answer
코딩테스트 연습 문제를 풀던 중에, 해시 테이블을 이용한 문제가 있었다.
처음엔 그냥 string
배열을 만들고 특정 키값이 있는지 없는지 파악하는 로직을 작성했고, 해당 로직은 문제는 없었지만 효율성 테스트를 통과하지 못했다.
알고보니, 배열 리스트
는 특정 원소를 찾기 위해 모든 원소를 순회해야하므로 시간복잡도는 O(N)이였다.
그러나 dictionary
구조는 특정 키 값을 찾는 데 모든 원소를 순회할 필요가 없어 O(1)이다.
dictionary
자료구조는 내부적으로 해시 테이블을 생성하고 해시 함수를 통해 나온 인덱스 값을 통해 값을 조회하는 구조이다.
즉, 직접적으로 메모리 주소를 계산해서 접근하는 방식이다!
⇒ 만약 비어있는 메모리 주소일 경우? KeyError 에러 반환!