반응형

전체 글 50

[Python 문제 풀이] 프로그래머스 '정수 삼각형'

DP의 정석적인 유형 조건파악 - 삼각형의 높이는 최대 500 - 바로 아래 양쪽에 있는 두 개의 노드로만 누산될 수 있다. 접근 깊이 우선 탐색을 고려한다면 그것은 전체탐색이나 다름 없다. 최대가 어떤 경우에 발생하는지 알 수 없기 때문이다. 최상단에서 누적되는 방향이 두가지 밖에 없다 하더라도 경우의 수가 너무 많아진다. 다행히 최대가 되는 경로까지는 기록하지 않아도 되니 수의 합에만 집중할 수 있다. DP의 기본 원리는 큰 문제를 작은 문제로 분해하여 작성하는 것이다. 노드 하나에 더해질 수 있는 인접 노드는 두 개 뿐인 것에 주목하자. 최종적으로 최대값이 만들어지기 위해서는 단지 두 개의 노드 중 하나를 선택하는 작은 문제에서도 최대값을 취해야 한다. 작은 문제를 발견한 다음엔 이것들의 결과를 전..

4만원에 최고의 통화품질 Soundpeats Life 무선 이어폰

이번 포스팅에서는 블루투스 무선 이어폰 Soundpeats Life를 소개하겠다. 개인적으로 5만원 이하 저가형 제품 중에선 통화품질이 가장 좋다고 본다. 따라서 누군가에게 최고의 선택이지 않을까 싶다. Soundpeats Life의 특징에 대해 알아보자. Soundpeats는 2010년에 중국에서 출발하여 현재까지 소비자 음향기기를 제조,판매하고 있는 업력이 꽤 긴 회사이다. 2013년에 글로벌 회사로 탈바꿈하여 미국 아마존에서 베스트셀러에 기록되기도 했다. 주목할 만한 부분은 일본 영상음향가전계의 오스카상이라 불리는 VGP 어워드에서 금상을 수상한 이력이 여러 번 있다는 것이다. 생각보다 기술력이 뛰어나고 인정받는 회사임을 알 수있다. 2021년에 Forbes에 소개된 이후 폭발적으로 성장한 것으로 ..

Consumer Tech 2023.10.05

가성비 (가격 대비 성분비) 프로틴바 Top 3 추천

어떤 프로틴바를 고를 것인가?  프로틴바 검색하면 진짜 많이 나온다. 미국업체인 마이프로틴부터 닥터유까지 다양한데, 심지어 아마존에 등록된 small business까지 합치면 셀 수가 없다. 바야흐로 프로틴바 전국시대에 이 글이 어떤 프로틴바를 고를지 말성이는 여러분을 위한 이정표가 될지도 모르겠다. 그런 이유에서 개인적인 프로틴바 추천 3위까지 소개하겠다.프로틴바 추천1. Pure protein bars BEST성분 : Protein 40g, Sugar 4g, Net carbs 20g, Fat 7g (초콜릿 피넛 버터 100g 기준)가격 : 약 1,250원 / Ounce (아마존 기준), 약 970원 / Ounce (일부 맛 상시 핫딜)맛 : 9가지. 취향따라 다양하게 고를 수 있음.✔️장점 - 고단..

Life 2023.09.10

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는 임의의 가중치) 즉 시..

반응형