python Counter, ord(), chr()

Y·2023년 7월 9일
0

백준 1213번을 풀면서, 나는 알파벳 문자의 개수를 저장하기 위해 배열을 생성해서 직접 하나하나 세는 방식을 사용(...) 했는데 다른 풀이를 보니, Counter을 이용해서 한 번에 개수를 세는 방식을 사용하고 있었다.

 from collections import Counter
 tmp = 'AAABB'
 result = Counter('AAABB')

이러한 코드를 사용하면 result에는 Counter({'A': 3, 'B': 2}) 가 저장된다! 알파벳을 사용한 문제는 이렇게 Counter을 활용해서 바로 dictionary를 생성해줄 수 있다. 다만, dictionary를 사용하면 순서가 없으므로 기존 문자열을 sorting해줘야한다.

+) 이 부분과 관련하여 추가적으로 서치를 해봤는데, 파이썬 3.6부터는 dictionary에서도 순서가 저장된다고 한다! 혹은 collections의 OrderedDict를 활용할 수도 있다. 관련하여 이 글을 참고해보시길.

내가 문제를 풀이할 때 사용한 방식은 ord(), chr()을 활용한 것인데, 이 방식으로 알파벳 문자를 아스키코드값을 기준으로 변경해줄 수 있다.

 tmp_ord = ord('A') #65 저장
 tmp_chr = chr(65) #'A' 저장

이런식으로 사용해서, 문자열도 일반 배열 방식으로 넣어서 사용해줄 수 있다. 아스키 코드의 경우 A~Z가 65~90이고 a~z가 97~122이다. 알고리즘 문제 풀다보면 알파벳 문자를 사용한 문제가 종종 나오는데 이런 문제를 풀 때 활용해줄 수 있다!

profile
개발자, 학생

0개의 댓글