리트코드(LeetCode) 49번 그룹 애너그램(Group Anagrams)
2021. 9. 9. 14:54
Algorithm
문제를 풀기 전에 파이썬에서의 정렬, 그리고 defaultdict에 대한 간단한 정리를 하고 풀어보도록 하자 파이썬에서의 정렬 파이썬에서의 정렬은 기본적으로 팀 소트(TimSort)를 이용한다. 팀 소트는 사실상 병합 정렬과 퀵 정렬을 제치고 현업에서 가장 널리 쓰이는 정렬 알고리즘이다. 파이썬에서 쓰는 기본적인 정렬은 다음과 같이 사용한다. a = [2, 5, 1, 9, 7] a_sort = sorted(a) print(a) print(a_sort) #출력값 #[2, 5, 1, 9, 7] #[1, 2, 5, 7, 9] 여기서 주의해야 할 점은 제자리 정렬(In Place Sort)과 정렬 결과를 별도로 리턴하는 sorted( )는 다르다는 점이다. #제자리 정렬(In place Sort) #정렬 결과를..
리트코드(LeetCode) 819번 가장 흔한 단어(Most Common Word)
2021. 9. 8. 13:19
Algorithm
문제의 조건 금지된 단어를 제외한 가장 흔하게 등장하는 단어를 출력하라. 대소문자 구분을 하지 않으며, 구두점(마침표, 쉼표) 또한 무시한다. 📌 (잘못된) 풀이 1(문자의 길이가 1인 테스트 케이스 미통과) collections 모듈은 기본적으로 파이썬에 내장되어있는 내장 함수이다. 따라서 따로 설치가 필요 없다. collections.Counter(a) a에서 요소들의 개수를 세어, 딕셔너리 형태로 반환한다. {문자 : 개수} 형태 import collections a = [1, 2, 3, 4, 1, 5, 3, 1, 3, 4, 2, 3] print(collections.Counter(a)) ... Counter({3: 4, 1: 3, 2: 2, 4: 2, 5: 1})) collections.Count..
리눅스(Linux)와 우분투(Ubuntu)의 정의 그리고 차이
2021. 9. 7. 20:19
CS
리눅스(Linux)란? 리눅스는 Unix기반의 OS이다. 리눅스의 커널을 기반으로 하며 보편적으로 개인용 노트북, 데스크톱, 게임 개발, 임베디드 시스템, 스마트 폰 등등 다양한 방면에서 사용된다. 리눅스는 무료이며 오픈 소스이다. 프로그래밍 지식을 가진 사용자는 누구나 수정할 수 있습니다. 사용자가 프로그램을 실행하고 코드를 변경하며 수정된 사본을 재배포할 수 있고, 따라서 누구나 무료로 다운로드하여 배포할 수 있다. 또한 전 세계 개발자들이 리눅스 코드를 공유하고 공동으로 개발할 수 있고, 멀티 태스킹이 가능하며 많은 프로세스를 동시에 실행할 수 있습니다. 이것이 리눅스가 인기를 얻은 주된 이유이다. 우분투(Ubuntu)란? 리눅스에는 다양한 배포판이 존재한다. 예를들어 Red Hat, CentOS,..
백준 알고리즘 파이썬(Python) 6603번 로또
2021. 9. 5. 15:58
Algorithm
풀이 1 itertools의 permutation을 사용한 풀이이다. 우선 arr에 입력값을 받고 arr의 첫 번째 원소를 pop(0)을 통해 빼준다. 그리고 permutation을 통해 모든 경우의 수를 arr_p에 넣어주고 그중 정렬되어있는 리스트들만 print 해주면 된다. 하지만 permutaion을 사용하였기 때문에 시간복잡도가 O(n!)여서 아슬아슬하게 통과하게 된다. import sys from itertools import permutations input = sys.stdin.readline while True: arr = list(map(int, input().split())) n = arr.pop(0) arr_p = list(permutations(arr, 6)) for case in..
백준 알고리즘 파이썬(Python) 10819번 차이를 최대로
2021. 9. 5. 13:57
Algorithm
permutation 순열이란 몇 개를 골라 순서를 고려해 나열한 경우의 수를 말한다. 즉, 서로 다른 n 개 중 r 개를 골라 순서를 정해 나열하는 가짓수이며 순열이라는 의미의 영어 ‘Permutation’의 첫 글자 P를 따서 nPr로 표시한다. 순열은 순서를 고려하기 때문에 [A, B, C]의 리스트에서 2개의 원소를 골라 순서를 정해 나열하면 [(A, B), (A, C), (B, A), (B, C), (C, A), (C, B)] 가 나오게 된다. 즉 순열에서는 (A, B)와 (B, A)는 다른 것이다. from itertools import permutation arr = ['A', 'B', 'C'] nPr = permutations(arr, 2) #어떤 리스트에서 몇개의 원소를 조합할건지 pri..