일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 깊게 생각해보기
- 객체지향패러다임
- 백준
- 검색어 추천
- 쿠키
- 이분탐색
- 레디스 동시성
- 카카오
- 트랜잭샨
- 알람 시스템
- spring event
- 완전탐색
- 누적합
- branch 전략
- BFS
- 숫자 블록
- 결제서비스
- prg 패턴
- 코드 계약
- piplining
- 수신자 대상 다르게
- 구현
- docker
- gRPC
- AWS
- 셀러리
- 좋은 코드 나쁜 코드
- jwt 표준
- 프로그래머스
- 디버깅
- Today
- Total
목록구현 (4)
코딩관계론
문제 이해하기 선영이라는 친구가 새로운 함수를 만들었는데, 해당 함수는 "R"과 D로만 이루어져있다.R은 reverse고 d는 delete다. 즉 R을 만나면 배열을 뒤집어야 하고, D를 만나면 해당 배열에서 젤 처음 숫자를 삭제해야한다.문제 해결 방법 설명하기1. R을 만나면 배열을 역순으로 변경해야할까?그렇다 R을 만날 때 마다 매번 배열을 역순으로 변경한다면 시간초과가 나타난다. 따라서 우리는 배열이 뒤집어 졌다는 것을 기억하고, 실제로 연산은 수행하지 말아야 한다. for f in funcStr: if f == "R": direction = not direction 2. D를 만나면 배열에서 삭제를 진행해야 할까?D의 연산의 경우 실제로 수행해도 상관은 없다 ..
문제 이해하기케이크를 잘라서 토핑을 공평하게 나눌 수 있는 가짓수 방법을 찾는 문제였다. 문제 해결 방법 설명하기1. 케이크를 나누기 전 토핑의 가짓수를 계산합니다 for i in topping: if not i in topping_right.keys(): topping_right[i] = 1 else: topping_right[i] += 1 2.토핑을 하나씩 제거하면서 공평하게 나눠지는지를 계산합니다. for i in topping: if len(topping_left.keys()) == len(topping_right.keys()): answer += 1 if ..
아이디어 도출 방법 user_id가 최대 8개 임으로 조합을 구성해도 8 * 7 * 6이 최대로 나온다. 따라서 permutations을 사용해 나올 수 있는 모든 순열을 구성한다. 생성된 조합에서 해당 아이디가 banned_id에 대응되는지 확인한 후 중복을 확인한 후 list에 넣어주면 된다. 중복을 확인하기(순서가 상관없기 때문임) 위해서 순열에서 만든 후보 리스트를 set으로 변환하면 리스트가 정렬된 형식으로 나오게 된다. 예를 들면 (c, d, a) -> set(a, b, c)의 형식이 된다. 따라서 후보 값들의 중복을 제거할 수 있다. 최종 결과 from itertools import permutations def validate(user, ban): if len(user) != len(ban..
아이디어 도출 방법 1. 먼저 방향성, 최단 거리등의 키워드를 통해서 BFS 탐색이 떠올랐다. 하지만 이동 타입이 두 개라는 점이 생각을 어지럽게 했다. 언제는 cntrl 키를 눌러서 이동해야 하고, 언제는 한 칸만 이동하면 될까 -> 결국 4*4의 맵임으로 완전 탐색으로 진행하기로 했다. 2. 같은 카드가 두 개 있는데 무엇부터 시작해야 할까? (A:어파치 카드1, A1:어파치 카드2) 처음에는 그리디 하게 X- > A와 X -> A1 비용 중 싼 이동 가격으로 완전 탐색을 진행했다. 하지만 틀렸다. 그리디는 최적이 아니다. 따라서 모든 순서에서 시작해야 한다. X -> A -> A1로 가는 것과 X -> A1-> A로 가는 것은 종료 위치가 달라지기에 결과 값에 영향을 미칠 수 있다. 아이디어는 어렵..