반응형

알고리즘 27

백준 1874번 - 스택 수열 [python]

Python 코드 n = int(input()) nums = [] # 입력 받은 수열 담을 리스트 stack = [] # 스택 자료구조를 구현한 리스트 res = [] # push와 pop 연산을 저장할 리스트 num_idx = 0 # 수열 현재 위치 for i in range(n): num = int(input()) nums.append(num) print(nums) for i in range(1, n+1): # stack에 1~n 까지 숫자를 차례대로 push, push 수행 할때마다 'res'에 '+' 추가 stack.append(i) res.append('+') while stack and stack[-1] == nums[num_idx]: # stack이 비어있지 않고, stack의 top 값이 ..

BOJ 2023.03.18

백준 10799번 - 쇠막대기 [python]

Python 코드 s = input() # 괄호가포함된 문자열 입력 받기 stack = [] # 스택 초기화 cnt = 0 # 쇠막대기 조각 개수 초기화 for i in range(len(s)): if s[i] == '(': # 열린 괄호의 경우 스택에 push stack.append(s[i]) else: # 닫힌 괄호인 경우 stack.pop() # 스택에서 pop if s[i-1] == '(': # 직전이 열린 괄호였을 경우, (레이저인 경우) cnt += len(stack) # 쇠막대기 조각 개수 추가 else: # 직전이 닫힌 괄호 였을 경우, (쇠막대기 끝인 경우) cnt += 1 # 쇠막대기 조각 개수 추가 print(cnt) # 쇠막대기 조각 개수 촐력 Python 코드 풀이 이번 문제는 레..

BOJ 2023.03.17

해시 자료구조 이해하기

해시 자료구조는 데이터 저장과 검색을 빠르게 해주는 중요한 자료구조입니다. 이 포스트에서는 해시 자료구조에 대해 깊게 이해해 보도록 하겠습니다. 해시 자료구조란? 해시 자료구조는 '키(key)'와 '값(value)'의 쌍으로 데이터를 저장하는 자료구조입니다. 이는 키를 통해 데이터 값을 빠르게 찾을 수 있게 해줍니다. 해시 자료구조는 '해시 테이블'이라고도 불리며, 이는 키를 '해시 함수'를 통해 '해시 코드'로 변환하고, 이 해시 코드를 인덱스로 사용하여 값을 저장하는 방식을 따릅니다. 해시 함수와 해시 코드 해시 함수는 키를 해시 코드로 변환하는 함수입니다. 이 함수는 가능한 한 균일한 방식으로 키를 해시 코드에 분산시키는 것이 중요합니다. 그렇지 않으면 해시 충돌이 발생할 확률이 높아지고, 이는 해..

자료구조 2023.03.14

python - combinations 함수

itertools 모듈에서 제공하는 함수 중 하나인 combinations 함수에 대해 설명드리겠습니다. combinations 함수는 주어진 iterable에서 r의 길이를 가진 가능한 모든 조합을 반환하는 역할을 합니다. 사용법 from itertools import combinations array = [int(input()) for _ in range(9)] for i in itertools.combinations(array, 7): print(i) combinations(iterable, r) => 이 함수는 iterable한 자료형에서 원소의 개수가 r인 모든 조합을 생성합니다. 예를 들어, array 리스트가 9개의 입력값, 즉 [1, 2, 3, 4, 5, 6, 7, 8, 9]를 받았다고 가..

Python 2023.03.13

백준 1547번 - 공 [python]

Python 코드 m = int(input()) cup = [0,1,2,3] for i in range(m): x, y = map(int, input().split()) cup[x], cup[y] = cup[y], cup[x] print(cup.index(1)) Python 코드 풀이 1. 코드에 대한 전체적인 풀이 해당 문제는 컵안에 있는 공을 찾는건데, 1번 컵에 공을 하나 넣고 시작한다. 왼쪽부터 1번~3번까지 컵이 있으며 M번의 바꾼횟수와 x컵과 y컵의 위치를 서로 바꾸는 구간을 입력 받아서 공이 들어있는 컵의 번호를 찾는 문제다. 파이썬에서 swap를 쉽게 할 수 있어서 x,y를 swap 해주고 공이 들어있는 컵 1번을 index를 통해 찾아주었다. ex) M이 4이고 x,y 가 3 1, 2 3..

BOJ 2023.02.13

백준 10804번 - 카드 역배치 [python]

Python 코드 n = list(range(21)) for _ in range(10): s, e = map(int, input().split()) for i in range((e-s+1) // 2): n[s+i], n[e-i] = n[e-i], n[s+i] n.pop(0) for x in n: print(x, end=' ') Python 코드 풀이 1. 코드에 대한 전체적인 풀이 해당 문제는 입력 카드 20장 중 같은 규칙으로 카드의 위치를 역순으로 바꾸고 누적 시킨 다음 최종 마지막 카드들의 배치를 구하는 문제이다. 20개의 카드를 리스트로 만들었다. 10개의 구간으로 나눠서 반복, s, e 변수에 각각 구간을 담아서 반복 했다. 첫 번째 구간이 돌았을때 역순으로 바꿔주기 위해 (e-s+1) // 2..

BOJ 2023.02.04
반응형