from sys import stdin
N, M = map(int, stdin.readline().strip().split())
powers = []
titles = []
for _ in range(N):
title, power = map(str, stdin.readline().strip().split())
power = int(power)
powers.append(power)
titles.append(title)
for _ in range(M):
userPower = int(stdin.readline().strip())
for idx in range(len(powers)):
if userPower <= powers[idx]:
print(titles[idx])
break
성공 코드
from sys import stdin
N, M = map(int, stdin.readline().strip().split())
powers = []
for _ in range(N):
title, power = map(str, stdin.readline().strip().split())
powers.append([title, int(power)])
powers.sort(key=lambda x: x[1]) # 오름차순 정렬
for _ in range(M):
power = int(stdin.readline().strip())
start = 0
end = len(powers)-1
while start <= end:
mid = (start+end) // 2
if power > powers[mid][1]:
start = mid + 1
else:
end = mid - 1
print(powers[start][0])
from sys import stdin
# 사전순 가장 빠른 것을 출력해야 하기 때문에
# 1은 왼쪽에서 부터 삭제, 0은 오른쪽에서부터 삭제
s = stdin.readline().strip()
count0 = s.count("0")//2
count1 = s.count("1")//2
while count0 > 0 or count1 > 0:
if count1 > 0:
idx1 = s.index("1")
s = list(s)
s[idx1] = ''
s = "".join(s)
count1 -= 1
if count0 > 0:
idx0 = s.rindex("0")
s = list(s)
s[idx0] = ''
s = "".join(s)
count0 -= 1
print("".join(s))
시계열 데이터는 행과 행사이에 시간의 흐름(순서)가 있고, 행과 행 사이의 시간간격이 동일한 데이터를 의미한다.
예) 가게의 일별 매출량 데이터
날짜 요소 뽑기
날짜 타입의 변수로 부터 날짜의 요소(일, 월, 주차, ..)를 뽑을 수 있다.
.dt.날짜 요소
메서드
내용
df['date'].dt.date
YYYY-MM-DD(문자)
df['date'].dt.year
연(4자리 숫자)
df['date'].dt.month
월(숫자)
df['date'].dt.month_name()
월(문자)
df['date'].dt.day
일(숫자)
df['date'].dt.time
HH:MM:SS(문자)
df['date'].dt.hour
시(숫자)
df['date'].dt.minute
분(숫자)
df['date'].dt.second
초(숫자
df['date'].dt.quarter
분기(숫자)
df['date'].dt.day_name()
요일 이름(문자)
df['date'].dt.weekday
요일숫자(0-월, 1-화, 2-수, ...) (=dayofweek)
df['date'].dt.dayofyear
연 기준 몇일째(숫자)
df['date'].dt.days_in_month
월 일수(숫자) (daysinmonth)
data = pd.DataFrame([
['2024-02-22', 20153],
['2024-02-23', 20546],
['2024-02-24', 2053],
['2024-02-25', 2033],
['2024-02-26', 2234532],
['2024-02-27', 2653261],
], columns=["Date", "Sales"])
data['Date'] = pd.to_datetime(data['Date'])
print(data['Date'].dt.date) # 각 행 별 날짜 출력
print(data['Date'].dt.year) # 각 행 별 년도 출력
print(data['Date'].dt.month)# 각 행 별 월 출력
print(data['Date'].dt.month_name()) # 각 행 별 월 영어로 출력
print(data['Date'].dt.day) # 각 행 별 일 출력
print(data['Date'].dt.time) # 각 행 별 시간 출력 => 현재 데이터에는 시간이 없어서 00:00:00
print(data['Date'].dt.hour) # 현재 데이터에는 시간이 없어서 0
print(data['Date'].dt.minute) # 현재 데이터에는 시간이 없어서 0
print(data['Date'].dt.second) # 현재 데이터에는 시간이 없어서 0
print(data['Date'].dt.quarter) # 각 행 별 분기
print(data['Date'].dt.day_name()) # 요일 이름 (문자)
print(data['Date'].dt.weekday) # 각 행 별 요일 이름 (숫 자)
print(data['Date'].dt.dayofyear) # 각 행 별 연 기준 몇일째 인지
print(data['Date'].dt.days_in_month) # 각 행 별 월 일수
.shift()
시계열 데이터에서 시간의 흐름 전후로 정보를 이동시킬 때 사용한다.
data = pd.DataFrame([
['2024-02-22', 20153],
['2024-02-23', 20546],
['2024-02-24', 2053],
['2024-02-25', 2033],
['2024-02-26', 2234532],
['2024-02-27', 2653261],
], columns=["Date", "Sales"])
data['Date'] = pd.to_datetime(data['Date'])
data['sales_lag1'] = data['Sales'].shift() # 하루 전날 데이터 열 추가
data['sales_lag2'] = data['Sales'].shift(2) # 2일 전날 데이터 열 추가
data['sales_lag_1'] = data['Sales'].shift(-1) # 다음 날 데이터 열 추가
data
.rolling().mean()
시간의 흐름에 따라 일정 기간 동안 평균을 이동하면서 구하기
data = pd.DataFrame([
['2024-02-22', 200],
['2024-02-23', 300],
['2024-02-24', 400],
['2024-02-25', 50],
['2024-02-26', 1000],
['2024-02-27', 250],
], columns=["Date", "Sales"])
data['Date'] = pd.to_datetime(data['Date'])
data['sales_mean3'] = data['Sales'].rolling(3).mean() # 3일 동안의 평균
data['sales_max3'] = data['Sales'].rolling(3).max() # 3일 동안의 최대값
data['sales_mean3_min_periods1'] = data['Sales'].rolling(3, min_periods=1).mean() # 3일 동안의 평균을 계산하는데, 하나의 값이라도 존재하면 바로 계산
data
.diff()
특정 시점 데이터, 이전 시점 데이터와의 차이 구하기
.diff() : 현재 - 하루 전
.diff(2) : 현재 - 2일 전
data = pd.DataFrame([
['2024-02-22', 200],
['2024-02-23', 300],
['2024-02-24', 400],
['2024-02-25', 50],
['2024-02-26', 1000],
['2024-02-27', 250],
], columns=["Date", "Sales"])
data['Date'] = pd.to_datetime(data['Date'])
data['diff1'] = data['Sales'].diff() # 현재 - 하루 전 값
data['diff2'] = data['Sales'].diff(2) # 현재 - 2일 전 값
data['diff3'] = data['Sales'].diff(3) # 현재 - 3일 전 값
data