전체 446

[Java의 정석][Chapter-7] 객체지향 프로그래밍 2 (1/2)

이 글은 "Java의 정석 (남궁 성 지음)"을 읽고 주관적으로 요약한 글입니다. 1. 상속 (inheritance) 1) 상속 정의 기존의 클래스를 재사용하여, 새로운 클래스를 작성하는 것 클래스의 이름 뒤에 상속받고자 하는 클래스 이름을 키워드 'extends'와 함께 사용 class Child extends Parent { } 장점 코드의 양을 줄임 - 적은 양의 코드로 새로운 클래스를 작성 가능 코드를 공통적으로 관리 - 코드의 추가/변경이 매우 용이 재사용성 / 중복 제거 / 생산성과 유지보수 구성 조상 클래스 - 부모 클래스, 상위 클래스, 기반 클래스 - parent class, super class, base class 자손 클래스 - 자식 클래스, 하위 클래스, 파생된 클래스 - chil..

책읽기 2021.08.15

[프로그래머스][KAKAO_BLIND][2021] 순위 검색

프로그래머스 코딩테스트 고득점 Kit의 문제입니다. https://programmers.co.kr/learn/challenges?tab=algorithm_practice_kit 코딩테스트 연습 기초부터 차근차근, 직접 코드를 작성해 보세요. programmers.co.kr 문제 https://programmers.co.kr/learn/courses/30/lessons/72412 len(categories): key.remove('and') return tuple(key), score def count_info(dic, q): key, limit = split_key_score(q) return len(dic[key]) - bisect.bisect_left(dic[key],limit) def solutio..

코딩테스트 2021.08.14

[파이썬 알고리즘 인터뷰][이진검색] 2D 행렬 검색2

이 글은 "파이썬 알고리즘 인터뷰 (박상길 지음)"을 읽고 주관적으로 요약한 글입니다. 문제 정의 row / column 순서로 정렬된 2D 행렬에서 target 찾기 책에서 구현된 코드 # 첫 행의 맨 뒤에서 탐색 class Solution: def searchMatrix(self, matrix, target): # 예외 처리 if not matrix: return False # 첫 행의 맨 뒤 row = 0 col = len(matrix[0]) - 1 while row = 0: if target == matrix[row][col]: return True # 타겟이 작으면 왼쪽으로 elif target ..

책읽기 2021.08.13

[파이썬 알고리즘 인터뷰][이진검색] 두 수의 합2

이 글은 "파이썬 알고리즘 인터뷰 (박상길 지음)"을 읽고 주관적으로 요약한 글입니다. 문제 정의 합이 target이 되는 두 수의 인덱스 출력 책에서 구현된 코드 class Solution: def twoSum(self, numbers: List[int], target: int) -> List[int]: for k, v in enumerate(numbers): expected = target - v i = bisect.bisect_left(numbers, expected, k + 1) if i < len(numbers) and numbers[i] == expected: return k + 1, i + 1 기억해야할 기법 bisect로 lo, hi를 설정할 수 있음 내가 구현한 코드 # 이진 검색 cla..

책읽기 2021.08.13

[파이썬 알고리즘 인터뷰][이진검색] 두 배열의 교집합

이 글은 "파이썬 알고리즘 인터뷰 (박상길 지음)"을 읽고 주관적으로 요약한 글입니다. 문제 정의 두 배열의 교집합 출력 책에서 구현된 코드 class Solution: def intersection(self, nums1: List[int], nums2: List[int]) -> List[int]: result: Set = set() # 양쪽 모두 정렬 nums1.sort() nums2.sort() i = j = 0 # 투 포인터 우측으로 이동하며 일치 여부 판별 while i nums2[j]: j += 1 elif nums1[i] < nums2[j]: i += 1 else: result.add(nums1[i]) i +=..

책읽기 2021.08.13

[파이썬 알고리즘 인터뷰][이진검색] 회전 정렬된 배열 검색

이 글은 "파이썬 알고리즘 인터뷰 (박상길 지음)"을 읽고 주관적으로 요약한 글입니다. 문제 정의 로그 재정렬 기준 책에서 구현된 코드 class Solution: def search(self, nums: List[int], target: int) -> int: # 예외 처리 if not nums: return -1 # 최소값 찾아 피벗 설정 left, right = 0, len(nums) - 1 while left nums[right]: left = mid + 1 else: right = mid pivot = left # 피벗 기준 이진 검색 left, right = 0, len(nums) - 1 wh..

책읽기 2021.08.13

[파이썬 알고리즘 인터뷰][이진검색] 이진 검색

이 글은 "파이썬 알고리즘 인터뷰 (박상길 지음)"을 읽고 주관적으로 요약한 글입니다. 문제 정의 배열에서 특정값 찾기 책에서 구현된 코드 # 반복문 class Solution: def search(self, nums: List[int], target: int) -> int: left, right = 0, len(nums) - 1 while left target: right = mid - 1 else: return mid return -1 # bisect class Solution: def search(self, nums: List[int], target: int) -> int: index = bisect.bisect_left(nums, target) if index < len(nums) and nums..

책읽기 2021.08.12

[파이썬 알고리즘 인터뷰] 18장 - 이진 검색

이 글은 "파이썬 알고리즘 인터뷰 (박상길 지음)"을 읽고 주관적으로 요약한 글입니다. 이진 검색 (Binary Search) 정렬된 배열에서 타겟을 찾는 검색 알고리즘 시간 복잡도 O(log n) 이진 탐색 트리(Binary Search Tree)와의 차이 이진 탐색 트리 - 정렬된 구조를 저장하고 탐색하는 '자료구조' 이진 검색 - 정렬된 배열에서 값을 찾아내는 '알고리즘' 이진 검색의 구현 mid를 구할 때 보통 (left+right) // 2를 사용 그러나 두 수의 합으로 인해 오버플로우가 발생할 수 있음 따라서 다음과 같이 구함 mid = left + (right - left) // 2

책읽기 2021.08.12

[백준][부분합] 개똥벌레

BAEKJOON Online Judge(BOJ) 문제입니다. https://www.acmicpc.net/ Baekjoon Online Judge Baekjoon Online Judge 프로그래밍 문제를 풀고 온라인으로 채점받을 수 있는 곳입니다. www.acmicpc.net 문제 https://www.acmicpc.net/problem/3020 3020번: 개똥벌레 개똥벌레 한 마리가 장애물(석순과 종유석)로 가득찬 동굴에 들어갔다. 동굴의 길이는 N미터이고, 높이는 H미터이다. (N은 짝수) 첫 번째 장애물은 항상 석순이고, 그 다음에는 종유석과 석순이 www.acmicpc.net 내가 작성한 코드 import sys from collections import deque read = sys.stdin...

코딩테스트 2021.08.12

[백준][부분집합] 집합의 표현

BAEKJOON Online Judge(BOJ) 문제입니다. https://www.acmicpc.net/ Baekjoon Online Judge Baekjoon Online Judge 프로그래밍 문제를 풀고 온라인으로 채점받을 수 있는 곳입니다. www.acmicpc.net 문제 https://www.acmicpc.net/problem/1717 1717번: 집합의 표현 첫째 줄에 n(1 ≤ n ≤ 1,000,000), m(1 ≤ m ≤ 100,000)이 주어진다. m은 입력으로 주어지는 연산의 개수이다. 다음 m개의 줄에는 각각의 연산이 주어진다. 합집합은 0 a b의 형태로 입력이 주어진다. 이는 www.acmicpc.net 내가 작성한 코드 # 시간초과 import sys from collection..

코딩테스트 2021.08.12