Programmers / 3단계 / 등굣길 / python / 동적계획법(Dynamic Programming)
·
코딩테스트/programmers (python)
https://school.programmers.co.kr/learn/courses/30/lessons/42898 모범 답안 def solution(m, n, puddles): puddles = [[q,p] for [p,q] in puddles] dp = [[0] * (m+1) for _ in range(n+1)] dp[1][1] = 1 for i in range(1, n+1): for j in range(1, m+1): if i == 1 and j == 1: continue if [i, j] in puddles: dp[i][j] = 0 else: dp[i][j] = (dp[i - 1][j] + dp[i][j - 1]) % 1000000007 return dp[n][m] 웅덩이의 위치 puddles의 좌..
Programmers / 2단계 / 소수 찾기 / python / 완전 탐색
·
코딩테스트/programmers (python)
https://school.programmers.co.kr/learn/courses/30/lessons/42839 모범 답안 from itertools import permutations def solution(n): a = set() for i in range(len(n)): a |= set(map(int, map("".join, permutations(n, i + 1)))) a -= set(range(0, 2)) for i in range(2, int(max(a) ** 0.5) + 1): a -= set(range(i * 2, max(a) + 1, i)) print(set(range(i * 2, max(a) + 1, i))) return len(a) 알게된 것 itertools의 permutation..
[데이터 분석] Train, Validation, Test Set / train_test_split 모듈
·
데이터 분석
Train, Validation, Test Set 우리는 모델을 개발할때, 범용적으로 사용할 수 있는 모델을 만들려고 한다. Unseen data에 대하여 예측 또는 분류를 하는 것이 목표이기 때문이다. 여기서 unseen data란, 우리의 모델이 처음 보는 데이터셋, 또는 학습해 보지 않은 데이터를 말한다. 모델이 실제로 적용되었을때는 처음보는 데이터에 대하여 예측 또는 분류를 할 것이기 때문에, 그만큼 모델의 unseen data에 대한 성능이 좋아야 한다는 것을 우리는 알 수 있다. 따라서 dataset을 나누지 않고 전부 학습에 사용한다면 해당 dataset에 대해서만 성능이 좋은 모델을 만들게 될 것이고, 개발한 모델에 대한 성능을 점검할 수 없을 뿐만 아니라 실제로 모델이 적용되었을 때 좋은..
Programmers / 3단계 / 야근 지수 / python
·
코딩테스트/programmers (python)
https://school.programmers.co.kr/learn/courses/30/lessons/17679 나의 풀이 def solution(n, works): answer = 0 if sum(works) 5: print('hello') 위 예시처럼 대입 표현식을 사용하면 n을 조건문 안에서 선언하고 값을 대입할 수 있다. 참조 https://int-i.github.io/python/2020-05-29/python-walrus-operator/ Python 3.8 기여운 바다코끼리를 드리겟슴미다 := - 인하대학교 인트아이 파이썬 문법을 읽다, ‘바다코끼리 연산자’라고 불리는 기능을 발견했다. 찾아보니 2019년 10월에 정식 릴리즈된 파이썬 3.8에서 들어왔다고 하는데, 찾아보느라 이것저것 ....
Programmers / 2단계 / [1차]프렌즈4블록 / python / 2018 KAKAO BLIND RECRUITMENT
·
코딩테스트/programmers (python)
https://school.programmers.co.kr/learn/courses/30/lessons/17679 모범 답안 def pop_num(b, m, n): pop_set = set() # search for i in range(1, n): for j in range(1, m): if b[i][j] == b[i - 1][j - 1] == b[i - 1][j] == b[i][j - 1] != '_': pop_set |= set([(i, j), (i - 1, j - 1), (i - 1, j), (i, j - 1)]) # set_board for i, j in pop_set: b[i][j] = 0 for i, row in enumerate(b): empty = ['_'] * row.count(0) b[..
Programmers / 2단계 / 2 x n 타일링 / python
·
코딩테스트/programmers (python)
https://school.programmers.co.kr/learn/courses/30/lessons/12900 모범 답안 def solution(n): a, b = 1,1 for i in range(n): a, b = b, a+b return a 동적 계획법의 문제이다. 동적 계획법의 핵심은 점화실을 찾는 것이다. 점화식을 찾기 위해 예를 보면, n = 1: 1 ...................................... -> 1 n = 2: 11, 2 ................................. -> 2 n = 3: 111, 21, 12 ........................ -> 3 n = 4: 1111, 211, 112, 121, 22 ....... -> 5 여기서..
Programmers / 3단계 / 최고의 집합 / python
·
코딩테스트/programmers (python)
https://school.programmers.co.kr/learn/courses/30/lessons/12938 모범 답안 def solution(n, s): answer=[] if s < n: return [-1] for _ in range(n): answer.append(s//n) indexs = len(answer)-1 for i in range(s - sum(answer)): answer[indexs] += 1 indexs -= 1 return answer 원소의 곱이 최대가 되려면 원소끼리의 차가 적어야 하기 때문에 s//n을 answer에 n번 넣은 후 원소의 합에서 모자란 수만큼 for문을 돌려 answer의 마지막 인덱스부터 1을 더해가면 답을 구할 수 있다. 참조 https://minn..
Programmers / 2단계 / 택배상자 / python
·
코딩테스트/programmers (python)
https://school.programmers.co.kr/learn/courses/30/lessons/131704 모범 답안 def solution(order): answer = 0 stack = [] for idx, num in enumerate(order): stack.append(idx+1) while stack and stack[-1] == order[answer]: stack.pop() answer +=1 return answer