본문 바로가기

프로그래밍

[프로그래머스 더 맵게] 파이썬 풀이 [프로그래머스 더 맵게] 파이썬 풀이 문제 Keypoints Solution References [프로그래머스 더 맵게] 파이썬 풀이 문제 힙의 원소를 넣고 빼는 기본 문제 Keypoints heapq library를 사용해야 한다. 조건을 만족하면 힙의 원소를 빼기 전에 종료해야 한다. 두 원소를 빼고 힙의 조건을 고려하면 만족하지 않았을 때 다시 집어넣어줘야 한다. 이러한 수고를 덜기 위해서 빼지 않은 상태에서 종료 조건의 일치여부를 판단한다. Solution from heapq import heapify, heappop, heappush def solution(scoville, K): heapify(scoville) count = 0 while len(scoville)>1 : # Require mo.. 더보기
[프로그래머스 주식 가격] 파이썬 풀이 [프로그래머스 주식 가격] 파이썬 풀이 문제 Keypoints Solution References [프로그래머스 주식 가격] 파이썬 풀이 문제 시간별 주식 가격이 주어질 때, 각 가격이 언제 떨이지는 지 찾는 문제. 효율성 검증이 있으므로, for문 2개를 단순하게 돌릴 경우, 통과하지 못한다. Keypoints List Traversal 문제이다. 리스트의 원소에 대해서 해당 원소 이후로 값이 감소한 곳을 빠르게 찾아야 한다. 뒤에서부터 최소값의 인덱스를 가지고 있다면, Search 해야 하는 범위가 줄어든다. [효율성] Solution def solution(prices): N = len(prices) answer= [0 for i in range(N)] min_index = N-1 for i in .. 더보기
[프로그래머스 1차 추석트래픽] 파이썬 풀이 [프로그래머스 1차 추석트래픽] 파이썬 풀이 문제 Keypoints Solution References [프로그래머스 1차 추석트래픽] 파이썬 풀이 문제 Traffic에 대한 정보가 주어질 때, 임의의 1초 구간에서 가장 많은 트래픽을 세는 문제. Keypoints 하나의 트래픽의 처리가 끝나고 다음 트래픽이 1초 안에 시작한다면, 두 개는 1초의 구간 안에 놓이게 된다. 시작 시간으로 정렬하고, 끝나는 시간을 추적한다. 시작하는 시간으로부터 끝나는 시간까지 1초 밖으로 멀어진다면 끝나는 시간은 더이상 추적할 필요가 없다. Heap을 사용해서 끝나는 시간을 추적한다. Solution import re from heapq import heapify, heappop, heappush def solution(.. 더보기
[프로그래머스 삼각달팽이] 파이썬 풀이 [프로그래머스 삼각달팽이] 파이썬 풀이 문제 Keypoints Solution References [프로그래머스 삼각달팽이] 파이썬 풀이 문제 삼각형의 구조에서 달팽이를 반시계 방향으로 밖에서 안으로 옮직였을 때, 각 시간마다 달팽이가 있는 위치를 찾는 문제. Keypoints 이차원배열을 할당해서 규칙에 맞게 값을 할당한다. 일차원 배열로 값을 옮긴다. Solution def solution(n): N = n*(n+1)//2 cur = 1 boxes = [[0]*i for i in range(1, n+1)] # n, n-2, n-4, ... x,y = 0,0 dir = "down" for cur in range(1, N+1): boxes[y][x] = cur if dir=="down": if y+1>=.. 더보기
Windows Powershell Anaconda (base) 추가하기 만일 콘다가 없다면.... Anaconda Powershell 을 켜서 콘다 설치 위치를 파악하면 됩니다. conda info There is no Anaconda (base) in front of the command line. 1. init powershell in Conda conda init powershell 2. Open powerhsell by admin and Set Execution Policy Unrestricted Set-ExecutionPolicy -ExecutionPolicy Unrestricted 3. Restart Powershell Additional 1. If you want to remove (base) conda config --set auto_activate_base .. 더보기
[백준 1026 ] 보물 [백준 1026 ] 보물 Key Point Solution [백준 1026 ] 보물 두 개의 리스트가 주어질 때, 곱의 값을 최소가 되도록 정렬하는 문제 5 1 1 1 6 0 2 7 8 3 1 다음과 같은 형태가 주어질 때, 두 번째 리스트는 놔둔 상태에서 첫 번째 리스트를 변경해서 곱의 값을 최소가 되도록 해야 한다. 문제링크 Key Point 곱셈에 대해서는 첫 번째 리스트의 순서를 바꾸는 것은 두 번째 리스트의 순서를 바꾸는 것과 같다. 큰 값을 작은 값이랑 곱하게 하는 것이 값을 최소로 만든다. Solution a, b = input().split() count = len(b) for i in range(len(b)-len(a)+1): summ = sum([True for x,y in zip(a,.. 더보기
[백준 1120 ] 문자열 문제 풀이 [백준 1120 ] 문자열 문제 풀이 Key Point Solution [백준 1120 ] 문자열 문제 풀이 문제링크 두 개의 문자열이 주어질 때, 최대한 문자열을 겹치게 만드는 문제로, 최소한으로 덜 겹치는 수를 찾으면 됩니다. # input abd abcd # output 1 $abcd$에서 겹치는 부분은 $abc$, $bcd$ 2가지가 가능하며, 이 중에서 $abc$가 $abd$ 와 차이가 1로 가장 작습니다. 따라서 $abdd$ 형태가 $abcd$와 차이가 1로 가장 작게 됩니다. Key Point a의 길이는 b의 길이보다 짧다. a의 좌우에 아무 알파벳이나 넣을 수 있는 것은 b에서 위치를 잡으면, a의 위치를 제외한 나머지 부분은 알파벳이 동일하다고 여길 수 있습니다. Solution a, .. 더보기
Python CuPy를 활용한 Matrix 연산 최적화 import cupy as cp import numpy as np import time print("Current Device : ", cp.cuda.runtime.getDeviceCount()) N = 10000 a = cp.random.rand(N,N) b = cp.random.rand(N,N) c = np.random.rand(N,N) d = np.random.rand(N,N) t1 = time.time() cp.matmul(a,b,out=None) t2 = time.time() t3 = time.time() np.matmul(c,d,out=None) t4 = time.time() print(f"CP : N{N} Time:", t2-t1) print(f"NP : N{N} Time:", t4-t3) .. 더보기