Home

[프로그래머스] 올바른 괄호 풀이

1. 문제 https://programmers.co.kr/learn/courses/30/lessons/12909 2. 풀이 def solution(s): left = 0 for i, x in enumerate(s): # 모든 글자를 확인하면서 ( 보다 ) 가 많이 나온 경우에 False return if x == '(': left += 1 else: left -= 1 if left < 0: return False if left !=...

Read more

[프로그래머스] 다음 큰 숫자 풀이

1. 문제 https://programmers.co.kr/learn/courses/30/lessons/12911 2. 풀이 def solution(n): one_num = sum(list(map(int, bin(n)[2:]))) # 2진수로 변환한 뒤에 모든 숫자 더하기 while True: n += 1 if one_num == sum(list(map(int, bin(n)[2:]))): # 1의 개수가 같으면 종료 return n

Read more

[프로그래머스] 프렌즈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