목록전체 글 (163)
꿈꾸는 개발자의 블로그
문자열 거꾸로 출력하는 방법에는 여러 가지가 있지만, 그 중 3가지 방법을 소개한다. 함수를 활용하는 방법과 리스트 슬라이싱을 통한 방법이다. reverse() reverse() 함수는 리스트에 적용되는 함수이기 때문에, 문자열을 리스트로 치환한 뒤 사용해주어야 한다. word = 'hello' temp = list(word)# 문자열을 list로 치환 temp.reverse()# reverse 함수 사용 print(''.join(temp))# olleh reversed() reversed()는 문자열에 바로 적용이 가능하다. 하지만 결과는 제너레이터(iterator 를 생성해 주는 함수)이기 때문에 join()을 통해 문자열로 합쳐주는 과정이 필요하다. word = 'hello' print(''.joi..
문제 링크 https://www.acmicpc.net/problem/20291 20291번: 파일 정리 친구로부터 노트북을 중고로 산 스브러스는 노트북을 켜자마자 경악할 수밖에 없었다. 바탕화면에 온갖 파일들이 정리도 안 된 채 가득했기 때문이다. 그리고 화면의 구석에서 친구의 메시지를 www.acmicpc.net 문제 풀이 입력받은 문자열에서 확장자만 잘라낸다. 확장자를 키값으로 가지는 딕셔너리에 값을 업데이트 한다. 만약 이미 딕셔너리에 추가된 확장자라면 값을 1 더해준다. 딕셔너리에 없는 확장자라면, 새롭게 확장자를 키값으로 값을 1 추가해준다. 딕셔너리의 키값을 기준으로 오름차순 정렬하여, 키와 값을 출력한다. 다음엔 2번의 복잡한 과정 대신 defaultdict를 사용해 봐야겠다! 전체 코드 f..
딕셔너리(Dictionary) 키(key), 값(Value) 기준으로 정렬하기 딕셔너리는 { 키(Key) : 값(Value) }의 쌍으로 이루어져 있기 때문에 각 요소에 대해 정렬하는 방법이 다르다. 기본적으로 오름차순 정렬이며, reverse=True를 해주면 내림차순이 된다. 키(Key)를 기준으로 정렬 sorted(dic.items())# 오름차순 정렬 sorted(dic.items(), reverse=True)# 내림차순 정렬 값(Value)을 기준으로 정렬 sorted(dic.items(), key=lambda x:x[1])# 오름차순 정렬 sorted(dic.items(), reverse=True, key=lambda x:x[1]) # 내림차순 정렬
문제 링크 https://www.acmicpc.net/problem/11279 11279번: 최대 힙 첫째 줄에 연산의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 자연수라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 www.acmicpc.net 문제 풀이 파이쎤 heapq 모듈만 알고 있으면 쉽게 풀 수 있는 문제였던 것 같다. 주의할 점은 heapq 모듈이 기본적으로 최소힙으로 구현되었기 때문에 최대힙으로 바꿔주기 위해 (-n, n) 처럼 튜플로 만들어서 추가해주는 것이다. 혹은 - 를 곱하여 음수로 저장하는 것도 방법이다! Heap에 (-n, n) 튜플 push() Heap에서 두번째 원소를 pop() ..
Heap 파이썬의 heapq 모듈에 대해 알아보기 전에 먼저 힙이 무엇인지 알아야 할 것 같다. 힙 자료구조는 완전 이진 트리를 기초로 하는 자료구조이며, 완전 이진트리란 마지막을 제외한 모든 노드에서 자식들이 꽉 채워진 이진트리를 말한다. 그래서 이를 이용한 힙 정렬은 최대 힙 트리나 최소 힙 트리를 구성해 정렬을 하는 방법으로, 시간복잡도는 O(NlogN)으로 빠른 정렬에 속한다. 최소 힙(Min Heap) : 부모 노드의 키값이 자식 노드의 키값보다 항상 작은 힙 최대 힙(Max Heap) : 부모 노드의 키값이 자식 노드의 키값보다 항상 큰 힙 heapq 파이썬에서는 heapq 모듈을 통해 힙을 쉽게 표현할 수 있다. 내장 모듈로써 따로 설치없이 바로 사용가능하며, 리스트를 최소 힙의 형태로 정렬..