알고리즘 72

[프로그래머스] 코딩테스트 연습 - 사칙연산(Python)

더보기 문제 사칙연산에서 더하기(+)는 결합법칙이 성립하지만, 빼기(-)는 결합법칙이 성립하지 않습니다. 예를 들어 식 1 - 5 - 3은 연산 순서에 따라 다음과 같이 다른 결과를 가집니다. ((1 - 5) - 3) = -7 (1 - (5 - 3)) = -1 위 예시와 같이 뺄셈은 연산 순서에 따라 그 결과가 바뀔 수 있습니다. 또 다른 예로 식 1 - 3 + 5 - 8은 연산 순서에 따라 다음과 같이 5가지 결과가 나옵니다. (((1 - 3) + 5) - 8) = -5 ((1 - (3 + 5)) - 8) = -15 (1 - ((3 + 5) - 8)) = 1 (1 - (3 + (5 - 8))) = 1 ((1 - 3) + (5 - 8)) = -5 위와 같이 서로 다른 연산 순서의 계산 결과는 [-15, ..

모각코 5회차 - DBMS 성능 개선 알고리즘 소개

모각코 다섯 번째 회의 때는 각자 공부한 내용에 대해 소개하는 시간을 가졌습니다! 저는 분산 시스템에서의 성능 개선 알고리즘을 찾아가면서 공부해봤습니다. 많은 방법이 있지만, 그 중에서 RAFT 알고리즘에 대해 간단하게 살펴봤는데요, 한 번 시작해볼까요~? ✏️ PART5. 분산 시스템에서의 성능 개선 알고리즘 1. 분산 시스템 성능 개선 관련 공부의 목적 분산 시스템 환경에서 여러 작업을 실행하는 과정에서 packet 손실이나, 중복 전송 혹은 delay 등의 문제가 발생합니다. 성능저하를 야기하는 여러 요인 가운데 노드와 네트워크 관점에서 문제를 해결하는 알고리즘을 소개하기 위해 공부를 진행해봤습니다. 2. 분산 시스템 성능 개선과 관련한 알고리즘 2-1. Raft 알고리즘의 배경 - 모든 노드가 동..

모각코 2회차 - 약점체크

모각코 두번째 회의 후 PART2. 약점체크를 풀며 준비운동을 했습니다! 확실히 저번주보다는 난의도가 높은 문제들인 것을 체감했습니다. ✏️ 준비운동 PART2. 약점체크 재귀 탐색의 기본: 연산자 끼워넣기 (🥈실버 1티어) 스택의 응용: 괄호의 값 (🥈실버 2티어) 시뮬레이션 기본: 빗물 (🥇 골드 5티어) 완전탐색의 유연한 생각: 가르침 (🥇 골드 4티어) 그리디의 기본: 멀티탭 스케줄링 (🥇 골드 1티어) 투 포인터의 기본: 부분합 (🥇골드 4티어) 벨만포드 뼈대문제: 최소비용 구하기 (🥇 골드 5티어) Prime, Kruskal 뼈대문제: 최소 스패닝 트리 (🥇 골드 4티어) KMP 뼈대문제: 부분 문자열 (🥉 브론즈 2티어) 위상정렬: 줄 세우기 (🥇 골드 3티어) 1. 연산자 끼워넣기 impo..

[백준/알고리즘/python/java] 2309번 - 일곱 난쟁이

단순한 그리디 문제였다. 맨 처음에는 그리디가 아니라 dp문제인가 싶었다. 이전에도 풀었던 기록이 있어서 단순한 그리디로도 풀릴 듯해서 바로 푼 문제였다. 코드는 아래와 같다. import sys input = sys.stdin.readline height = [] for _ in range(9): height.append(int(input())) diff = sum(height)-100 # 9명의 난쟁이 키의 합과 100의 차이를 구한다 find_two_false = False # find_two_false라는 초기변수를 False로 설정한다. for i in height: for j in height[1:]: if i + j == diff: # height를 돌면서 두 난쟁이의 합이 diff와 같으면..

[백준/알고리즘/python/java] 11723번 - 집합

비교적 쉬운 문제이지만, strip()을 안해서 처음에 index오류가 났고, 2 all check 20 했을 때, 1이 나와야 하는데 0이 나와서 계속 왜 안될까 고민하다가, number라는 입력받은 숫자를 int로 변환하지 않아서 check를 할 때 이상값이 나왔다. discard도 remove와는 다르게, 해당 값이 없으면 remove는 오류를 출력하지만, discard는 해당 값이 있을 때만 없애주고, 없으면 무시한다. 코드는 아래와 같다. import sys input = sys.stdin.readline M = int(input()) queue = set() for _ in range(M): in_put = input().rstrip() if in_put == "all": queue.updat..

반응형