Home

[프로그래머스] 프렌즈4블록 풀이_ 2018 KAKAO BLIND RECRUITMENT

1. 문제 https://programmers.co.kr/learn/courses/30/lessons/17679 2. 풀이 시뮬레이션을 이용하여 풀면 되는 문제입니다. 상세 풀이는 주석을 통하여 정리하였습니다. def solution(m, n, board): new_board = [list(x) for x in board] delete_list = [] while True: # 4개 일치하는 영역 찾고 배열에 넣기 for r_idx in range(m - 1): for c_idx in range(n - 1): ...

Read more

[프로그래머스] 뉴스 클러스터링 풀이 _ 2018 KAKAO BLIND RECRUITMENT

1. 문제 https://programmers.co.kr/learn/courses/30/lessons/17677 2. 풀이 2.1. dictionary를 이용한 풀이 풀이에 해설에 대하여 주석으로 남겨보았습니다. import math def solution(str1, str2): dic1 = {}; dic2 = {}; str_arr = [str1, str2] dic_arr = [dic1, dic2] for i in range(2): for j in range(1, len(str_arr[i])): # 2글자씩 끊어서 만든 글자를 ...

Read more

[프로그래머스] 튜플 풀이 _ 2019 카카오 개발자 겨울 인턴십 문제

1. 문제 https://programmers.co.kr/learn/courses/30/lessons/12973 2. 풀이 문자열에서 숫자와 쉼표만 남기고 모두 제거합니다. 각 문자열을 돌면서 숫자와 쉼표의 조합인 경우에는 배열로 생성합니다. 딕셔너리(해쉬)를 이용하여 문자열의 존재 유무를 체크합니다. import re def solution(s): answer = [] _s = re.split('[{}]', s[1:-1]) # 문자열에서 {} 를 모두 제거하고 숫자와 쉼표만 남김 arr = [] for x in _s: # 각 문자열을 돌면서 숫자와 ...

Read more

[프로그래머스] 짝지어 제거하기 풀이

1. 문제 https://programmers.co.kr/learn/courses/30/lessons/12973 2. 풀이 문자열을 idx를 하나씩 늘려가면서 stack에 top과 비교하는 아래의 과정을 반복합니다. idx를 늘려가면서 문자열을 탐색하고 stack 맨 상위의 글자와 같은 경우에는 stack 에서 상위 글자를 제거하고, 아닌 경우에는 stack에 문자열을 넣어 줍니다. def solution(s): stk = [s[0]] for i in range(1, len(s)): if len(stk) == 0: ...

Read more

[프로그래머스] 타겟 넘버 풀이

1. 문제 https://programmers.co.kr/learn/courses/30/lessons/43165 2. 풀이 2.1. dfs를 이용한 문제 풀이 아래와 같이 dfs를 이용하여 모든 경우의 수를 전부 체크합니다. 최대 경우의 수가 $ 2^{20} $ 밖에 되지 않아서 쉽게 처리할 수 있습니다. answer = 0 def dfs(numbers, target, depth, num_sum): global answer if depth == len(numbers): if target == num_sum : answer += 1 re...

Read more

[프로그래머스] 행렬의 곱셈 풀이

1. 문제 https://programmers.co.kr/learn/courses/30/lessons/12949 2. 풀이 numpy를 이용하여 numpy의 array 곱을 구한 후에 바로 list로 변경하여 답으로 출력합니다. import numpy as np def solution(arr1, arr2): return np.dot(np.array(arr1), np.array(arr2)).tolist()

Read more

[프로그래머스] 가장 큰 정사각형 찾기

1. 문제 https://programmers.co.kr/learn/courses/30/lessons/12905 2. 풀이 dp를 이용하여 문제를 해결해야 합니다. dp_map에 현재 인덱스에서 가능한 최대 정사각형의 크기를 기록해놓습니다. 각 칸을 모두 돌면서 왼쪽, 위, 왼쪽 대각선 위를 살펴보고 해당 값에서 가장 작은 값 + 1로 갱신합니다. 이는 직접 그려보면서 이해하면 더 쉬운데, k 크기의 정사각형을 현재 위치에서 만들기 위해서는 위의 3개의 위치에서 k-1 이상의 값을 가져야 하기 때문입니다. … … ...

Read more

[프로그래머스] 최솟값 만들기

1. 문제 https://programmers.co.kr/learn/courses/30/lessons/12941 2. 풀이 2.1. dfs 를 사용한 시간 초과 풀이 특별한 방법이 떠오르지 않아서 dfs를 사용한 완전탐색을 이용하였으나 시간 초과되었습니다. 트리의 높이가 1000 라서 시간을 극복할 수 없습니다. answer = 98765432100 N = 0 def dfs(depth, A, B, value): global is_visited, answer if value >= answer: return if depth == N: answ...

Read more

[프로그래머스] 다리를 지나는 트럭 풀이

1. 문제 https://www.welcomekakao.com/learn/courses/30/lessons/42583 2. 풀이 시뮬레이션으로 문제를 해결하면 됩니다 다리 사이즈, 대기 트럭 만큼 deque 생성을 해줍니다. 다리를 지나고 있는 트럭이 존재하지 않을 때 까지 while 문을 수행합니다. 대기열에 트럭이 있고, 다리를 지나고 있는 트럭이 없는 경우에 해당 숫자는 0으로 채워집니다. 시간을 1씩 증가시키면서, 다음 들어올 트럭이 다리에 있는 트럭의 무게의 합과 더하여 무게를 초과하지 않으면 다리에 있는 차에 넣고 아닌 경우에는 다리에 들어오지 ...

Read more

[프로그래머스] 카펫 풀이

1. 문제 https://programmers.co.kr/learn/courses/30/lessons/42842 2. 풀이 전체 직사각형과 노란 직사각형의 가능한 세로 크기를 모두 구한다. 하나씩 꺼내보면서 가로와 세로에 각각 -2 된 값보다 작거나 같은 경우(내부에 속하려면 전체 격자 크기의 가로, 세로 크기 -2보다 작거나 같아야 하기 때문)를 구해서 return import math def make_grid_num(rec_grid_num, start_idx): # 가능한 직사각형의 세로 크기를 모두 구한다. sizes = [] half = (int)(math.sqrt(rec_...

Read more