일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 함수화
- 임시 변수
- 코딩테스트
- 가이드
- 탈출 조건
- 함수
- 대소 비교
- 부등호
- deque
- enumerate
- 중첩
- 중첩문
- 가독성
- 변수명
- 힙
- 파이썬
- John Sonmez
- ZIP
- permutations
- 중간 변수
- 매직 넘버
- 커리어
- min heap
- 프로그래머스
- 그리디
- 스택/큐
- 조합
- 2020 채용
- boolean
- max-heap
- Today
- Total
목록변수명 (10)
Better Code, Better Life
문제 풀이 people을 가벼운 순으로 sort 합니다. 이후 제일 무거운 사람을 태운 후, 제일 가벼운 사람을 태울 수 있으면 태웁니다. 모든 사람들이 탈 때까지 2번의 로직을 반복합니다. list 자료형의 경우 0번째 index pop의 비용이 O(n)이므로 deque자료형을 이용합니다. 클린 코드 작성법 문제 이해를 위한 적절한 변수명을 짓습니다. capacity, heaviest_person, lightest_person if capacity_left_for_lightest_person(people, capacity) 처럼 함수을 이용해 가독성을 높일 수 있씁니다. if 다음에 boolean 값을 return 하는 함수를 작성합니다. 값의 비교시 작은 값은 왼쪽, 큰 값은 오른쪽에 놓습니다. li..
문제 풀이 먼저 up, down으로 움직일 조이스틱 횟수를 구합니다. initial_codes 를 이름의 길이만큼 모두 65로 초기화합니다. ("A"의 유니코드값: 65) name_in_codes 에 이름의 유니코드값을 저장합니다. "A" 기준으로 이름을 완성하기 위해 필요한 up, down 횟수만을 구합니다. (get_up_down_shortest_moves) left, right으로 움직일 조이스틱 횟수를 구합니다. index_diffs: 이름에서 "A"가 아닌 index는 모두 방문해야 합니다. index_diffs: [0, 2, 5, 9], name_length: 10일때 총 7번으로 모두 방문 할 수 있습니다. (좌-우우우-우우우) 단순히 오른쪽으로만 가면 총 8번을 움직여야 합니다. (우우-우..

문제 풀이 먼저 던질 수 있는 모든 경우의 수를 만듭니다. get_candidates 그 다음 각각의 경우에 대해 주어진 결과(baseball)가 맞아떨어지는지 확인합니다. 하나라도 틀리면 그 후보는 넘어갑니다. check_candidate baseball에 대해 모두 통과시 가능한 답안이므로 answer_count값을 늘립니다. 클린 코드 작성법 코드 각각이 하나의 기능만 수행하도록 분리합니다. 123 ~ 987 까지 후보군을 만드는 함수 각 후보에 대해 baseball의 guess를 통과하는지 확인하는 함수 1개의 guess, 1개의 후보에 대해 서로 일치하는지 확인하는 함수 permutations에서 나오는 출력형태가 튜플인데 이를 문자로 전환해주는 함수 묶여진 자료형을 다룰 때, 각각에 변..

문제 풀이 문제 자체는 매우 간단합니다. 예시도 두 가지로 직관적입니다. 하지만 숫자 길이가 길어지면 시간 초과가 날 확률이 높습니다. 따라서 문제를 잘 이해하고 최적화할 부분을 찾는게 중요합니다. 풀이 과정 소수가 될만한 후보를 찾습니다. 완전 탐색이 여기서 쓰입니다. permutations 이 후보가 소수인지 확인합니다. 이 부분을 최적화해야 합니다!! 소수인지 판별하는 다양한 알고리즘을 구현해 이 부분만 수정합니다. 이런 기본적인 함수는 인터넷에 최적화 되어있는 코드가 많이 있습니다. 검색해서 활용합시다! 클린 코드 작성법 변수명을 고쳐 문제의 이해력을 높입니다. number_string 문제의 단계별로 함수화합니다. get_candidates check_prime 문제를 풀어나갈 때, 과정을 잘게..

문제 풀이 최대한 밀가루를 많이 공급해주는 해외 공장을 찾아야 합니다. 하지만 그 날까지 밀가루가 충분히 있어야 합니다. 버틸 수 있는 날 중에서 위 조건의 해외 공장을 찾아줍시다. 위 과정을 목표 수량에 달성할 때까지 반복합니다. 위 조건의 해외 공장을 찾으려면 max-heap 구조를 이용해야 합니다. 파이썬의 heapq 모듈은 기본적으로 min-heap이기 때문에 자료 값에 -1를 곱해주면 max-heap처럼 다룰 수 있습니다. 이후 최소값을 뽑으면 사실상 최대값이 뽑힙니다. 자료를 직접 다룰 때는 다시 -1를 곱해줍니다. ... supplies = flip(supplies) ... supply = supply_info[0]*(-1) 파이썬 heapq 모듈의 사용법은 help 키워드나 여기 링크를 참..

문제 풀이 제일 안 매운 두 음식을 뽑아서 섞습니다. 이 프로세스를 모든 음식이 일정 기준(K)을 넘을 때까지 반복합니다. 만약 위의 방법이 실패하면 -1이 답입니다. 제일 안 매운 음식을 반복적으로 추출해야 하기 때문에 힙 구조를 이용해야 합니다. 학교에서는 주로 max-heap 을 배웠을텐데 여기서는 min 값을 지속적으로 이용해야 하기 때문에 min-heap을 이용합니다. 파이썬의 heapq 모듈은 기본적으로 min-heap입니다. 사용법은 help 키워드나 여기 링크를 참조하세요! 클린 코드 작성법 이번 문제는 클린 코드를 작성하기가 힘들었습니다. 실력자분이 나타나서 한 수 가르쳐줬으면 합니다. check_conditions을 통해 break를 하나만 씁니다. 탈출 조건이 하나여야 while문을 ..

문제 풀이 prices의 왼쪽 price 부터 반복적으로 가격이 떨어지지 않은 기간을 구합니다. 적절히 get_non_decreasing_days 함수만을 구현하면 됩니다. deque 자료구조를 통해 첫 번째 원소를 추출해내는 작업을 수월하게 할 수 있습니다. 프린터 문제 해설 에서 deque 설명을 참조하세요! 클린 코드 작성법 함수의 이름으로 동사를 이용합니다. get_non_decreasing_days 변수명을 실제 문제와 대응되게 짓습니다. non_decreasing_days for 문에서의 임시 변수 또한 i, j 보다 반복 대상을 잘 나타낼 수 있는 이름을 짓습니다. other_price 해답 코드 from collections import deque def get_non_decreasing_..

문제 풀이 트럭이 진입할 때 걸리는 시간, 나갈 때 걸리는 시간이 헷갈리는 문제입니다. 예시 1번을 보면 0 ~ 2초에 건널 것 같은 트럭이 0 ~ 1초에는 진입하고, 1 ~ 3초까지 건넙니다. 이 점을 이해하고 문제를 풀어봅시다. 1초 단위로 업데이트를 합니다. 다리에 있는 트럭들 위치를 1만큼 이동시킵니다. 위치가 0이 된 트럭은 제거해줍니다. 만약 1, 2번 단계 이후에 weight_capacity 여유가 있다면 추가 시켜줍니다. [truck_weight, bridge_length]로 추가시킵니다. 추후에 다리 끝에 도달 했을 때 제거된 트럭 무게를 구할 수 있게 됩니다. deque 자료구조를 통해 첫 번째 원소를 추출해내는 작업을 수월하게 할 수 있습니다. 프린터 문제 해설 에서 deque 설명을..