DateTimeIndex를 Series로 변환하기Pandas에서 DateTimeIndex를 Series로 변환하려면 DateTimeIndex.to_series() 메서드를 사용합니다. 이 메서드는 인덱스의 날짜·시간 값을 값(value)으로 갖는 Series를 생성해 주며, 인덱스 자체도 동일한 날짜·시간 값으로 유지됩니다.필수 라이브러리 임포트먼저 필요한 라이브러리를 임포트합니다.import pandas as pdDatetimeIndex 생성기간(period)은 5로 설정하고, 빈도(freq)는 초 단위인 S로 지정하여 Datet
Pandas에서 DateTimeIndex를 시간대(TimeZone) 정보를 제외한 상태로 Series로 변환하려면 datetimeindex.tz_convert(None).to_series() 메서드를 사용합니다. 여기서 tz_convert(None)은 인덱스에 설정된 시간대 정보를 제거하는 역할을 합니다.1. 필요한 라이브러리 임포트먼저 pandas 라이브러리를 임포트합니다.import pandas as pd2. DateTimeIndex 생성시작 시점을 지정하고, 주기(periods)는 5개, 빈도(freq)는 초 단위인 40S로
Pandas에서 DateTimeIndex를 DataFrame으로 변환할 때 기존 인덱스를 무시하고 싶다면 to_frame() 메서드에 index=False 매개변수를 설정하면 됩니다. 이 경우 반환되는 DataFrame에는 원래의 날짜·시간 인덱스가 설정되지 않고, 대신 0부터 시작하는 기본 정수 인덱스가 자동으로 부여됩니다. 1단계: 라이브러리 임포트 먼저 필요한 라이브러리를 임포트합니다. import pandas as pd 2단계: DatetimeIndex 생성하기 기간(periods)은 5개, 빈도(frequency)는
DateTimeIndex에서 DataFrame을 생성하려면 datetimeindex.to_frame() 메서드를 사용합니다. 이때 name 매개변수를 지정하면 생성되는 결과 열의 이름을 원하는 값으로 자유롭게 재정의할 수 있습니다. 라이브러리 임포트 먼저 필요한 라이브러리를 임포트합니다. import pandas as pd DatetimeIndex 생성 기간(periods)은 5, 빈도(freq)는 S, 즉 초 단위로 지정하여 DatetimeIndex를 생성합니다. 타임존은 호주 애들레이드(Australia/Adelaide)로
두 개의 숫자 n과 k가 주어졌다고 가정해 보겠습니다. 이때 우리는 길이가 k이면서 거리가 n이 되는, 사전순(lexicographically)으로 가장 작은 소문자 문자열을 찾아야 합니다. 여기서 말하는 거리(distance)는 문자열을 이루는 각 알파벳의 번호를 모두 더한 값입니다. 예를 들어 a는 1번, b는 2번, y는 25번, z는 26번입니다. 따라서 입력이 n = 15, k = 3이라면 출력은 aam이 됩니다. aam의 거리는 1 + 1 + 13 = 15이며, 거리가 15인 길이 3의 문자열 중에서 사전순으로 가장 앞에
TimeDeltaIndex 객체란?Pandas에서 시간 간격(time delta) 데이터를 인덱스로 다뤄야 할 때는 pandas.TimedeltaIndex() 메서드를 사용하면 됩니다. 이 메서드를 활용하면 두 시점 사이의 차이를 나타내는 timedelta 값을 하나의 인덱스 객체로 손쉽게 만들 수 있습니다.기본 사용법가장 먼저 필요한 라이브러리를 임포트합니다.import pandas as pd이어서 TimeDeltaIndex 객체를 생성합니다. 아래 예제에서는 data 매개변수에 timedelta 형식의 문자열 목록을 전달했습니다
문제 소개방 안에 n개의 토글 스위치가 있고, 사람도 n명이 있다고 가정해 봅시다. 이들은 다음과 같은 규칙에 따라 순서대로 스위치를 조작합니다.1번 사람: 들어와서 모든 스위치를 누릅니다.2번 사람: 2의 배수 번호(2, 4, 6, ...)에 해당하는 스위치를 누릅니다.i번 사람: i의 배수 번호에 해당하는 스위치를 누릅니다. 이 과정이 n번 사람까지 반복됩니다.모든 사람이 지나간 후, 최종적으로 켜져 있는(ON) 스위치가 몇 개인지 구하는 것이 이 문제의 목표입니다.예시로 이해하기n = 5일 때를 살펴보겠습니다. 처음에는 모든
TimeDeltaIndex 객체의 각 요소에서 일(day) 수를 추출하려면 TimedeltaIndex.days 속성을 사용하면 됩니다. 이 속성은 각 timedelta 값에 포함된 전체 일수를 정수 형태로 반환합니다.라이브러리 가져오기먼저 필요한 라이브러리를 임포트합니다.import pandas as pdTimeDeltaIndex 객체 생성이제 TimeDeltaIndex 객체를 생성합니다. data 매개변수를 사용하여 timedelta 형식의 데이터를 설정할 수 있습니다.tdIndex = pd.TimedeltaIndex(data =
문제 개요숫자로 이루어진 리스트 nums가 주어졌다고 가정해 보겠습니다. 이 리스트를 part1과 part2라는 두 부분으로 나누되, part1의 모든 요소가 part2의 모든 요소보다 작거나 같아야 한다는 조건이 있습니다. 이때 만들 수 있는 part1의 최소 길이(단, 길이가 0이 되어서는 안 됨)를 구하는 것이 목표입니다.예를 들어 입력이 nums = [3, 1, 2, 5, 4]라면 결과는 3이 됩니다. 리스트를 part1 = [3, 1, 2]와 part2 = [5, 4]로 나누면 part1의 모든 요소가 part2의 모든 요
숫자 리스트 logs와 값 limit이 주어져 있다고 가정해 보겠습니다. logs[i]의 각 요소는 i번째 사용자가 생성한 로그의 크기를 나타내고, limit은 데이터베이스에 저장할 수 있는 로그의 총 크기(용량 제한)를 의미합니다. 우리가 구해야 할 것은 가장 큰 값 x입니다. 즉, 모든 로그를 각각 최대 크기 x로 잘라냈을 때 남은 로그 크기의 합이 limit 이하가 되도록 하는 x입니다. 만약 어떤 로그도 잘라낼 필요가 없다면, 단순히 가장 큰 로그의 크기를 그대로 반환하면 됩니다.예를 들어 입력이 logs = [500, 20
문제 개요이진 문자열(binary string) s가 주어졌다고 가정해 보겠습니다. 우리는 최대 한 개의 0을 1로 뒤집을 수 있으며, 이 조건에서 만들 수 있는 가장 긴 연속된 1의 부분 문자열 길이를 구하는 것이 목표입니다.예를 들어 입력이 s = 1010110001이라면, 인덱스 3에 있는 0을 뒤집아 1011110001을 만들 수 있습니다. 이 문자열에서 가장 긴 연속된 1의 길이는 4이므로, 출력 결과는 4가 됩니다.접근 방법: 슬라이딩 윈도우이 문제는 슬라이딩 윈도우(Sliding Window), 즉 투 포인터 기법을 사
숫자 리스트 nums와 정수 값 diff가 주어졌다고 가정해 봅시다. 이때 부분 수열 내에서 인접한 두 숫자의 차이가 항상 diff와 같도록 만들 수 있는 가장 긴 등차 부분 수열의 길이를 구하는 것이 목표입니다.예를 들어 입력이 nums = [-1, 1, 4, 7, 2, 10], diff = 3이라면 출력은 4가 됩니다. 그 이유는 [1, 4, 7, 10]과 같은 부분 수열을 선택할 수 있고, 각 인접 원소의 차이가 모두 3으로 일정하기 때문입니다.문제 해결 접근 방식이 문제는 동적 계획법(DP)과 해시맵(딕셔너리)을 활용하면 O
음이 아닌 정수 n이 주어졌을 때, 그 숫자의 이진수 표현에서 가장 긴 연속된 1의 길이를 구하는 문제입니다.문제 이해하기예를 들어 입력값이 n = 1469라고 해보겠습니다. 1469의 이진수 표현은 10110111101이며, 이 안에는 네 개가 연속된 1이 존재합니다. 따라서 출력 결과는 4가 됩니다.해결 접근 방법이 문제는 비트 AND 연산(&)과 왼쪽 시프트 연산(<<)을 활용하면 간단하게 해결할 수 있습니다. 알고리즘의 핵심 단계는 다음과 같습니다.카운터 변수 count를 0으로 초기화합니다.n이 0이 아닌 동안 다음
문제 개요모든 요소가 고유(unique)한 숫자 리스트 nums가 주어졌을 때, 서로 연속된 값들로만 이루어진 가장 긴 부분 리스트(연속 하위 목록)의 길이를 찾는 것이 목표입니다.예를 들어, 입력이 nums = [3, 6, 7, 5, 4, 9]라고 한다면 출력은 5가 됩니다. 부분 리스트 [3, 6, 7, 5, 4]가 3부터 7까지의 모든 연속적인 값을 포함하고 있기 때문입니다.접근 방법이 문제의 핵심 아이디어는 다음과 같습니다. 어떤 구간 [i, j] 안에서 최댓값과 최솟값의 차이가 구간의 길이와 정확히 일치한다면, 그 구간의
문제 정의 영어 소문자 알파벳과 물음표(?)로 구성된 문자열 s가 주어졌다고 가정해 보겠습니다. 각 물음표는 제거하거나 임의의 소문자로 대체할 수 있습니다. 이때 문자 a로 시작하면서 알파벳 순서대로 연속적으로 증가하는 부분 문자열 중 가장 긴 것의 길이를 구해야 합니다. 예를 들어 입력 문자열이 s = vta???defke라면 정답은 6입니다. 물음표 세 개를 b, c, d로 바꾸면 문자열이 vtabcdefke가 되는데, 여기서 abcdef가 a로 시작하는 가장 긴 연속 증가 부분 문자열이기 때문입니다. 접근 방법 이 문제는 문
숫자로 이루어진 리스트 nums가 주어졌을 때, 리스트에서 최대 한 개의 원소를 제거할 수 있다고 가정하고, 연속적이면서 엄격하게(엄밀히) 증가하는 부분 리스트의 최대 길이를 구하는 문제입니다.예를 들어 입력이 nums = [35, 5, 6, 7, 8, 9, 12, 11, 26]라면 출력은 7이 됩니다. 12를 제거하면 리스트는 [5, 6, 7, 8, 9, 11, 26]이 되어 길이 7짜리 연속적인 엄격 증가 부분 리스트가 만들어지며, 이것이 가능한 가장 긴 경우이기 때문입니다.문제 해결 접근 방식이 문제는 동적 계획법(DP)을 활
문제 개요0은 빈 칸(empty cell), 1은 벽(wall)을 의미하는 이진 행렬(binary matrix)이 주어졌다고 가정해 봅시다. 우리는 첫 번째 행의 임의의 빈 칸에서 출발하여 마지막 행의 임의의 빈 칸에 도달해야 합니다. 이동은 왼쪽, 오른쪽, 아래 세 방향으로만 가능하며, 각 칸은 최대 한 번만 방문할 수 있습니다. 이 조건에서 가능한 가장 긴 경로의 길이를 구하고, 경로가 존재하지 않으면 0을 반환하면 됩니다.입력 예시000000010000위 행렬의 경우 정답은 10입니다. 예를 들어 다음 순서대로 이동하면 총 1
문제 개요소문자로만 이루어진 문자열들의 리스트 w가 주어졌다고 가정해 보겠습니다. 이때 w에서 만들 수 있는 가장 긴 시퀀스의 길이를 구해야 합니다. 여기서 유효한 시퀀스란, 각 이전 단어가 다음 단어의 접두사(prefix)이면서, 다음 단어는 이전 단어에 새로운 문자를 정확히 하나만 추가한 형태여야 하는 시퀀스를 의미합니다.예를 들어 입력이 w = [pqr, pq, m, mn, pqrs]라고 해보겠습니다. 이 경우 출력은 3이 됩니다. 왜냐하면 [pq, pqr, pqrs]라는 시퀀스를 만들 수 있고, 각 단어가 조건을 만족하며 그
문제 개요소문자로만 구성된 문자열 s가 주어졌을 때, 문자열 안에서 최소 두 번 이상 등장하는 가장 긴 부분 문자열의 길이를 구해야 합니다. 만약 두 번 이상 나타나는 부분 문자열이 존재하지 않는다면 0을 반환합니다.예를 들어 입력이 s = abdgoalputabdtypeabd라면 결과는 3입니다. 왜냐하면 두 번 이상 등장하는 가장 긴 부분 문자열이 바로 abd이고, 그 길이가 3이기 때문입니다.해결 전략: 접미사(Suffix) 비교 방식이 문제는 접미사 배열을 활용하면 효율적으로 해결할 수 있습니다. 핵심 아이디어는 다음과 같습
숫자로 이루어진 리스트 nums가 주어졌을 때, 2 × (부분 리스트의 최솟값) > (부분 리스트의 최댓값) 조건을 만족하는 가장 긴 연속 부분 리스트(sublist)의 길이를 구하는 문제입니다.예를 들어 입력이 nums = [10, 2, 6, 6, 4, 4]라면 출력은 4가 됩니다. 그 이유는 부분 리스트 [6, 6, 4, 4]에서 최솟값은 4, 최댓값은 6이고, 2 × 4 = 8 > 6이므로 조건을 충족하며, 이보다 긴 구간 중 조건을 만족하는 것은 없기 때문입니다.접근 방법: 슬라이딩 윈도우 + 모노토닉 데크이 문제