목록Development/Algorithm & Coding Test (189)
컴공생의 다이어리
[프로그래머스] 다리를 지나는 트럭 - 파이썬(Python) def solution(bridge_length, weight, truck_weights): on_bridge = [0] * bridge_length answer = 0 while on_bridge: answer += 1 on_bridge.pop(0) if truck_weights: if sum(on_bridge) + truck_weights[0]
[프로그래머스] 프린터 - 파이썬(Python) def solution(priorities, location): priorities = [(v, idx) for idx, v in enumerate(priorities)] count = 0 while True: if priorities[0][0] == max(priorities)[0]: count += 1 if priorities[0][1] == location: break priorities.pop(0) else: priorities.append(priorities.pop(0)) return count https://programmers.co.kr/learn/courses/30/lessons/42587 코딩테스트 연습 - 프린터 일반적인 프린터는 인쇄 요..
[프로그래머스] 기능개발 - 파이썬(Python) import math def solution(progresses, speeds): answer = [] progress_day = [math.ceil((100 - x) / y) for x, y in zip(progresses, speeds)] count = 0 for i in progress_day: if i > count: answer.append(1) count = i else: answer[-1] += 1 return answer https://programmers.co.kr/learn/courses/30/lessons/42586 코딩테스트 연습 - 기능개발 프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비..
[프로그래머스] 베스트앨범 - 파이썬(Python) from collections import defaultdict def solution(genres, plays): answer = [] G = defaultdict(int) detail = defaultdict(list) for idx, [g, p] in enumerate(zip(genres, plays)): G[g] += p detail[g].append((p, idx)) for g, _ in sorted(G.items(), key=lambda x: -x[1]): for _, i in sorted(detail[g], key=lambda x: -x[0])[:2]: answer.append(i) return answer 혹은 from collection..
[프로그래머스] 위장 - 파이썬(Python) from collections import defaultdict def solution(clothes): d = defaultdict(int) for n, t in clothes: d[t] += 1 answer = 1 for i in d.values(): answer *= (i + 1) return answer - 1 특정 종류의 옷을 안입는 경우를 +1로 추가해주고 난 뒤, 맨 마지막에 모두 안입은 경우를 빼줌 https://programmers.co.kr/learn/courses/30/lessons/42578 코딩테스트 연습 - 위장 programmers.co.kr
[프로그래머스] 전화번호 목록 - 파이썬(Python) def solution(phone_book): phone_book.sort() for p1, p2 in zip(phone_book, phone_book[1:]): if p2.startswith(p1): return False return True https://programmers.co.kr/learn/courses/30/lessons/42577 코딩테스트 연습 - 전화번호 목록 전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조 programmers.co.kr
[프로그래머스] 완주하지 못한 선수 - 파이썬(Python) import collections def solution(participant, completion): answer = collections.Counter(participant) - collections.Counter(completion) return list(answer.keys())[0] https://programmers.co.kr/learn/courses/30/lessons/42576 코딩테스트 연습 - 완주하지 못한 선수 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수 programmers...
[프로그래머스] 카펫 - 파이썬(Python) def solution(brown, yellow): size = brown + yellow for i in range(3, brown): if size % i == 0: j = size // i if (i - 2) * (j - 2) == yellow: return sorted([i, j], reverse=True) 혹은 def solution(brown, yellow): # 둘레 길이 활용 for i in range(1, int(yellow ** (1 / 2)) + 1): if yellow % i == 0: if 2 * (i + yellow // i) == brown - 4: return [yellow // i + 2, i + 2] 아래는 근의 공식을 활용한..
백준 2075번 : N번째 큰 수 (문제 바로가기) 내 코드 import sys, heapq input = sys.stdin.readline heap = [] for _ in range(int(input())): arr = list(map(int, input().split())) if not heap: for a in arr: heapq.heappush(heap, a) else: for a in arr: if heap[0] < a: heapq.heappush(heap, a) heapq.heappop(heap) print(heap[0])
백준 1012번 : 유기농 배추 (문제 바로가기) 내 코드 import sys sys.setrecursionlimit(10**6) def dfs(x, y): visited[x][y] = True directions = [(-1, 0), (1, 0), (0, -1), (0, 1)] for dx, dy in directions: nx, ny = x + dx, y + dy if nx = n or ny = m: continue if array[nx][ny] and not visited[nx][ny]: dfs(nx, ny) for _ in range(int(input())): m, n, k = map(int, input().split()) array = [[0] * m fo..