전체 글

전체 글

    [프로그래머스, Python] 광물 캐기

    정답 코드 def solution(picks, minerals): ans = [] tired = [[1, 1, 1], [5, 1, 1], [25, 5, 1]] tools = {"diamond" : 1, "iron": 2, "stone": 3} def dfs(minerals, picks, tired_rate): # 종료 조건 if sum(picks) == 0 or minerals == []: ans.append(tired_rate) return m = minerals[:5] # tool 을 picks에서 감소 for t in range(3): if picks[t] > 0: picks[t] -= 1 tired_rate_val = tired_rate_calculate(t, m) dfs(minerals[5:],..

    [프로그래머스, Python] 게임 맵 최단거리

    문제를 보자마자 전형적인 BFS 문제라고 생각했습니다. 특이할 것 없이 queue를 이용한 graph bfs문제를 풀 면 됩니다. 오타때문에 런타임 에러가 났었는데 n이랑 m 잘 확인하시길... from collections import deque dx = [-1, 1, 0, 0] dy = [0, 0, -1, 1] def bfs(x,y,n,m, maps): q = deque([(x,y)]) while q: x, y = q.popleft() for i in range(4): nx = x + dx[i] ny = y + dy[i] if 0

    [프로그래머스, Python] 수식 최대화

    프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 먼저, permutation을 이용하여 가능한 모든 연산자의 우선순위 배열을 구합니다. operators = list(permutations(['-', '*', '+'])) #[('-', '*', '+'), ('-', '+', '*'), ('*', '-', '+'), ('*', '+', '-'), ('+', '-', '*'), ('+', '*', '-')] 모든 연산자 우선순위 배열을 순회하면서, 각 배열의 연산자들과 숫자를 연산합니다. 이때, while문으로 연산자 우선순위가 우선인 연산자들이 전부 연산 된..

    [Python] 2차원 배열 돌리기

    2차원 배열 돌리기는 직접 구현하거나, zip을 이용하여 간편하게 바꾸는 2가지 방법이 있습니다. 1. 직접 구현하기 [[1, 2, 3], [4, 5, 6], [7, 8, 9]] 와 같은 배열을 한 번 돌리면, [[7, 4, 1], [8, 5, 2], [9, 6, 3]] 와 같은 결과를 얻을 수 있습니다. 180, 270도 회전을 원하면 rotate 함수를 여러 번 호출하면 됩니다. def rotate(graph): n = len(graph) m = len(graph[0]) result = [[0]* n for _ in range(m)] for i in range(n): for j in range(m): result[i][j] = graph[n-1-j][i] return result # [[7, 4, 1..

    [백준, Python] 18111 마인크래프트

    가장 먼저, 땅의 높의는 256을 초과할 수 없으므로 높이의 최대값은 256 입니다. 또한, 가로 세로는 500 이하이므로 높이, 가로, 세로 3중 포문을 돌려도 256 * 500 * 500 = 64,000,000 즉, 1초 안에 가능합니다. 따라서 브루트 포스로 풀 수 있습니다. 핵심 아이디어는 다음과 같습니다. - for문을 통해 256층까지 탐색하면서 각 층의 블록들의 초과분과 부족분을 찾습니다. - (초과분 + 인벤토리의 블럭 수) >= 부족분 이면, 그 층 개수만큼의 블럭으로 평탄하게 할 수 있는 것입니다. - 따라서, 부족분과 초과분을 이용하여 시간을 계산하고 min값을 for문을 돌면서 체크합니다. - 층 수와 min값을 출력합니다. import sys n, m, b = list(map(in..