반응형

분류 전체보기 47

DataProc vs DataFlow

Dataflow와 Dataproc은 Google Cloud Platform (GCP)에서 데이터 처리 및 분석을 위한 서비스이다. 각각의 특징과 용도를 살펴보겠다. Dataproc: 특징: Dataproc은 Apache Spark 및 Apache Hadoop과 같은 오픈 소스 분산 데이터 처리 프레임워크를 위한 관리형 서비스이다. 클러스터 기반의 환경에서 대규모 데이터 처리 작업을 실행할 수 있다. 용도: Dataproc은 대용량 데이터 분석, ETL 작업, 머신러닝 모델 학습 등에 사용된다. 복잡한 데이터 분석 및 처리 작업을 위해 유연한 클러스터를 제공하여 성능을 최적화할 수 있다. Dataflow: 특징: Dataflow는 스트리밍 및 배치 데이터 처리를 위한 관리형 서비스이다. Apache Bea..

[Python 문제풀이] 프로그래머스 '표현 가능한 이진트리'

포화 이진트리의 노드 수는 2^n - 1이다.programmers lv2 파이썬 표현 가능한 이진트리접근 이진트리로 표현가능하기 위해선 중간에 끊긴 부분이 없어야 한다. 부모노드가 없이 자식노드가 있다면 하나의 이진트리로 표현 불가능할 것이다. 해당 부분을 체크하면서 탐색하면 되겠다. numbers의 원소는 최대 10^15 이며 leaf nodes를 제외한 모든 노드를 검사한다고 하면 (10^15- 1)/2이고 numbers의 길이는 10,000이다. 따라서 N의 크기는 (10^19-10^4)/2이며 전체탐색으로 풀 수 없는 크기이다. 근데 이게 된다. 입력값을 어느정도 제한해놓았을 것이라 생각한다. 의사코드1. 이진수로 바꾼다 2. 포화이진트리를 표현하기 위해 2^n-1의 길이가 되도록 앞에 '0'을 ..

[Python 문제 풀이] 프로그래머스 '인사고과'

Programmers Lv.3 '인사고과' 파이썬 코드 및 풀이조건파악두 수가 있고 둘 중 하나라도 어느 다른 것보다 높아야 원소를 남긴다.순서는 두 수의 합을 기준으로 한다. 접근 일단 하나씩 뽑아서 서로 다른 원소들과 비교하면 시간초과가 발생한다. 따라서 사전 정렬을 통해 문제를 단순화할 필요가 있다. 편의상 각 원소의 0번째 원소를 s0, 1번째 원소를 s1라 하겠다. 두 수 중 하나만 가지고 일단 내림차순으로 정렬시킨다. s0를 기준으로 정렬했다면 뒤에 오는 원소의 s1은 작거나 같을 테니 앞에서 순서대로 처리하면 된다. s0을 기준으로 정렬했으니 s1을 가지고 비교한다. 이를 위해서 앞에서부터 발견된 s1의 최대값을 기록한다. 이 최대값보다 작은 수가 발견된다면 해당 원소는 버린다. s0가 같은..

[Python 문제 풀이] 프로그래머스 '부대 복귀'

거리를 기록해놓자 접근 node와 link의 수가 꽤 많다. 그래서 그런가 그냥 BFS 적용하면 시간초과가 발생한다. 나처럼 쉬운문제부터 올라온 사람은 시간초과 문제를 겪을 것이다. 이 경우 기존에 방문했던 node들의 거리를 기록해놓고 다른 경로를 탐색할 때 활용해야 한다. 이러한 접근 방법은 동적계획법과 같다. A->B->C의 경로는 A->B와 B->C의 경로라는 부분문제로 나눌 수 있고 B까지의 경로를 사전에 계산해놓았다면 B->C만 계산하면 된다. 의사코드 주어진 배열을 인접리스트로 바꾼다. 노드의 수를 길이로 하는 costs배열을 만들고 모든 원소를 -1로 초기화한다. 출발점이 될 costs[destination]에 0을 대입한다. destination에서 출발해 인접한 노드의 거리를 +1씩 추..

[Python 문제풀이] 프로그래머스 '연속 펄스 부분 수열의 합'

