일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 그래프
- DFS
- javascript
- Blind
- 스택
- SW역량테스트
- 자료구조
- 완전탐색
- boj
- BFS
- sort
- 코딩테스트
- 파이썬
- 삼성
- SSAFY
- 백준
- 코테
- 프로그래머스
- DP
- 카카오
- 알고리즘
- Backjoon
- 싸피
- SWEA
- 힙큐
- 다이나믹프로그래밍
- kakao
- 자바스크립트
- algorithm
- Python
- Today
- Total
목록algorithm (50)
맞왜틀

리트코드 문제: Top K Frequent Elements이 문제는 배열에서 자주 등장하는 k개의 요소를 찾는 문제입니다. 예를 들어, 배열 [1,1,1,2,2,3]과 k = 2가 주어진다면, 가장 빈번하게 등장한 숫자는 1과 2이므로 [1, 2]가 답이 됩니다.문제 분석이 문제는 배열의 각 요소가 몇 번 등장하는지를 계산하고, 그중에서 자주 등장한 k개의 요소를 추출하는 문제입니다.풀이 접근빈도 계산먼저 배열에서 각 숫자가 몇 번 등장했는지를 파악해야 합니다. 이를 위해 **해시맵(Map)**을 사용해 각 숫자의 빈도를 기록할 수 있습니다.빈도별 정렬각 숫자의 등장 횟수를 기준으로 배열을 정렬한 후, 그중에서 가장 빈번하게 등장한 k개의 요소를 추출하면 됩니다.코드 설명var topKFrequent =..

리트코드 문제: Longest Substring Without Repeating Characters이 문제는 주어진 문자열에서 중복된 문자가 없는 가장 긴 부분 문자열을 찾는 문제입니다. 예를 들어, 문자열 "abcabcbb"가 주어졌다면 "abc"가 가장 긴 부분 문자열로, 답은 3입니다.문제 분석주어진 문자열에서 중복되지 않은 문자가 포함된 가장 긴 부분 문자열을 찾는 것이 목표입니다. 즉, 중복 문자가 나타나면 이전에 찾았던 부분 문자열을 중단하고, 중복이 없도록 시작 위치를 다시 조정해야 합니다.풀이 접근이 문제는 슬라이딩 윈도우와 같은 방식으로 해결할 수 있습니다. 슬라이딩 윈도우는 문자열에서 특정 범위를 탐색하면서 중복된 문자를 만나면 그 범위를 조정하는 방식입니다.문자열을 탐색하면서 중복 체..

🤔문제 해결 💫 던전의 길이가 최대 8개 이므로 permutation으로 탐험하는 순서의 모든 경우의 수를 구했다. 💫 탐험 순서대로 던전을 탐험하며 피로도 조건에 맞는 동굴만 탐험하며 갯수를 세어준다. 💫 각각의 사이클마다 탐험가능한 동굴의 갯수를 최대값으로 업데이트 해준다. 💻소스 코드 from itertools import permutations def solution(k, dungeons): answer = -1 for perm in (permutations(dungeons, len(dungeons))): cur_k = k expol_cnt = 0 for dungeon in perm: if cur_k >= dungeon[0]: expol_cnt += 1 cur_k -= dungeon[1] answ..

🤔문제 해결 signs 가 True 이면 더하고, False 이면 빼준다. 💻소스 코드 def solution(absolutes, signs): answer = 0 for i in range(len(absolutes)): if signs[i] is True: answer += int(absolutes[i]) else: answer -= int(absolutes[i]) return answer 📕문제 확인 출처: 프로그래머스 링크: https://programmers.co.kr/learn/courses/30/lessons/76501?language=python3 코딩테스트 연습 - 음양 더하기 어떤 정수들이 있습니다. 이 정수들의 절댓값을 차례대로 담은 정수 배열 absolutes와 이 정수들의 부호를 차..

🤔문제 해결 1. BFS | silver1 2. 익은토마토(값이 1)를 찾아서 리스트에 담는다. 3. 3번의 리스트를 BFS를 실행한다. 4. 4번을 다 하고 나면 아직 익지 않은 토마토(0)가 있는 확인하고 있으면 -1을 답으로 출력 5. 없으면 가장 큰 값에서 -1한 값을 답으로 출력 💨 3차원 배열이라서 헷갈릴 수 있는 문제. 하지만 단순히 BFS로 풀면 된다. 💻소스 코드 from _collections import deque dx, dy, dz = [-1, 1, 0, 0, 0, 0], [0, 0, -1, 1, 0, 0], [0, 0, 0, 0, -1, 1] # 아래층 윗층 앞 뒤 좌 우 # BFS로 주변 토마토 익히기 def ripen(): while q: x, y, z = q.popleft()..

🤔문제 해결 1. D4 | MST - prim 2. 간선의 가중치를 값으로 하는 인접 행렬을 만든다 3. 최소 값을 갱신해줄 가중치 리스트, MST에 포함되지 체크하는 리스트, 부모노드 선택리스트를 만든다. (여기서는 모든 노드가 연결될 수 있기 때문에 부모노드는 필요하지 않을 수 있음) 4. 시작점을 선택(여기서는 0)하고 간선을 돌며 탐색한다 (1) 아직 MST에 포함되어 있지 않고, 가중치가 최소인 정점 u를 찾는다. (2) u를 MST에 포함시키고, 그 가중치를 결과값에 더해준다. (3) 가중치를 최솟값으로 갱신하기 위해 u에 인접하고 아직 mst가 아닌 정점(w) 중에서 key[w] > u-w 이면 갱신한다 5. 모든 노드를 선택할 때까지 4번을 반복한다. 💨 최소신장트리 알고리즘, 크루스칼과 ..