Python List Comprehension 파이썬 배열 활용

Hyeong·2021년 7월 3일
0

Algorithm

목록 보기
2/4

알고리즘 문제들을 풀다보면 알고리즘 자체에는 문제가 없는데, 자질구레한 구현에서 문제가 발생하고는 한다. 이번에 한참 머리를 싸매다가 시험 시간 제한 때문에 넘어간 문제가 있었는데 리스트에서 특정 조건을 만족하는 원소를 제거하는 구현이 이상하게 자꾸 막혔다. 분명 별 거 아닌 것 같았는데.

4번 이상 중복되는 원소를 제거해야했는데, 아무리 제거해도 자꾸 중복되는 첫 번째 원소가 계속 리스트 안에 남아 있었다. 첫 리스트를 계속 사용 안 하고 새로운 리스트에 다시 저장하면 쉽게 해결이 가능했는데, 그 생각이 안 들었다.

대충 복기해보면 이정도고

asd = [1,2,31,1,1,2,2,31,1,1,1,3,2,1,5,4,4,3,2,2,3,3,3,3,3]

이렇게 풀면 됬는데

asd = [x for x in asd if asd.count(x) <= 4]

리스트를 새로 만들 수 있다는 생각을 못하고 이상한 짓을 했다. 덕분에 사건은 미궁 속으로..

for i in asd:
    if asd.count(i) >= 4:
        for elm, index in enumerate(asd):
            asd.remove(i)

별거 아닌 얘기를 하고 있는 것 같지만 꼭 고쳐야하는 문제다. 아마 빠르게 알고리즘을 마스터하고 싶은 마음에 쉬운 문제들을 다 건너뛰고 어려운 문제만 풀어서 기초적인 스킬을 못 배운 것 같다. 지금 나는 마티스의 라이츄와 같은 상태가 아닐까? 배열 활용 같은 기본적인 문법도 다시 돌아볼 필요가 있다.

포켓몬스터에 등장하는 갈색시티 갈색체육관의 관장 마티스는 피카츄를 잡자마자 번개의 돌로 라이츄로 진화시켰다. 덕분에 라이츄는 피카츄 시기 배워야 하는 기술을 배우지 못했고, 결국 지우의 피카츄에게 패배한다

profile
Systemic knowledge on programming, economics, and statistics

0개의 댓글