전체 글 477

[6.6] 프로그래머스 코딩테스트 연습 - 음양 더하기 (5/100)

코딩테스트 연습 - 음양 더하기 | 프로그래머스 (programmers.co.kr) 코딩테스트 연습 - 음양 더하기 어떤 정수들이 있습니다. 이 정수들의 절댓값을 차례대로 담은 정수 배열 absolutes와 이 정수들의 부호를 차례대로 담은 불리언 배열 signs가 매개변수로 주어집니다. 실제 정수들의 합을 구하여 re programmers.co.kr def solution(absolutes, signs): answer = 0 n = len(absolutes) # 제한사항 추가하기 if 1

[6.6] 프로그래머스 코딩테스트 연습 - 체육복 (4/100)

코딩테스트 연습 - 체육복 | 프로그래머스 (programmers.co.kr) 코딩테스트 연습 - 체육복 점심시간에 도둑이 들어, 일부 학생이 체육복을 도난당했습니다. 다행히 여벌 체육복이 있는 학생이 이들에게 체육복을 빌려주려 합니다. 학생들의 번호는 체격 순으로 매겨져 있어, 바로 앞번 programmers.co.kr 이렇게 문제 풀이 구상을 한다. #번호는 체격순. 앞번호, 뒷번호에게만 빌려줄 수 있다. # n : 전체 학생 수 # lost : 도난당한 학생의 배열 # reserve : 여벌 있는 번호 # 전체 학생 수 2 ~ 30 # lost 1 ~ n (중복 번호 없음) # 여벌 1 ~ n (중복 번호 없음) # 여벌 + lost인 경우, 빌려줄 수 없음 # step 1. 제한사항 정리하기 # 2

[6.6] 프로그래머스 코딩테스트 연습 - 로또 최고 순위와 최저 순위(3/100)

코딩테스트 연습 - 로또의 최고 순위와 최저 순위 | 프로그래머스 (programmers.co.kr) 코딩테스트 연습 - 로또의 최고 순위와 최저 순위 로또 6/45(이하 '로또'로 표기)는 1부터 45까지의 숫자 중 6개를 찍어서 맞히는 대표적인 복권입니다. 아래는 로또의 순위를 정하는 방식입니다. 1 순위 당첨 내용 1 6개 번호가 모두 일치 2 5개 번호 programmers.co.kr 제한사항 넣기 전! # 당첨 가능한 최고 순위와 최저 순위 def solution(lottos, win_nums): answer = [] samenum = 0 mini = 0 maxi = 0 # 제한사항 담기. for i in win_nums: if i in lottos: samenum += 1 n = lottos...

[6.3] 09-2 이진 트리와 이진 검색 트리

이진 트리 알아보기 binary tree - 노드가 left child, right child만을 갖는 트리 완전 이진 트리 알아보기 complete binary tree - 루트부터 아래쪽으로 + 왼쪽부터 오른쪽으로 노드가 채워진 이진 트리 * 균형 검색 트리 self-balancing search tree : 노드의 높이를 O(logn)으로 제한한 트리 - (이진 균형검색 트리) AVL tree, red-black tree가 있음 - (이진 아닌) B트리, 2-3 트리 이진 검색 트리 알아보기 binary search tree 배열 : 왼쪽 서브트리 노드 < 자신의 노드 < 오른쪽 서브트리 노드 (값이 중복되는 노드는 취급하지 않음) 검색 : 중위 순회의 깊이 우선 검색으로 검색 * 중위 순회 - 왼..

[6.2] 09-1 트리구조

트리 구조 : 데이터 사이의 계층 관계를 표현한다 트리의 구조와 관련 용어 tree - node와 edge로 구성됨. root - 가장 상위에 있는 노드 leaf - terminal node = external node non-terminal node = internal node 비단말 노드 자식 - 아래쪽 노드 부모 parent 위쪽에 있는 노드 형제 - sibling 부모가 같은 노드 조상 - ancestor 가지를 따라가면 만나는 노드 자손 - descendant 아래로 내려가면서 만나는 모든 노드 레벨 - 루트에서 얼마나 떨어져 있는지 나타냄 차수 - degree 노드의 자식 수 높이 - height 리프 레벨의 최댓값 서브트리 - subtree - 자손으로 구성된 트리 빈 트리 - null tr..

[5.31] 08-2 포인터를 이용한 연결 리스트

포인터로 연결 리스트 만들기 # 포인터로 연결 리스트 구현하기 from __future__ import annotations from typing import Any, Type class Node: def __init__(self, data:Any = None, next : Node = None): self.data = data self.next = next class LinkedList: def __init__(self) -> None: self.no = 0 self.head = None self.current = None def __len__(self) -> int: return self.no def search(self, data:Any) -> int: cnt = 0 ptr = self.head w..

[5.30] 08-2 포인터를 이용한 연결 리스트

포인터로 연결 리스트 만들기 포인터 - 노드node에서 뒤쪽 노드successor node를 가리킨다 노드 클래스 Node 필드 __init__() 함수 연결 리스트 클래스 LinkedList 초기화하는 __init__() 함수 노드 개수를 반환하는 __len__() 함수 검색을 수행하는 search() 함수 데이터가 포함되어 있는지 판단하는 __contains__() 함수 머리에 노드를 삽입하는 add_first() 함수 꼬리에 노드를 삽입하는 add_last() 함수 머리 노드를 삭제하는 remove_fisrt() 함수 꼬리 노드를 삭제하는 remove_last() 함수 임의의 노드를 삭제하는 remove() 함수 주목 노드를 삭제하는 remove_current_node() 함수 모든 노드를 삭제하는..

[5.30] 08-1 연결 리스트

연결 리스트 알아보기 리스트 list - 데이터에 순서를 매겨 늘어놓은 자료구조 * cf) [1, 2, 3] 리스트 자료형과는 다른 것이다. 연결 리스트 linked list node - 각 element pointer - 노드는 data와 pointer로 구성됨. pointer는 다음 노드를 참조(가리킴)함 head node tail node predecessor node - 앞쪽 노드 successor node - 뒤쪽 노드 배열로 연결 리스트 만들기 비효율적 : 앞에서 제시된 데이터를 옮겨야 한다.