전체 글 - Table of Contents332

★Coordinate Compression Upper-Intermediate - 3 Solved★ ★ 18870 좌표 압축 ★ 👨🏽‍🏫 좌표 압축 구현은 먼저 정렬로 새로운 배열을 만든 다음 → 중복 제거 → 그리고 index를 계산하는 3개의 step으로 진행 👨🏽‍🏫 마지막 세 번째 step을 시간단축을 위해 어떤 기법을 쓰는 지에 따라 상황별로 소요 시간을 다르게 계산할 수 있다. ① 이분탐색 bisect_left() 계산 풀이 from bisect import bisect_left import sys input=sys.stdin.readline N=int(input()) l=list(map(int,input().split())) B=sorted(set(l)) ans=[] for i in l: ans.append(bisect_left(B,i)) print(*ans) → step 1) 정렬로 B[.. BOJ/🥈 2023. 1. 24.
🔸Coordinate Compression🔸 intro / implementation 🔸 넓게 퍼져 있는 값들을 문제 해결을 위해 좌표 압축. (위 그림의 경우 -6~5까지의 퍼져 있는 수들을 차례대로 0 - 1 - 2 - 3 - 4로 나열 가능) 🔸 주의점: 주어진 수들의 크기가 중요치 않고, 크기 순서만이 문제 해결에 필요할 때 좌표 압축 진행 🔸 구현 ex) 랜덤 크기 순으로 나열된 A[1], A[2], A[3], .... A[n]을 좌표 압축 ① A[1], A[2], ... , A[n]를 정렬한 새로운 배열 B[] 생성 ② 필요 시 중복된 원소들을 제거(중복 카운트 중요치 않을 경우만) ③ 각 A[i]를 B[]에서 이분탐색하여 B[]에서의 A[i] index를 계산 🔸 쉽게 말하자면, 랜덤하게 배치된 다양한 크기의 숫자들을 index의 크기.. Computer Science/Algorithms 2023. 1. 24.
dataframe 꾸미기 🤲 pandas의 dataframe을 jupyter css 파일 코드를 고치거나 추가하면 입맛에 맞게 꾸밀 수 있다! 그 과정을 소개해봄 - 수정 후 - 🤲 jupyter notebook styling css 파일 총 2개를 수정했다. ① custom.css ② style.min.css 🤲 custom.css 🤲 설명에 의하면 overriding되는 동일구조 code의 최종 of 최종본을 선언할 때 쓰라는 안내문 🤲 .dataframe은 style.min에서 찾아도 없어서(ctrl+F5 단축키) custom.css에 깔끔히 썼다. .dataframe th{ background:#B7E0F0; font-weight: 600; border:3px solid white; } → tag는 dataframe ta.. Python/Pandas&Numpy 2023. 1. 22.
★Prefix Sum Upper + Intermediate I - 7 Solved★ ★ 11441 합 구하기 ★import sysinput=sys.stdin.readlineN=int(input())B=[]a=0for i in map(int,input().split()): a+=i B.append(a)for _ in range(int(input())): a,b=map(int,input().split()) if a==1:print(B[b-1]) else:print(B[b-1]-B[a-2]) 🐰 누적합을 구하기 위한 구간을 만든 뒤, 구간 B에서 원하는 구간만큼 바로 indexing으로 B[b-1] - B[a-2] 연산해주면 완료!★ 11659 구간 합 구하기 4 ★ #indexing over slicingN, M = map(int, input().split()).. BOJ/🥈 2023. 1. 18.
Numpy fundamentals 2/2 🎅 numpy는 필수적으로 알아야 하는 library로, 수학 연산 관련해서 반드시 쓰이는 library. 옛날 포스팅에 이어서 numpy 관련 다양한 기능을 익혀보자! NumPy intro. + fundamentals 1/2 1. 개념 * NumPy = Numerical Python - Python에서 대규모 다차원 배열을 다룰 수 있게 도와주는 library * 데이터의 대부분은 숫자 배열로 볼 수 있기에 NumPy는 꼭 필요 - 이미지나 소리 등 실생활 대부분이 숫 sh-avid-learner.tistory.com 1. numpy 배열 생성 다양한 함수 * 배열 생성 및 초기화 함수 🎅 zeros() - 주어진 형태와 타입을 갖는 0으로 채워진 배열 반환 (지정된 shape 배열을 생성하고 모든 요.. Python/Pandas&Numpy 2023. 1. 16.
★Math Beginner IV - 23 Solved★ ★ 2914 저작권 ★A,I=map(int,input().split())print(A*(I-1)+1) 🔢 올림해서 결과를 내기 때문에 I-1을 곱한다음 1을 더하면 된다.★ 15923 욱제는 건축왕이야!! ★ ans=0N=int(input())l=[]for _ in range(N): x,y=map(int,input().split()) l.append((x,y))for i in range(N): if i==0: x0,y0=l[N-1][0],l[N-1][1] else: x0,y0=l[i-1][0],l[i-1][1] x1,y1=l[i][0],l[i][1] if x0==x1:ans+=(abs(y0-y1)) else:ans+=(abs(x0-x1))print(ans) 🔢 누.. BOJ/🥉 2023. 1. 16.
🎼 Regular Expression 💚 정규 표현식은 '패턴 매칭 기반으로 특정한 규칙을 가지는 문자열을 검색&분리하고 교체하는 강력한 기능을 제공하는 형식 언어' 💚 python에서는 re library를 importimport re1. re.search() & re.match() & re.fullmatch() & re.sub()💚 re.match() checks for a match ONLY at the beginning of the string, whereas re.search() checks for a match anywhere in the string ※ re.match는 문자열 처음부터 매칭 / re.search는 문자열 일부분 매칭 ※ 💚 re.fullmatch() checks for entire string to be.. Computer Science/Algorithms 2023. 1. 11.
★PQ 중상급 - 6문제()★ 🧠 priority queue를 구현하기 위한 heap 관련 여러 문제는 기존 자료구조(stack, queue, deck)보다 더 복잡한 tree구조로, 중급 이하의 문제는 없다. 중상급 이상부터 여러 문제를 풀며 적응해보자 🧠 priority queue 관련 개념 포스팅 참고 priority queue - (binary) heap tree 1. concepts> ☝️ 우선순위 큐 = '우선순위가 가장 높은 데이터를 가장 먼저 삭제하는 자료구조' ☝️ 데이터를 우선순위에 따라 처리하고 싶을 때 사용 ex) 물건 데이터를 자료구조에 넣었다가 가 sh-avid-learner.tistory.com ★ 1927 최소 힙 ★ import sys import heapq input=sys.stdin.readline .. BOJ/🥈 2023. 1. 11.
Types of Binary Tree🌲 🌲priority queue 자료구조 포스팅에서 heap은 일종의 CBT(Complete Binary Tree) 형태로 구현된다고 언급한 적이 있다. priority queue - heap 1. concepts> ☝️ 우선순위 큐 = '우선순위가 가장 높은 데이터를 가장 먼저 삭제하는 자료구조' ☝️ 데이터를 우선순위에 따라 처리하고 싶을 때 사용 ex) 물건 데이터를 자료구조에 넣었다가 가 sh-avid-learner.tistory.com 🌲 여기서 다양한 종류의 Binary Tree에 대해 간단하게 알아보자. 🌲 Binary Tree란 tree 자료구조의 일종으로, 각 node의 자식 node는 최대 2개 존재하며, 이를 left & right child라고 부른다. ① representation) .. Computer Science/Data Structures 2023. 1. 10.
👯Priority Queue(feat. Binary Heap) intro👯 우선순위 큐 = '우선순위가 가장 높은 데이터를 가장 먼저 삭제하는 자료구조' 👯 데이터를 우선순위에 따라 처리하고 싶을 때 사용한다. 예를 들어 물건 데이터를 자료구조에 넣었다가 가치가 높은 물건부터 꺼내서 확인해야 하는 경우, 즉 가치라는 우선순위에 따라 처리할 때 우선순위 큐라는 자료구조 사용. 앞서 배운 스택의 경우 가장 나중에 삽입된 데이터가 먼저 추출되고, 큐의 경우 가장 먼저 삽입된 데이터가 먼저 추출된다. 하지만 우선순위 큐는 직접 정한 우선순위에 따라 추출되는, 즉, 큐라는 자료구조에서 우선순위라는 어떤 기준을 정해 이에 의해 데이터를 추출하는 방식이라 생각하면 된다.   👯 우선순위 큐는 크게 두 가지 방법으로 구현 가능하다. ① 단순히 list로 구현하는 방법과 ② .. Computer Science/Data Structures 2023. 1. 9.
★DP Advanced I - 6 Solved★ ★ 2591 숫자카드 ★ n=input()l=len(n)if l==1:print(1)else: dp=[0]*l #dp-table initialization - dp[0], dp[1] dp[0]=1 front_two=int(n[:2]) if front_two =4: dp[i]=0 else: dp[i]=dp[i-2] print(dp[-1]) 👄 dp-table을 전형적인 dp 유형 답게 update하는 유형이나, 맨 마지막 숫자가 0일 경우의 예외를 처리하는 dp 유형! 👄① 길이가 1인 경우 - 숫자 1개로 이루어진 카드 1개 - dp[0] = 1 ② 길이가 2인 경우(1) 앞.. BOJ/🥇 2023. 1. 8.
★Stack & Queue & Deque Upper-Intermediate I - 12 Solved★ ★ 1874 스택 수열 ★ import sysinput = sys.stdin.readlinestack,sequence,ans = [],[],[]cur = 0for _ in range(int(input())): sequence.append(int(input()))sequence = sequence[::-1]while len(sequence) != 0: popped = sequence.pop() if popped > cur: for i in range(cur+1,popped+1): stack.append(i) ans.append('+') cur = popped if popped == stack[-1]: .. BOJ/🥈 2023. 1. 8.