Programmers / 2단계 / 전화번호 목록 / python
·
코딩테스트/programmers (python)
코딩테스트 연습 - 전화번호 목록 | 프로그래머스 스쿨 (programmers.co.kr)    나의 풀이- 해시 이용def solution(phone_book): # 1. Hash map을 만든다 hash_map = {} for phone_number in phone_book: hash_map[phone_number] = 1 # 2. 접두어가 Hash map에 존재하는지 찾는다 for phone_number in phone_book: jubdoo = "" for number in phone_number: jubdoo += number # 3. 접두어를 찾아야 한다 (기존 번호와 같은 경우 제외..
Programmers / 2단계 / 할인 행사 / python
·
코딩테스트/programmers (python)
코딩테스트 연습 - 할인 행사 | 프로그래머스 스쿨 (programmers.co.kr) 나의 풀이 . 모범 답안 from collections import Counter def solution(want, number, discount): answer = 0 check = {} for w, n in zip(want, number): check[w] = n for i in range(len(discount)-9): c = Counter(discount[i:i+10]) if c == check: answer += 1 return answer Counter 사용 len(discount)-9로 범위가 초과되지 않게 한다.
★ Programmers / 2단계 / 괄호 회전하기 / python
·
코딩테스트/programmers (python)
코딩테스트 연습 - 괄호 회전하기 | 프로그래머스 스쿨 (programmers.co.kr) 나의 풀이 . 모범 답안 def bracket(s): stack = [] for i in s: if len(stack) == 0: stack.append(i) else: if i == ")" and stack[-1] == "(": stack.pop() elif i == "]" and stack[-1] == "[": stack.pop() elif i == "}" and stack[-1] == "{": stack.pop() else: stack.append(i) return 1 if len(stack) == 0 else 0 def solution(s): answer = 0 for i in range(len(s)): i..
Programmers / 2단계 / 연속 부분 수열 합의 개수 / python
·
코딩테스트/programmers (python)
코딩테스트 연습 - 연속 부분 수열 합의 개수 | 프로그래머스 스쿨 (programmers.co.kr) 나의 풀이 . 모범 답안 def solution(elements): answer = 0 cycle = elements + elements s = set() for i in range(len(elements)): for j in range(len(elements)): s.add(sum(cycle[i:i+j])) return len(s) 주어진 원소를 두 배 해서 붙인 다음 길이에 제한을 두어 문제 해결 ★ set() - add() 활용하기
주요 라이브러리 문법
·
기타
표준 라이브러리 : 특정한 프로그래밍 언어에서 자주 사용되는 표준 소스코드를 미리 구현해 놓은 라이브러리내장 함수itertoolsheapqbisectcollectionsmath■  내장 함수별도의 import 명령어 없이 바로 사용할 수 있는 내장 함수대표적인 내장 함수: input(), print(), sum(), max(), min(), eval(), sorted(), sort()파이썬에서는 리스트의 원소로 리스트나 튜플이 존재할 때 특정한 기준에 따라 정렬을 수행할 수 있음정렬 기준은 key 속성을 이용해 명시할 수 있음 원소를 튜플의 두 번째 원소(수)를 기준으로 내림차순으로 정렬하고자 하면 다음과 같이 사용 가능result = sorted([('학생 1', 35), ('학생 2', 75), ('..
리스트 컴프리헨션, 집합 자료형
·
자료구조 | 알고리즘
리스트 컴프리헨션 - 리스트를 초기화하는 방법 중 하나 - 대괄호 안에 조건문과 반복문을 넣는 방식으로 리스트를 초기화할 수 있음 [ 0부터 19까지의 수 중 홀수만 포함하는 리스트 만들기 ] arr = [i for i in range(20) if i % 2==1] print(arr) #[1, 3, 5, 7, 9, 11, 13, 15, 17, 19] 리스트 컴프리헨션은 2차원 리스트를 초기화할 때 효과적으로 사용 n=3 m=4 arr = [[0] * m for _ in range(n)] print(arr) #[[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]] 특정 크기의 2차원 리스트를 초기화할 때에는 반드시 리스트 컴프리헨션을 이용해야 함 다음과 같이 2차원 리스트를 초기화한다..
서로소 집합 알고리즘
·
자료구조 | 알고리즘
서로소 집합 알고리즘 - 서로소 부분 집합들로 나누어진 원소들의 데이터를 처리하기 위한 자료구조 - 서로소: 공통 원소가 없는 두 집합 - union, find 2개의 연산으로 조작 가능 union 연산 (합집합) : 2개의 원소가 포함된 집합을 하나의 집합으로 합치는 연산 find 연산 : 특정한 원소가 속한 집합이 어떤 집합인지 알려주는 연산 서로소 집합 자료구조를 구현할 때는 트리 자료구조를 이용해 집합을 표현 서로소 집합 계산 알고리즘 1) A와 B 노드가 연결되어 있을 때 a) A와 B의 루트노드 a, b 를 각각 찾는다. b) a를 b의 부모 노드로 설정한다. (b가 a를 가리키도록 한다) // 일반적으로 더 번호가 작은 원소가 부모 노드가 되도록 구현 2) 모든 union 연산을 처리할 때까..
Programmers / 2단계 / 귤 고르기 / python
·
코딩테스트/programmers (python)
코딩테스트 연습 - 귤 고르기 | 프로그래머스 스쿨 (programmers.co.kr) 나의 풀이 . 모범 답안 def solution(k, tangerine): answer = 0 a={} for i in tangerine: if i in a: a[i]+=1 else: a[i]=1 a = dict(sorted(a.items(), key=lambda x: x[1], reverse=True)) for i in a: if k> Counter(["hi", "hey", "hi", "hi", "hello", "hey"]) Counter({'hi': 3, 'hey': 2, 'hello': 1}) Counter 생성자에 문자열을 인자로 넘기면 각 문자가 문자열에서 몇 번씩 나타나는지를 알려주는 객체가 반환됨. >>>..