두 개의 리스트 nums1과 nums2가 있다고 가정해 봅시다. 이 두 리스트는 각각 런-렝스 인코딩(Run-Length Encoding, RLE) 형태로 압축된 벡터를 나타냅니다.예를 들어, 벡터 [1, 1, 1, 2, 2, 2, 2]는 [3, 1, 4, 2]로 표현할 수 있습니다. 값 1이 3개, 값 2가 4개 연속으로 나타나기 때문입니다. 즉, RLE 형식에서 리스트는 [개수, 값, 개수, 값, ...]의 쌍으로 구성됩니다.우리의 목표는 이렇게 인코딩된 두 벡터의 내적(dot product)을 구하는 것입니다. 내적이란 두 벡
0과 1로 이루어진 이진 문자열 input_str이 주어졌다고 가정해 보겠습니다. 우리가 해야 할 작업은 문자열 안의 1들을 서로 교환(swap)하여 0과 1을 각각 그룹으로 모으는 것이며, 이때 필요한 스왑 연산 횟수를 최소화하고 그 최솟값을 반환하는 것입니다.여기서 중요한 제약 조건은 하나 있습니다. 바로 인접한 값끼리만 스왑할 수 있다는 점입니다.예를 들어 입력이 input_str = 10110101이라면 출력은 4가 됩니다. 실제 스왑 과정은 다음과 같습니다.10110101 → 01110101 → 01111001 → 0111
이번 글에서는 파이썬을 이용해 두 통화 사이의 환율을 계산하는 프로그램을 만들어 보겠습니다. 문제는 다음과 같이 정의할 수 있습니다.세 개의 배열 curr_a, curr_b, conv_rate가 주어집니다. curr_a와 curr_b에는 통화 이름들이 들어 있고, conv_rate에는 각 통화 쌍의 변환 비율이 저장되어 있습니다. 즉, conv_rate[i]는 curr_a[i]에서 curr_b[i]로 바꿀 때 적용되는 환율입니다.여기에 출발 통화 src와 도착 통화 dest가 추가로 주어지면, src에서 dest까지의 최종 환율을
여러 나라에 걸쳐 있는 도시들을 방문하는 자동차 여행을 계획한다고 가정해 보겠습니다. 도로 정보는 목록 R로 주어지며, 각 요소는 (x, y, cost) 형식입니다. 여기서 x는 해당 도로의 출발 도시, y는 도착 도시, cost는 그 도로를 이용할 때 드는 비용을 의미합니다. 또한 나라별 도시 정보를 담은 목록 C가 주어지는데, 각 요소는 하나의 나라를 나타내며 그 나라에 속한 도시들을 포함합니다.출발 도시 s에서 목적지 도시 e로 이동할 때, 국가 간 이동(국경 통과) 횟수를 최소화하는 경로를 찾아야 합니다. 동시에 여행의 총
문제 소개두 명이 번갈아 진행하는 구슬 게임을 생각해 봅시다. 게임에는 총 n개의 구슬이 있으며, 각 라운드마다 플레이어는 반드시 양의 정수인 제곱수(1, 4, 9, 16 ...)만큼의 구슬을 가져가야 합니다. 만약 자기 차례에 가져갈 수 있는 제곱수가 없다면 그 플레이어가 패배합니다.주어진 숫자 n에 대해, 우리가 항상 먼저 시작하고 매번 최적의 선택을 한다고 가정할 때 이 게임에서 승리할 수 있는지를 판별하는 것이 목표입니다.예제로 이해하기예를 들어 입력값이 14라면 결과는 True(승리)입니다. 과정은 다음과 같습니다.첫 차례
문제 개요카드 게임을 하고 있다고 가정해 보겠습니다. 각 카드마다 숫자가 적혀 있고, 이 카드들이 일렬로 나열되어 있으며 숫자는 무작위로 배치되어 있습니다. 또한 카드 목록의 맨 앞과 맨 끝에는 숫자 1이 적힌 카드가 하나씩 추가됩니다. 게임의 목표는 주어진 카드들을 골라 수집하여 최대한 많은 포인트를 얻는 것입니다.카드는 배열 cards로 표현되며, 배열의 각 원소는 해당 위치 카드에 적힌 숫자를 의미합니다. i번째 카드를 집으면 cards[i - 1] * cards[i] * cards[i + 1]만큼의 포인트를 얻습니다. 카드를
문제 설명 2차원 공간에 포인터가 좌표 (px, py)를 갖는 점 p에 위치해 있다고 가정해 봅시다. 이 포인터는 좌표 (qx, qy)를 갖는 점 q로 이동해야 하지만, 자유롭게 움직일 수는 없습니다. 포인터는 현재 위치를 기준으로 (x+1, y), (x, y+1), (x-1, y), (x, y-1) 네 방향에 있는 점으로만 한 칸씩 이동할 수 있습니다. 여러 좌표 점을 담고 있는 배열 paths가 주어집니다. 이 배열의 점들은 반드시 순서대로 처리해야 하며, 해당 점으로 실제 이동이 불가능한 경우에도 배열의 모든 점은 처리 대상에
문제 소개 각 원소가 [p, q, r] 형태로 이루어진 배열 mat이 주어졌다고 가정해 보겠습니다. 여기서 p와 q는 기하학적 좌표를 나타내고, r은 반경 값입니다. 배열의 각 항목은 폭이 w로 주어진 직사각형 영역 안에 놓여 있는 폭탄의 위치를 의미합니다. 이 직사각형은 무한히 길며, x 좌표 기준으로 x = 0부터 x = w 사이로 경계가 정해져 있습니다. 폭탄 위치에 포함된 r 값은 해당 폭탄의 안전 반경(safety radius)을 뜻합니다. 즉, 폭탄 중심에서 이 반경 이내로 접근하면 폭탄이 작동하게 됩니다. 따라서 우리
문제 개요양의 정수로 이루어진 리스트가 주어졌다고 가정해 봅시다. 이 리스트를 내림차순으로 정렬한 뒤, 모든 요소를 이어 붙여 하나의 문자열을 만들고, 그 결과를 반환하는 것이 목표입니다.예를 들어 입력이 [415, 78, 954, 123, 5]라면, 출력은 954785415123이 됩니다.해결 접근 방식단순히 숫자의 크기대로 정렬한다고 해서 원하는 결과를 얻을 수 있는 것은 아닙니다. 어떤 두 수를 나란히 배치했을 때 더 큰 값이 되는지는 숫자 자체의 크기만으로는 판단하기 어렵기 때문입니다. 따라서 두 요소를 이어 붙인 결과를 서
Pandas의 CategoricalIndex에서 범주 코드(category codes)를 확인하려면 codes 속성을 사용하면 됩니다. 먼저 필요한 라이브러리를 임포트합니다.import pandas as pdCategoricalIndex는 제한적이고 대개 고정된 개수의 가능한 값(범주)만 가질 수 있습니다. categories 매개변수를 사용해 범주를 지정하고, ordered 매개변수를 사용해 해당 범주형 데이터를 순서가 있는 것으로 처리할 수 있습니다.여기서 코드(codes)란 실제 값들이 categories 배열 내에서 위치한
Pandas의 CategoricalIndex에 포함된 범주(categories)를 확인하려면 categories 속성을 사용하면 됩니다. 이 속성은 해당 범주형 인덱스가 가질 수 있는 고유한 값들의 목록을 반환합니다.1. 라이브러리 임포트먼저 필요한 라이브러리를 임포트합니다.import pandas as pd2. CategoricalIndex 생성CategoricalIndex는 제한적이며 일반적으로 고정된 개수의 가능한 값(범주)만 가질 수 있습니다.categories 매개변수를 사용해 범주를 지정하고, ordered 매개변수를 T
Pandas의 CategoricalIndex에서 범주(category)들이 순서(ordered) 관계를 가지는지 확인하려면 ordered 속성을 사용하면 됩니다. 이 속성은 해당 범주형 인덱스가 순서가 지정된 카테고리인지 여부를 True 또는 False로 반환합니다.1. 라이브러리 가져오기먼저 필요한 라이브러리를 임포트합니다.import pandas as pd2. 순서가 있는 CategoricalIndex 생성하기categories 매개변수로 범주를 설정하고, ordered 매개변수를 True로 지정하여 순서가 있는 범주형 인덱스를
Pandas에서 CategoricalIndex의 카테고리 이름을 변경하려면 rename_categories() 메서드를 사용합니다. 이 메서드는 기존 카테고리를 새로운 값으로 한 번에 교체할 수 있어 데이터 전처리 과정에서 매우 유용하게 활용됩니다.라이브러리 임포트먼저 필요한 라이브러리를 임포트합니다.import pandas as pdCategoricalIndex 생성하기CategoricalIndex는 제한적이고 일반적으로 고정된 개수의 가능한 값만 가질 수 있습니다. categories 매개변수를 사용해 범주형 데이터의 카테고리를
Pandas에서 CategoricalIndex의 범주 이름을 딕셔너리(dict) 형태의 새 범주로 변경하려면 rename_categories() 메서드를 사용하면 됩니다. 이 메서드는 기존 범주를 키(key)로, 새 범주를 값(value)으로 매핑하여 한 번에 손쉽게 이름을 바꿀 수 있게 해줍니다.1. 필요한 라이브러리 가져오기먼저 pandas 라이브러리를 임포트합니다.import pandas as pd2. 순서가 있는 CategoricalIndex 생성CategoricalIndex는 제한적이고 일반적으로 고정된 개수의 가능한 값만
Pandas에서 람다(lambda) 함수를 사용해 카테고리의 이름을 변경하려면 CategoricalIndex의 rename_categories() 메서드를 활용하면 됩니다.먼저 필요한 라이브러리를 임포트합니다.import pandas as pdCategoricalIndex는 제한적이고 대개 고정된 개수의 가능한 값만 가질 수 있습니다. categories 매개변수를 사용해 범주형 데이터의 카테고리를 설정하고, ordered 매개변수를 사용해 해당 범주형을 순서가 있는(ordered) 것으로 지정합니다.catIndex = pd.Cat
Pandas에서 CategoricalIndex의 카테고리 순서를 변경하려면 reorder_categories() 메서드를 사용합니다. 이 메서드를 활용하면 기존에 정의된 카테고리의 순서를 원하는 대로 손쉽게 재배열할 수 있습니다.1. 라이브러리 임포트먼저 필요한 라이브러리를 임포트합니다.import pandas as pd2. CategoricalIndex 생성CategoricalIndex는 제한적이고 대개 고정된 개수의 가능한 값(카테고리)만 가질 수 있습니다. categories 매개변수로 카테고리를 지정하고, ordered 매개
Pandas에서 CategoricalIndex는 값이 제한된 수의 카테고리(범주) 중 하나만 가질 수 있는 인덱스입니다. 분석 도중 기존에 정의되지 않은 새로운 범주가 필요해질 때가 있는데, 이럴 때 add_categories() 메서드를 사용하면 기존 인덱스의 값을 그대로 유지한 채 새로운 카테고리를 손쉽게 추가할 수 있습니다.라이브러리 임포트먼저 필요한 라이브러리를 임포트합니다.import pandas as pdCategoricalIndex 생성하기"categories" 매개변수를 사용해 범주형 데이터의 카테고
Pandas의 remove_categories() 메서드를 사용하면 CategoricalIndex에서 지정된 범주를 손쉽게 제거할 수 있습니다. 이 글에서는 기본 개념부터 실제 예제 코드와 실행 결과까지 단계별로 살펴보겠습니다.1. 라이브러리 임포트먼저 필요한 라이브러리를 임포트합니다.import pandas as pd2. CategoricalIndex 생성categories 매개변수를 사용해 범주형 데이터의 카테고리를 설정하고, ordered 매개변수를 통해 해당 범주를 순서가 있는(ordered) 범주로 지정합니다.catInde
Pandas에서 CategoricalIndex의 카테고리를 순서가 없는(unordered) 상태로 변경하려면 as_unordered() 메서드를 사용하면 됩니다. 이 메서드는 기존에 순서가 지정된(ordered) 범주형 인덱스를 순서 없는 상태로 변환해 줍니다.1. 라이브러리 임포트먼저 필요한 라이브러리를 임포트합니다.import pandas as pd2. 순서가 있는 CategoricalIndex 생성categories 매개변수를 사용하여 카테고리를 설정하고, ordered 매개변수에 True 값을 지정하여 순서가 있는 범주형 인
CategoricalIndex의 범주를 순서형으로 설정하기Pandas에서 CategoricalIndex의 범주를 순서형(ordered) 상태로 만들려면 as_ordered() 메서드를 사용하면 됩니다. 이 메서드를 호출하면 범주형 인덱스의 ordered 속성이 True로 변경되어, 범주 간 대소 비교나 지정된 순서에 따른 정렬이 가능해집니다.1단계: 필요한 라이브러리 임포트먼저 pandas 라이브러리를 임포트합니다.import pandas as pd2단계: CategoricalIndex 생성 및 범주 설정categories 매개변수