본문 바로가기

전체 글

[프로그래머스][level3] 합승 택시 요금 -python 문제 링크 https://programmers.co.kr/learn/courses/30/lessons/72413 코딩테스트 연습 - 합승 택시 요금 6 4 6 2 [[4, 1, 10], [3, 5, 24], [5, 6, 2], [3, 1, 41], [5, 1, 24], [4, 6, 50], [2, 4, 66], [2, 3, 22], [1, 6, 25]] 82 7 3 4 1 [[5, 7, 9], [4, 6, 4], [3, 6, 1], [3, 2, 3], [2, 1, 6]] 14 6 4 5 6 [[2,6,6], [6,3,7], [4,6,7], [6,5,11], [2,5,12], [5,3,20], [2,4 programmers.co.kr 풀이 다익스트라 알고리즘 사용 다익스트라 알고리즘 이란 ? 그래프에서 여.. 더보기
[프로그래머스][level3] 불량 사용자 -python 문제링크 https://programmers.co.kr/learn/courses/30/lessons/64064 코딩테스트 연습 - 불량 사용자 개발팀 내에서 이벤트 개발을 담당하고 있는 "무지"는 최근 진행된 카카오이모티콘 이벤트에 비정상적인 방법으로 당첨을 시도한 응모자들을 발견하였습니다. 이런 응모자들을 따로 모아 불량 programmers.co.kr 풀이 처음엔 조합을 사용해야하나 생각했지만, id 별로 구분이 안되므로 순열 사용 이 후 set으로 변환하여 가능한 조합 중복 제거해줌 from itertools import permutations def solution(user_id, banned_id): # 가능한 banned_id 조합 모두. 어떤 banned_id에 해당되는지에 따라 결과 달라지.. 더보기
[프로그래머스][level3] 다단계 칫솔 판매 - python 문제 링크 https://programmers.co.kr/learn/courses/30/lessons/77486 코딩테스트 연습 - 다단계 칫솔 판매 민호는 다단계 조직을 이용하여 칫솔을 판매하고 있습니다. 판매원이 칫솔을 판매하면 그 이익이 피라미드 조직을 타고 조금씩 분배되는 형태의 판매망입니다. 어느정도 판매가 이루어진 후, programmers.co.kr 문제 풀이 테스트 11, 12, 13번째에서 시간 초과 발생 -> pay가 0일 때 break하는 코드 추가하니 해결됨 # https://programmers.co.kr/learn/courses/30/lessons/77486 import math def solution(enroll, referral, seller, amount): answer =.. 더보기
[프로그래머스][level3] 2 x n 타일링 -python 문제 설명 가로 길이가 2이고 세로의 길이가 1인 직사각형모양의 타일이 있습니다. 이 직사각형 타일을 이용하여 세로의 길이가 2이고 가로의 길이가 n인 바닥을 가득 채우려고 합니다. 타일을 채울 때는 다음과 같이 2가지 방법이 있습니다. 타일을 가로로 배치 하는 경우 타일을 세로로 배치 하는 경우 예를들어서 n이 7인 직사각형은 다음과 같이 채울 수 있습니다. 직사각형의 가로의 길이 n이 매개변수로 주어질 때, 이 직사각형을 채우는 방법의 수를 return 하는 solution 함수를 완성해주세요. 제한 사항 가로의 길이 n은 60,000이하의 자연수 입니다. 경우의 수가 많아 질 수 있으므로, 경우의 수를 1,000,000,007으로 나눈 나머지를 return해주세요. 입출력 예 n result 4 5.. 더보기
[프로그래머스][level3] 이중우선순위큐 -python 문제 링크 https://programmers.co.kr/learn/courses/30/lessons/42628 코딩테스트 연습 - 이중우선순위큐 programmers.co.kr 풀이 deque 사용해서 품. 다른 사람들 풀이를 보니 heap을 사용하신 분들이 많았다. 나는 뭔가 deque가 익숙해서 그렇게 품 .. from collections import deque def solution(operations): answer = [] que = deque() for i in operations: # 첫 글자 I 이면 if i[0] == 'I': # 숫자 추가 que.append(int(i[2:])) # 큐가 비어있지 않고 elif que: # 최댓값 삭제 if i[0] == 'D' and int(i[2.. 더보기
[프로그래머스][level3] 보석 쇼핑 -python / 투 포인터 문제 설명 [본 문제는 정확성과 효율성 테스트 각각 점수가 있는 문제입니다.] 개발자 출신으로 세계 최고의 갑부가 된 어피치는 스트레스를 받을 때면 이를 풀기 위해 오프라인 매장에 쇼핑을 하러 가곤 합니다. 어피치는 쇼핑을 할 때면 매장 진열대의 특정 범위의 물건들을 모두 싹쓸이 구매하는 습관이 있습니다. 어느 날 스트레스를 풀기 위해 보석 매장에 쇼핑을 하러 간 어피치는 이전처럼 진열대의 특정 범위의 보석을 모두 구매하되 특별히 아래 목적을 달성하고 싶었습니다. 진열된 모든 종류의 보석을 적어도 1개 이상 포함하는 가장 짧은 구간을 찾아서 구매 예를 들어 아래 진열대는 4종류의 보석(RUBY, DIA, EMERALD, SAPPHIRE) 8개가 진열된 예시입니다. 진열대 번호12345678 보석 이름 D.. 더보기
[프로그래머스][level3] 순위 -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 # value가 set -> 중복 제거 winner_graph= defaultdict(set) loser_graph=defaultdict(set) for winner, loser in results: # 이긴 애들 winner_graph[winner].add(loser) # 진 애들 los.. 더보기
[프로그래머스][level3] 디스크 컨트롤러 -python 문제 설명 하드디스크는 한 번에 하나의 작업만 수행할 수 있습니다. 디스크 컨트롤러를 구현하는 방법은 여러 가지가 있습니다. 가장 일반적인 방법은 요청이 들어온 순서대로 처리하는 것입니다. 예를들어 - 0ms 시점에 3ms가 소요되는 A작업 요청 - 1ms 시점에 9ms가 소요되는 B작업 요청 - 2ms 시점에 6ms가 소요되는 C작업 요청 와 같은 요청이 들어왔습니다. 이를 그림으로 표현하면 아래와 같습니다. 한 번에 하나의 요청만을 수행할 수 있기 때문에 각각의 작업을 요청받은 순서대로 처리하면 다음과 같이 처리 됩니다. - A: 3ms 시점에 작업 완료 (요청에서 종료까지 : 3ms) - B: 1ms부터 대기하다가, 3ms 시점에 작업을 시작해서 12ms 시점에 작업 완료(요청에서 종료까지 : 11.. 더보기