본문 바로가기

전체 글

(37)
[numpy] numpy array와 list의 차이 우선 list는 우리가 알고 있는 파이썬의 배열의 역할 numpy array는 넘파이 라이브러리에서 제공되는 array이다 numpy array는 벡터와 같다. 그래서 선형대수에서 나오는 벡터 연산이 똑같이 적용된다.  import numpy as nplist = [1,2,3,4]list2 = [1,2,3,4]print(list + list2) # [1,2,3,4,1,2,3,4]array1 = np.array([1,2,3,4])array2 = np.array([1,2,3,4])print(array1+array2) # [2,4,6,8] 바로 예시를 적용해보면 이해가 쉽다 list에서 + 연산은 두 개의 list가 이어지는데  numpy array는 element-wise (원소들 끼리의 연산)으로 연산이 ..
백준 2003 - 수들의 합 2 문제https://www.acmicpc.net/problem/2003   풀이# 백준 / 실버4 / 수들의 합2n,m = map(int,input().split())nums = list(map(int,input().split()))answer = 0for i in range(len(nums)): sum = 0 for j in range(i,len(nums)): sum += nums[j] if sum == m: answer += 1 break elif sum > m: break print(answer)
백준 1748 - 수 이어 쓰기 1 문제https://www.acmicpc.net/problem/1748  풀이# 백준 / 실버4 / 수 이어 쓰기 1n = int(input())if n // 10 == 0: print(n)elif n // 100 == 0: print(2*(n-9) + 9)elif n // 1000 == 0: print(3*(n-99) + 189)elif n // 10000 == 0: print(4*(n-999) + 2889)elif n // 100000 == 0: print(5*(n-9999) + 38889)elif n // 1000000 == 0: print(6*(n-99999) + 488889)elif n // 10000000 == 0: print(7*(n-999999) + 58..
백준 1003 - 피보나치 함수 문제https://www.acmicpc.net/problem/1003    풀이# 백준 / 실버3 / 피보나치 함수import sysdp = [0] * 41dp[0] = 1dp[1] = 1for i in range(2,41): dp[i] = dp[i-1] + dp[i-2]for _ in range(int(sys.stdin.readline())): n = int(sys.stdin.readline()) if n == 0 : print(dp[0],0) elif n == 1: print(0, dp[1]) else: print(dp[n-2], dp[n-1]) 그냥 피보나치를 구현하면 풀리지 않음 dp를 이용하는데 문제에서는 0의 출력 횟수, ..
백준 2579 - 계단 오르기 문제https://www.acmicpc.net/problem/2579    풀이# 백준 / 실버3 / 계단 오르기n = int(input())stairs = [0] * 301for i in range(1,n+1): stairs[i] = int(input()) dp = [0] * 301dp[1] = stairs[1]dp[2] = stairs[1] + stairs[2]dp[3] = max(stairs[1] + stairs[3], stairs[2] + stairs[3])for i in range(4, n+1): dp[i] = max(dp[i-3] + stairs[i-1] + stairs[i], dp[i-2] + stairs[i])print(dp[n]) dp로 풀 수 있는 문제이다. 점화식을 세..
백준 1120 - 문자 문제https://www.acmicpc.net/problem/1120   풀이# 백준 / 실버4 / 문자열import sysX,Y = map(str, sys.stdin.readline().split())def diff(x,y): cnt = 0 min_val = 100000 if len(X) == len(Y): for i in range(len(x)): if x[i] != y[i]: cnt += 1 if cnt len(y): break for j in range(len(x)): z = y[i:i+len(x)] ..
백준 28278 - 스택 2 문제https://www.acmicpc.net/problem/28278  풀이# 백준 / 실버4 / 스택 2import sysstack = []for _ in range(int(sys.stdin.readline())): ope = list(map(int,sys.stdin.readline().split())) if ope[0] == 1: stack.append(ope[1]) elif ope[0] == 2: if stack: print(stack.pop()) else: print(-1) elif ope[0] == 3: print(len(stack)) elif ope[0] == 4: ..
백준 1920 - 수 찾기 문제https://www.acmicpc.net/problem/1920   풀이# 백준 / 실버4 / 수 찾기# 이진탐색 알고리즘# 반드시 찾는 list가 정렬된 상태여야 한다.def binary_search(target,list1): start = 0 end = len(list1)-1 while start target: end = mid - 1 else: start = mid + 1 return 0N = int(input())list1 = list(map(int,input().split()))M = int(input())list2 = list(map(int,input().split()))list..