알고리즘/프로그래머스문제풀이 69

[Python/프로그래머스]메뉴 리뉴얼

https://programmers.co.kr/learn/courses/30/lessons/72411 코딩테스트 연습 - 메뉴 리뉴얼 레스토랑을 운영하던 스카피는 코로나19로 인한 불경기를 극복하고자 메뉴를 새로 구성하려고 고민하고 있습니다. 기존에는 단품으로만 제공하던 메뉴를 조합해서 코스요리 형태로 재구성해서 programmers.co.kr 문제 핵심!!! 1. 각 course별로 가장 많이 함께 주문된 메뉴 구성이 반환되는데 만약 여러개라면 모두 배열에 담는다. 그러니까 2개로 묶어진 요리들이 있다면 그 중에서 가장 많이 함께 주문된 메뉴구성으로 return 한다. 만약에 가장 많이 함께 주문된 메뉴 구성이 여러개면 모두 return!! 2. orders는 sort되지않았다. -> sort 해주어야..

[Python/프로그래머스] 숫자 문자열과 영단어 (Level 1)

https://programmers.co.kr/learn/courses/30/lessons/81301?language=python3 코딩테스트 연습 - 숫자 문자열과 영단어 네오와 프로도가 숫자놀이를 하고 있습니다. 네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게임입니다. 다음은 숫자의 일부 자 programmers.co.kr 코드 : def solution(s): answer = "" en = ['zero','one','two','three','four','five','six','seven','eight','nine'] for idx, num in enumerate(en) : if num in s : s = s.replace(num,str(i..

[Python/프로그래머스]오픈채팅방

https://programmers.co.kr/learn/courses/30/lessons/42888 코딩테스트 연습 - 오픈채팅방 오픈채팅방 카카오톡 오픈채팅방에서는 친구가 아닌 사람들과 대화를 할 수 있는데, 본래 닉네임이 아닌 가상의 닉네임을 사용하여 채팅방에 들어갈 수 있다. 신입사원인 김크루는 카카오톡 오 programmers.co.kr 코드 : def solution(record): answer = [] userDB = {} actions = [] for event in record : info = event.split() action,userid = info[0],info[1] if action in ("Enter", "Change") : nickname = info[2] userDB[use..

[Python/프로그래머스]문자열 압축

https://programmers.co.kr/learn/courses/30/lessons/60057 코딩테스트 연습 - 문자열 압축 데이터 처리 전문가가 되고 싶은 "어피치"는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문 programmers.co.kr 새롭게 알게된것 : 문자열에서 범위를 넘어서는 슬라이싱을 해도 에러가 안난다. 그저 있는 만큼 잘 잘릴 뿐 for문이 len(s)+i까지인 이유는 끝까지 압축이 가능할 경우 b에 추가가 안되고 cnt만 올라가기 때문에 +i를 해주어 현재 있는 cnt와 tmp를 b에 추가하기 위해서이다. 코드 : def solution(s): result=[] # 한글자 ..

[Python/프로그래머스]신규아이디추천_구현

https://programmers.co.kr/learn/courses/30/lessons/72410 코딩테스트 연습 - 신규 아이디 추천 카카오에 입사한 신입 개발자 네오는 "카카오계정개발팀"에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. "네오"에게 주어진 첫 업무는 새로 programmers.co.kr 이것이 바로 구현..! 문제에 나와있는 조건들 그대로 다 구현하면 된다. 풀다보면 재밌다. 코드 : def solution(new_id): answer = '' # 1 new_id = new_id.lower() # 2 for c in new_id : if c.isalpha() or c.isdigit() or c in ['-','_','.'] : answe..

[Python/프로그래머스]신고 결과 받기

https://programmers.co.kr/learn/courses/30/lessons/92334 코딩테스트 연습 - 신고 결과 받기 문제 설명 신입사원 무지는 게시판 불량 이용자를 신고하고 처리 결과를 메일로 발송하는 시스템을 개발하려 합니다. 무지가 개발하려는 시스템은 다음과 같습니다. 각 유저는 한 번에 한 명의 programmers.co.kr 코드 : (defaultdict 사용) from collections import defaultdict def solution(id_list, report, k): answer = [] # 중복 신고 제거 report = list(set(report)) user = defaultdict(set) cnt = defaultdict(int) for r in r..

[Python/프로그래머스]순위_그래프

https://programmers.co.kr/learn/courses/30/lessons/49191 코딩테스트 연습 - 순위 5 [[4, 3], [4, 2], [3, 2], [1, 2], [2, 5]] 2 programmers.co.kr 코드 : from collections import defaultdict def solution(n, results): answer = 0 win_graph = defaultdict(set) # 이긴 선수 lose_graph = defaultdict(set) # 진 선수 for winner, loser in results : win_graph[loser].add(winner) lose_graph[winner].add(loser) for i in range(1,n+1) ..

[Python/프로그래머스] 소수 찾기_완탐

https://programmers.co.kr/learn/courses/30/lessons/42839 코딩테스트 연습 - 소수 찾기 한자리 숫자가 적힌 종이 조각이 흩어져있습니다. 흩어진 종이 조각을 붙여 소수를 몇 개 만들 수 있는지 알아내려 합니다. 각 종이 조각에 적힌 숫자가 적힌 문자열 numbers가 주어졌을 때, 종이 programmers.co.kr 코드 : from itertools import permutations # 소수 판별 def is_prime_number(x) : if x

[Python/프로그래머스]모의고사_완탐

https://programmers.co.kr/learn/courses/30/lessons/42840 코딩테스트 연습 - 모의고사 수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는 programmers.co.kr 코드 : def solution(answers): answer = [] supo1 = [1,2,3,4,5] supo2 = [2,1,2,3,2,4,2,5] supo3 = [3,3,1,1,2,2,4,4,5,5] cnt = [0,0,0] for i in range(len(answers)) : if answers[i] == supo1[i%5] : cnt[0] +=1 i..

[Python/프로그래머스]단속 카메라_Greedy(그리디)

https://programmers.co.kr/learn/courses/30/lessons/42884 코딩테스트 연습 - 단속카메라 [[-20,-15], [-14,-5], [-18,-13], [-5,-3]] 2 programmers.co.kr 1. 빨리 끝나는 순으로 정렬한다. 2. 카메라를 가장 처음에 둔다. 3. 구간 시작보다 카메라가 이전에 있다면 3-1. 끝나는 곳에 카메라를 설치한다. 코드 : def solution(routes): answer = 0 routes.sort(key = lambda x : x[1]) # 빨리 끝나는 순으로 정렬 camera = -30001 for route in routes : if camera < route[0] : # 시작위치보다 전에 카메라가 있다면 answe..