TIL - 2022

[TIL 024] 20220501

바랄 희 2022. 5. 2. 16:23

시험기간이라 한동안 못썼다 ㅜ 이제 다시 달려봐야지! 🏃🏻‍♀️ 💨

 

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

아직 파이썬의 틀을 판다스랑 엮어서 구현해내는 데에 어려움을 겪고 있다 ...!