본문 바로가기

문제풀이66

[프로그래머스💯] 코딩테스트 연습 > 동적 계획법 > 정수 삼각형 / Python 문제풀이 해답) def solution(triangle): answer = 0 length = len(triangle) # length+1 한 이유 : 맨밑줄 index 넘어가도 오류안나게 maxPath = [[0 for _ in range(length+1)] for _ in range(length+1)] maxPath[0][0] = triangle[0][0] for i in range(length-1): for j in range(i+1): # 왼쪽 밑 보고 갱신 if maxPath[i][j] + triangle[i+1][j] > maxPath[i+1][j]: maxPath[i+1][j] = maxPath[i][j] + triangle[i+1][j] # 오른쪽 밑 보고 갱신 if maxPath[i][j] + t.. 2020. 5. 10.
[백준] 1138번 한줄로 서기 ! 👨‍👨‍👧‍👦 - Python 문제풀이 해답) import sys def rl(): return sys.stdin.readline() def solution(N, people): origin = [0] * N # 정답 담을 배열 for height, how_many in enumerate(people): position = how_many # 적어도 암에 있던 사람 수보단 뒤에있다. index = 0 while how_many >= 0: # 앞에 사람있던 수만큼 확인한다. if origin[index] != 0 and origin[index] < height+1: position += 1 # 키작은 사람이 있었으면 index늘리고 how_many += 1 # 한 명 더 확인해본다. index += 1 how_many -= 1 origin[po.. 2020. 4. 27.
[프로그래머스💯] 코딩테스트 연습 > 이분탐색 > 징검다리 해답) def solution(distance, rocks, n): rocks.sort() rocks.append(distance) answer = 0 l, r = 0, distance while l rocks[i] - prevRock: removeRock += 1 # print("removeRock") else: cand = min(cand, rocks[i] - prevRock) prevRock = rocks[i] if removeRock n: r = minDistance-1 return answer 풀이) 처음 겪는사람에겐 너무나도 어려울 수 있는 이분탐색 문제입니다.. 하지만 한 번만 이해하고 나면 나중에 나오는 문제들에는 큰 어려움 없이 수월해 질 수 있습니다! 화이팅! 키 포인트 보통 문제를 처.. 2020. 4. 20.
[프로그래머스💯] 코딩테스트 연습 > 연습문제 > 행렬의 곱셈 해답) import numpy as np def solution(arr1, arr2): answer = np.dot(np.array(arr1), np.array(arr2)) return answer.tolist() 풀이) 사실 직접 코딩으로도 구현할 수 있는데. numpy라는 라이브러리는 다차원배열의 계산을 매우 편하게 해준다. dot 혹은 matmul 을 통해 바로 곱셈을 구현할 수 있다. tolist() 는 numpy 형태의 배열(혹은벡터) 를 다시 리스트 타입으로 만들어준다. * 이 문제 및 로고의 저작권은 Programmers에 있습니다. 출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges 2020. 4. 7.
[프로그래머스💯] 코딩테스트 연습 > 연습문제 > 행렬의 덧셈 해답) def solution(arr1, arr2): answer = [] for _arr1, _arr2, in zip(arr1, arr2): row = [] for __arr1, __arr2 in zip(_arr1, _arr2): row.append(__arr1 + __arr2) answer.append(row) return answer 풀이) * zip 함수는 이터러블 2개를 묶어 튜플 이터러블로 만들어준다. list(zip([1,2,3] , ['a','b','c'])) = [(1,'a'), (2,'b'), (3,'c')] row 에다가 append 하고 총 행렬에 row들을 append 한다. * 이 문제 및 로고의 저작권은 Programmers에 있습니다. 출처: 프로그래머스 코딩 테스트 연습, .. 2020. 4. 7.
[AlgoSpot🔴] 알고스팟 > 출전 순서 정하기 / Pyton 문제풀이 해답) import sys def rl(): return sys.stdin.readline() def solution(Russia, Korea): Russia.sort() Korea.sort() win = 0 for Ru in Russia: for i, Ko in enumerate(Korea): if Ru 2020. 3. 31.