본문 바로가기

알고리즘29

[Python] 프로그래머스 - 메뉴 리뉴얼(재귀) ◈ 오류 정정 및 피드백 환영 코딩테스트 연습 - 메뉴 리뉴얼 레스토랑을 운영하던 스카피는 코로나19로 인한 불경기를 극복하고자 메뉴를 새로 구성하려고 고민하고 있습니다. 기존에는 단품으로만 제공하던 메뉴를 조합해서 코스요리 형태로 재구성해서 programmers.co.kr 🔎문제 분석 조합(combination)만 구현하면 풀 수 있는 간단한 문제이다. def combinations_scratch(l): if l: result = combinations_scratch(l[:-1]) return result + [c + [l[-1]] for c in result] else: return [[]] def solution(orders, course): result = [] for n in course: me.. 2022. 3. 20.
[Python] 프로그래머스 - 후보키 ◈ 오류 정정 및 피드백 환영 코딩테스트 연습 - 후보키 [["100","ryan","music","2"],["200","apeach","math","2"],["300","tube","computer","3"],["400","con","computer","4"],["500","muzi","music","3"],["600","apeach","music","2"]] 2 programmers.co.kr 🔎문제 분석 희희 🤦‍♀️유의 사항 희희 from collections import deque def solution(relation): n = len(relation[0]) res = [] def DFS(v, s): if v==m: res.append(a[:]) else: for i in range(s, n+.. 2022. 3. 19.
[Python] 프로그래머스 - [1차] 다트게임(Dictionary) ◈ 오류 정정 및 피드백 환영 코딩테스트 연습 - [1차] 다트 게임 programmers.co.kr 🔎문제 분석 문자열에 따라 연산이 달라지기 때문에 딕셔너리 형태로 연산자를 정리해두면 된다. 🤦‍♀️유의 사항 숫자가 10인 경우를 고려해 숫자인 문자열은 다음과 같이 모두 더해준다. num = "" for i in dartResult: if i.isdigit(): num += i def solution(dartResult): dic = {"S":1,"D":2,"T":3,"*":2,"#":-1} stack = [] num = "" for i in dartResult: if i.isdigit(): num += i elif i in ["S","D","T"]: stack.append(int(num)**dic[.. 2022. 3. 18.
[Python] 프로그래머스 - [3차] 파일명 정렬(정규식) ◈ 오류 정정 및 피드백 환영 코딩테스트 연습 - [3차] 파일명 정렬 파일명 정렬 세 차례의 코딩 테스트와 두 차례의 면접이라는 기나긴 블라인드 공채를 무사히 통과해 카카오에 입사한 무지는 파일 저장소 서버 관리를 맡게 되었다. 저장소 서버에는 프로그램 programmers.co.kr 🔎문제 분석 정규식을 활용해 간단하게 구현이 가능하다. 🤦‍♀️유의 사항 010과 10은 같은 값으로 정렬되기 때문에 int를 사용해 0만 제거하면 된다. import re def solution(files): answer = [] for file in files: f = file.upper() answer.append([file, re.match('[\D]+',f)[0], int(re.search('[\d]+',f)[0.. 2022. 3. 17.
[Python] 프로그래머스 - 매칭 점수(정규식) ◈ 오류 정정 및 피드백 환영 코딩테스트 연습 - 매칭 점수 매칭 점수 프렌즈 대학교 조교였던 제이지는 허드렛일만 시키는 네오 학과장님의 마수에서 벗어나, 카카오에 입사하게 되었다. 평소에 관심있어하던 검색에 마침 결원이 발생하여, 검색개발팀 programmers.co.kr 🔎문제 분석 기본 점수를 계산하기 위해서는 검색어를 단어 단위로 탐색해야 하는데 이는 정규식으로 접근하면 된다. re.findall(f'[a-zA-Z]+', 'abaa baba') # ['abaa', 'baba'] re.findall(f'[a-zA-Z]+', 'aba@aba 1aba') # ['aba', 'aba', 'aba'] 구분한 단어와 검색어를 대문자로 통일한 뒤에 서로 일치하는지 비교하면 된다. base = len(list(.. 2022. 3. 16.
[Python] 프로그래머스 - [3차] n진수 게임(재귀) ◈ 오류 정정 및 피드백 환영 코딩테스트 연습 - [3차] n진수 게임 N진수 게임 튜브가 활동하는 코딩 동아리에서는 전통적으로 해오는 게임이 있다. 이 게임은 여러 사람이 둥글게 앉아서 숫자를 하나씩 차례대로 말하는 게임인데, 규칙은 다음과 같다. 숫자를 0 programmers.co.kr 🔎문제 분석 n진법 구현은 이진법을 구현하는 방식과 동일하다. [Python] 프로그래머스 - [1차] 비밀지도(재귀) ◈ 오류 정정 및 피드백 환영 코딩테스트 연습 - [1차] 비밀지도 비밀지도 네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화 notepad-for-hp.tistory.com def num_to_n(res, num, n): q, r =.. 2022. 3. 15.
[Python] 프로그래머스 - [1차] 셔틀버스 ◈ 오류 정정 및 피드백 환영 코딩테스트 연습 - [1차] 셔틀버스 10 60 45 ["23:59","23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59"] "18:00" programmers.co.kr 🔎문제 분석 도착하는 버스에 탈 수 있는 사람을 계산해 자리가 남으면 해당 버스 도착 시각을 출력하고, 자리가 없다면 마지막으로 탄 사람보다 1분 빠른 시각을 출력하면 된다. # b: 버스 도착 시각 if cnt>=m: answer = timetable[i-1]-1 else: answer = b 우선 편의상 대기열 도착 시.. 2022. 3. 14.
[Python] 프로그래머스 - [3차] 압축 ◈ 오류 정정 및 피드백 환영 코딩테스트 연습 - [3차] 압축 TOBEORNOTTOBEORTOBEORNOT [20, 15, 2, 5, 15, 18, 14, 15, 20, 27, 29, 31, 36, 30, 32, 34] programmers.co.kr 🔎문제 분석 ASCII 코드를 활용하면 사전은 간단하게 구현할 수 있다. A부터 Z는 65부터 90에 해당한다. dic = dict(zip([chr(i) for i in range(65, 91)],list(range(1,27)))) 현재 입력이 2개 이상의 문자열이 될 수 있기 때문에 문장의 글자를 하나씩 인덱싱하면 안 된다. i = 0 while i 2022. 3. 13.
[Python] 프로그래머스 - [3차] 방금그곡 ◈ 오류 정정 및 피드백 환영 코딩테스트 연습 - [3차] 방금그곡 방금그곡 라디오를 자주 듣는 네오는 라디오에서 방금 나왔던 음악이 무슨 음악인지 궁금해질 때가 많다. 그럴 때 네오는 다음 포털의 '방금그곡' 서비스를 이용하곤 한다. 방금그곡에서는 TV, programmers.co.kr 🔎문제 분석 편의상 재생시간은 분 단위로 측정하고, #이 붙은 계이름을 구분해주기 위해 소문자로 변경한다. def str_to_min(st): h, m = st.split(":") return int(h)*60 + int(m) def trans(st): for i in ["A","C","D","F","G"]: st = st.replace(i+"#",i.lower()) return st for i in musicinfos.. 2022. 3. 12.