일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- kubernetes
- OpenShift
- 솔루션조사
- jpa
- SpringBoot
- vuejs
- fast api
- POD
- 생성형 AI
- Redis
- k8s
- LeetCode
- 오픈시프트
- Machine Learning
- 생성형
- 컨설턴트
- 머신러닝
- fastapi
- LLaMa
- 도커
- 로깅
- BFS
- Docker
- 컨설팅
- vue.js
- GPT
- Python
- 리트코드
- 메세지큐
- 쿠버네티스
- Today
- Total
목록코딩테스트 (23)
수 많은 우문은 현답을 만든다
이해가 쉽지 않은 문제여서 시간을 많이 썼다. 문제링크 https://app.codility.com/c/run/trainingU25PJT-GGA/ A: 00 0000 1111 0111 1101 1110 0000 1111(BIN) = 16,244,239 conforms to B: 00 0000 1100 0110 1101 1110 0000 0001(BIN) = 13,032,961 여기서 conforms의 의미는 B가 A가 될 수 있다는 말이다. B가 A가 된다? 다시 해석하면 '0은 0도 될 수 있고 1도 될 수 있겠고, 그러면 pow(2, n)을 사용해야겠구나' 라는 아이디를 떠올리자. 문제 def solution(A, B, C) 그런데 문제는 위와같이 A, B, C 세개가 주어지고 한번에 conforms..
안녕하세요, 오늘은 Leet Code의 27번 문제를 풀어보겠습니다. 문제 링크 문제 내용 Given an integer array nums and an integer val, remove all occurrences of val in nums in-place. The order of the elements may be changed. Then return the number of elements in nums which are not equal to val. Consider the number of elements in nums which are not equal to val be k, to get accepted, you need to do the following things: Change the ..
문제 주어진 m x n 크기의 2D 이진 그리드 grid는 '1'로 표시된 육지와 '0'으로 표시된 물의 지도를 나타냅니다. 섬의 수를 반환하는 함수를 작성하세요. 섬은 물로 둘러싸여 있으며 수평 또는 수직으로 인접한 육지를 연결하여 형성됩니다. 그리드의 네 가장자리는 모두 물로 둘러싸여 있다고 가정할 수 있습니다. Example: Input: grid = [ ["1","1","0","0","0"], ["1","1","0","0","0"], ["0","0","1","0","0"], ["0","0","0","1","1"] ] Output: 3 아주 신나고 흥미 진진한 문제네요~ 생각보다 쉽게 풀릴 것 같은데요 한 번 풀어보겠습니다. class Solution: def numIslands(self, grid..
문제 이번엔 찾고자하는 타겟 val 값이 가장 가까운 vertex 까지의 거의를 반환하는 문제이다. 풀이 def findShortest(graph_nodes, graph_from, graph_to, ids, val): cost = -1 graph = defaultdict(list) for i in range(0, len(graph_from)): graph[graph_from[i]].append(graph_to[i]) graph[graph_to[i]].append(graph_from[i]) visited = set() def bfs(start): visited.add(start) q = deque([[start, 0]]) # ([])를 쓰면 TypeError: cannot unpack non-iterabl..
문제 문제를 간략히 설명하자면, n 개의 city가 있고 여기에 도서관(lib)을 세워야하고 인접한 city에는 도서관이 하나만 있으면 되는데 이때 최소비용을 구하는 문제입니다. (너무 내용을 축약했기 때문에 상세 조건들은 문제를 보셔야합니다) 최초 아이디어 def roadsAndLibraries(n, c_lib, c_road, cities): while q: x, y = q.popleft() if x not in visited and y not in visited: # elif x not in visited or y in visited: # return min(n * c_lib, result) 리스트가 [[1,2], [3,4] ...] 이런 모양이기 때문에 x, y 요소를 얻어내어서 각 점이 방문했는지..
문제 순수하게 짜려고하면 대략 3중 for문이 나온다. 딱히 그래프 데이터도없고 좌우로 이동하는 내용도 없으니 DFS, BFS는 아닌듯 하다. 이럴땐 수학적으로 접근해 작은 단위부터 규칙을 찾는수밖에... 다이나믹 프로그래밍(Dynamic Programming): 목적: 최적 부분 구조를 갖춘 문제를 해결하기 위한 기법으로, 작은 부분 문제들의 해를 저장하고 활용하여 전체 문제의 해를 효율적으로 계산하는 것이 목적입니다. 작동 방식: 문제를 작은 부분 문제들로 나누고, 각 부분 문제에 대한 해를 계산하여 메모이제이션(기억화)하며, 이를 조합하여 전체 문제에 대한 해를 구합니다. Bottom-up 방식과 Top-down 방식이 있습니다. 풀이 # n=1 # 1 # n=2 # 11 # 2 # n=3 # 11..
아나그램이란? 아나그램이란 한 단어의 철자를 분해해 다른 단어, 혹은 다른 문장으로 바꾸는 놀이 약간 수학적인 요소가 있어서 어렵지만 재미있는 훈련이 될 것이다. 문제: https://www.hackerrank.com/challenges/sherlock-and-anagrams/problem 설계: 1. 애너그램 처럼 실제로 문자를 뒤집고 하려면 복잡하다. 어떻게 단순화 할 수 있을까? -> 문자열 정렬 2. 문자열에 대한 모든 케이스를 조사해야되는데 삼중 포문이 필요하려나? -> 이중 포문만 있어도 된다 ㄴ 역할 1: 문자열 시작위치를 한칸씩 이동 ㄴ 역할 2: 자르는 범위를 한칸씩 또 늘려야한다. 3. 반복되는 문자가 나오면 count 를 증가시킨다. 4. 같은 문자가 여러번 반복되면 시그마 합을 구해..
허프만 코딩 : 데이터 문자의 등장 비도수에 따라서 다른 길이의 부호화를 사용하는 알고리즘 문제 링크 : Tree: Huffman Decoding | HackerRank 풀이 : 더보기 """class Node: def __init__(self, freq,data): self.freq= freq self.data=data self.left = None self.right = None """ # Enter your code here. Read input from STDIN. Print output to STDOUT def decodeHuff(root, s): //여기서 핵심은, 단순 재귀로 짜면 안되고, leaf에서 다시 루트로 돌아가야한다는것. //즉 두 스텝이건 세 스텝이건 원복해야하며 순차적 원복이 ..
Trees: Is This a Binary Search Tree? 문제링크 Input Node List 가 들어온다. Output Yes (또는 No) 풀이: 더보기 def checkBST(root): // 검증할때는 함수를 하나 더 만들어야한다. def check(node, min_v, max_v): if node is None: return True //None이 아닌 True를 반환 if min_v >= node.data or max_v
Binary Search Tree : Lowest Common Ancestor 구하기 문제링크 Input 6 4 2 3 1 7 6 1 7 Output [reference to node 4] 풀이 : 더보기 def lca(root, v1, v2): if not root: return None // BST 특성상 작은게 루트의 왼쪽에 있다면 무조건 왼쪽 탐색 if v1 root.info: return lca(root.right, v1, v2) //찾고자 하는 두개 원소가 양쪽으로 있다고 한다면, 방향에 상관없이 어쨌든 바이너리 트리이자 최소점임 else: return root