목록전체 글 (231)
나의 개발일지
schedule 모듈을 사용하면 원하는 시간, 주기마다 코드를 실행할 수 있다. 설치 : pip install schedule import schedule import time def start(): print("start function") # 10분마다 호출 schedule.every(10).minutes.do(start) # 1시간마다 호출 schedule.every().hour.do(start) # 매일 00시에 호출 schedule.every().day.at("00:00").do(start) # 5~10분 마다 수행 schedule.every(5).to(10).minutes.do(start) # 매주 월요일 수행 schedule.every().monday.do(start) # 매주 월요일 18:..
문제 : https://school.programmers.co.kr/learn/courses/30/lessons/49993 🔑 정규식(re), startswith() skill에 주어진 스킬을 제외한 다른 스킬들을 없애기 위해 정규식을 사용 skill = "CBD" 일 때 "[^C^B^D]" 이렇게 만들어서 re.sub에 사용 re.sub( "[^C^B^D]", "", "BACDE")를 사용하면 "BCD"가 남음 정규식을 통해 얻은 문자열은 startswith() 함수에 사용 skill.startswith(s) 문자열 skill이 문자열 s로 시작하는지 확인 (Boolean 반환) "CBD".startswith("BCD") → "CBD"는 "BCD"로 시작하지 않기 때문에 False "CBD".start..
문제 : https://school.programmers.co.kr/learn/courses/30/lessons/154539 🔑 스택 정답 리스트는 numbers의 길이만큼 -1로 초기화 스택에는 (인덱스, 값) 형태로 넣는다. 스택에 요소가 있고 현재 들어오는 수가 스택의 마지막 요소보다 크면 정답 리스트 업데이트하고 스택 마지막 요소 pop answer[stack[-1][0]] = numbers[i] while문으로 현재 들어오는 수보다 작은 값이 스택에 없을 때까지 반복함 def solution(numbers): answer = [-1] * len(numbers) stack = [] for i in range(len(numbers)): while stack and stack[-1][1] < numb..
문제 : https://school.programmers.co.kr/learn/courses/30/lessons/49994 🔑 좌표 크기 2배, 길에만 체크 10 X 10 좌표를 21 X 21 좌표로 만든다. 정 가운데서 출발하기 때문에 +1 을해서 정 가운데서 출발할 수 있도록 함 (10, 10) 따라서 이동도 2칸씩 한다. (좌표를 2배 늘렸으니까) 💡 하지만 이동 후에 체크를 이동한 자리에 하는 것이 아닌 이동한 길에 체크 ex) 오른쪽으로 간다면 실제 이동은 +2지만 체크는 +1에 같은 곳을 다른 길로는 갈 수 있기 때문 좌표 범위 제한도 잘해주면 끝 ✨ def solution(dirs): answer = 0 MAP = [[0] * 21 for _ in range(21)] x, y = 10, 10..
문제 : https://school.programmers.co.kr/learn/courses/30/lessons/12938# 🔑 몫과 나머지 먼저 s를 n으로 나눈 몫으로 리스트를 채움 n = 5, s = 199 일 때 [39, 39, 39, 39, 39] 만들어짐 합이 199가 되려면 4가 부족함 부족한 만큼 리스트의 뒤에서부터 1씩 나눠줌 (오름차순 정렬로 리턴해야 하기 때문) [39, 40, 40, 40, 40] 만들어짐 끝 ✨ def solution(n, s): answer = [] if n > s: return [-1] for i in range(n): answer.append(s // n) # 골고루 나누기 remain_n = s % n # 골고루 나누고 남는 숫자 for i in range(..
문제 : https://school.programmers.co.kr/learn/courses/30/lessons/84512 🔑 DFS로 완전 탐색 A ~ UUUUU까지 만들 수 있는 dfs 함수를 생성 원하는 단어를 찾을 때까지 answer 올리고 찾았으면 계속 리턴만해서 빠져나오기 def dfs(w, word, words): global answer, flag if word == w: flag = True return if len(w) != 5: for i in range(len(words)): if flag: return answer += 1 dfs(w+words[i], word, words) answer = 0 flag = False def solution(word): words = ['A', 'E..
문제 : https://school.programmers.co.kr/learn/courses/30/lessons/12927 🔑 최대 힙 works의 값들을 최대 힙으로 만든다. 최대 힙은 가장 큰 값이 가장 왼쪽에 있도록 한다. 최대 힙으로 만들려면 값들을 음수로 변경해서 힙에 추가하면 된다. works = [2, 4, 3] 일 때 이 값들을 음수로 바꿔서 힙에 넣으면 (heappush) [-4, -3, -2] 이렇게 가장 큰 값이 왼쪽에 있을 수 있다. heappop을 사용해서 가장 왼쪽 값을 빼낸 다음 1시간 작업한다. 4는 3이 돼야 하는데 현재 값은 -4로 되어있기 때문에 +1을 했다. 1시간 작업을 하고 빼낸 작업을 다시 힙에 넣는다. 이 작업을 n번 반복 후 야근 지수를 구하면 끝 ✨ from..
문제 : https://school.programmers.co.kr/learn/courses/30/lessons/131127 🔑 Counter 클래스 사용 내가 원하는 물건 : 개수 형태로 딕셔너리를 생성 i번째 날 ~ i+10일 까지 살 수 있는 물건을 Counter 클래스를 사용해 구한다. 1번에서 생성한 딕셔너리와 2번에서 생성된 딕셔너리가 같으면 answer += 1 from collections import Counter def solution(want, number, discount): answer = 0 want_counter = {} for i in range(len(want)): want_counter[want[i]] = number[i] # 사고싶은 물건 : 개수 for i in ran..