알면 풀고 모르면 못 풂 조건파악 부분수열의 합에 추가로 펄스라는 조건이 추가되었다. 다행스럽게도 펄스는 1과-1뿐이며 어떤 수가 1 또는 -1로 정해지면 이웃한 원소의 펄스는 서로 반대의 펄스로 정해지게 된다. 즉 연속 부분수열의 길이와 별개로 펄스는 두 가지의 경우만 있다. 홀수 인덱스의 원소가 1이고 짝수 인덱스의 원소가 -1이거나 그 반대의 경우이다. 접근 해당 문제는 두 개의 부분 문제로 나눌 수 있다. 1. 홀수 인덱스 혹은 짝수 인덱스의 원소에 -1을 곱한 배열을 구하라 2. 부분수열의 합이 최대가 될 때 그 값을 구하라 1번의 경우 입력으로 주어진 배열을 통해 두 개의 배열을 만들어낼 수 있다. 그리고 나면 부분수열의 합이 최대가 될 때 그 값을 구하면 된다. 연속 부분 수열의 합의 최대값..

[Python 문제풀이] 프로그래머스 '파괴되지 않은 건물'

Programmers Lv.3 파괴되지 않은 건물 파이썬 문제풀이 조건파악 board의 크기 최대 (1,000 x 1,000) skill의 길이 최대 (250,000) 얼핏 보면 상당히 쉬운 문제이지만 효율성 테스트를 통과하기 어렵다. 단순한 알고리즘을 이용할 경우 최악의 경우 board에 있는 모든 원소인 1,000,000개에 대해 250,000번 연산을 수행해야 한다. 따라서 N은 최대 250,000,000,000이므로 O(N*M)의 방법으로는 도저히 풀 수 없게 된다. 접근 스킬들에 따른 영향을 사전에 모두 계산해놓은 뒤, board에 한 번에 합산한다. board의 원소 수를 N, skill의 길이를 M이라 하자. 이 경우 수행되는 연산의 수는 대략 k*M + N이다.(k는 임의의 가중치) 즉 시..

AMD 미니 PC 가성비 BEST 6 (2023년 상반기)

작은 박스형 미니PC의 시초는 Intel의 NUC였다고 생각한다. 그리고 한동안 NUC 프리미엄 제품을 제외한 다른 미니PC들은 모바일 프로세서의 한계 때문에 성능이 떨어지는 게 정설이었다. 그런데 언제부턴가 AMD의 모바일 프로세서와 iGPU가 탑재된 APU 제품의 성능이 놀랍도록 발전했다. 라이젠 프로세서가 탑재된 미니PC는 크기는 작지만 일상적인 업무부터 멀티미디어 편집까지 다양한 작업에 적합하다. AMD에 탑재된 Vega나 RDNA 내장그래픽 칩셋으로 롤 정도는 아주 원활하게 플레이가능하다고 한다. 한편, 내장그래픽은 둘째 치더라도 프로세서 성능만 봐도 상당히 준수하다. 결국 이것이 타워형 데스크탑을 대체할 수도 있겠다는 생각에 이르게 됐다. 시장에는 라이젠 CPU를 탑재한 미니PC가 정말 많다...

Consumer Tech 2023.06.04

[Python 문제 풀이] 프로그래머스 '두 원 사이의 정수 쌍'

Programmers Lv.2 '두 원 사이의 정수 쌍' 파이썬 조건파악 1. 닫힌구간 2. N이 최대 1,000,000이고 내부적으로 sqrt연산이 필요할 것 같다. 따라서 시간복잡도는 최대 O(NlogN)정도 되겠다. 접근 사분면으로 나누어서 하나의 사분면만 생각하자. x또는 y축 하나를 정해서 1부터 r2까지 축이동하며 스캔하면 편하겠다. 피타고라스 정리를 활용 그러고 나서 축 위의 두 원 사이에 위치한 정수의 개수를 세자. 축의 x또는 y좌표가 r1을 넘을 경우 대응되는 치역이 무리수이기 때문에 유효성 검사 장치를 마련하자. 의사코드 i를 1부터 r2까지 1씩 증가시키며 반복 sqrt(r1^2 - i^2)에서 sqrt(r2^2-i^2)까지 정수의 개수를 셈 i가 r1보다 커서 r1^2 - i^2가..

[Python 문제 풀이] 프로그래머스 '무인도 여행'

Programmers Lv.2 '무인도 여행' 파이썬 영역 탐색 -> BFS 조건파악 1. 영역 탐색 2. 탐색하면서 수를 누산해야 함 접근 recursive BFS를 이용. 의사코드 bfs()를 선언 bfs()는 재귀적으로 호출되며, 특정 지점에서 네 방향을 탐색하고 방문처리 유효한 탐색 방향에 대해 다시 bfs() 수행 후 결과들을 합산 bfs를 시작한 지점에서의 결과와 다시 합산하여 return 방문하지 않은 지점을 우선으로 전부 탐색하여 결과를 리스트에 저장 리스트를 정렬. 리스트가 비어있으면 [-1] 구현 import sys sys.setrecursionlimit(10**6) def solution(maps): answer = [] rows = len(maps) cols = len(maps[0]..

반응형