[TIL 024] 20220501
시험기간이라 한동안 못썼다 ㅜ 이제 다시 달려봐야지! 🏃🏻♀️ 💨
01 | 알고리즘
2553번
n = int(input())
# 팩토리얼을 시간을 절약하여 구하는 법
cnt = 1 #무엇을 곱할지
result = 1 #팩토리얼의 결과
while cnt!=n:
cnt+=1
result*=cnt
result = str(result)
for i in range(len(result)-1,-1,-1):
if result[i]!='0': #0이 아니라면
print(result[i])
break
else:
continue
당~ 연히 시간 초과가 날 것이라고 생각하고 제출했는데 그냥 한방에 정답 떴다
1406번 (실패)
"""
커서는 맨 앞, 맨 뒤, 중간 아무곳이나 위치 가능
L 왼쪽으로 한칸, 이미 맨 앞이면 무시
D 오른쪽 한칸, 이미 맨 뒤면 무시
B 왼쪽에 있는 문자 삭제 (맨 앞이면 무시) => 커서는 한칸 왼쪽으로 이동한\
것처럼 보이지만 실제로 커서 오른쪽의 문자는 그대로!
P $ $라는 문자를 왼쪽에 추가하기
"""
str_origin = list(input())
n = int(input())
order_list = [0]
for i in range(n):
order_list.append(input())
cursor_idx = len(str_origin)-1
for order in order_list:
if order=="L" :
if cursor_idx==0:
continue
else:
cursor_idx-=1
elif order=="D":
if cursor_idx==len(str_origin)-1:
continue
else:
cursor_idx+=1
elif order=="B":
if cursor_idx==0:
continue
else: #왼쪽 문자 삭제하기
del str_origin[cursor_idx]
elif order==0:
continue
else:
order_str = order[-1]
str_origin.insert(cursor_idx+1,order_str)
cursor_idx+=1
for i in range(len(str_origin)):
print(str_origin[i],end='')
뭔가.. 어리석게 가고 있는 것 같았던 문제
결국 해결 못하고 내일로 넘기게 되었다.
처음에는 각 문자열 뒤에 임의의 문자를 넣어서 커서의 위치를 모두 정해놨는데, 그렇게 하면 헷갈리기도 하고 insert 과정에서 시간초과가 나서 각 문자열의 인덱스를 커서의 앞이라고 생각했다.
예를 들어 'abc' 에서 커서의 위치에 a 즉 0이라면, a의 뒤에 커서가 있다고 생각했다. 그래서 맨 앞에는 0이라는 임의의 문자를 넣어서 커서의 위치를 각 위치마다 들어갈 수 있게 해뒀다. 그런데 계속 오류가 나고, 알고리즘에 할애해야 하는 시간을 다 써서 내일 다시 풀어보기로 했다!
02 | pylint 사용
학교에서 듣는 파이썬 심화 수업 중에 pylint 를 사용하라고 하셔서 처음으로 pylint 를 사용해봤다.
코드 컨벤션에서 맨 마지막 줄에 한번 엔터를 쳐야 한다는 것은 알고 있었는데, (이는 깃헙에서도 표시가 되기 때문에..) pylint 에서는 시각적으로 점수화해서 이가 깎이기 때문에 고치게 된다는 장점이 있었다.
더 잘 코드 스타일을 지키기 위해서 space trailing 이라는 확장 프로그램을 vscode 에 설치하여 불필요한 스페이스들을 줄이려는 노력도 해야겠다.
03 | 데이터 분석
학교 수업으로 데이터 분석을 듣고 있어서 과제로 데이터를 이리저리 만져보고 있다.
import pandas as pd
old_bicycle_us = pd.read_excel("./data/교통약자다발지점 사고지표-울산.xlsx")
# 사거리에서 얼마나 사고가 발생하는지 알아보기
old_bicycle_us.columns = ['지자체','기초','지점명','발생건수','사망','중상','경상','부상','대형사고','사망','중상','경상','부상','치사율']
old_bicycle_us = old_bicycle_us.dropna() #우선은.. 지점명 없는 것들 제외
old_bicycle_us
for x,location in old_bicycle_us.iteritems():
print(location)
# location = x['지점명']
# print(location)
# if '사거리' in str(location):
# crossroad = crossroad.drop(index = location)
# else:
# not_crossroad = not_corssroad.drop(index = location)
crossroad
not_corssroad
아직 파이썬의 틀을 판다스랑 엮어서 구현해내는 데에 어려움을 겪고 있다 ...!