전체 글 93

[프로그래머스 Level3] 카드 짝 맞추기 - 파이썬(Python) - 2021 KAKAO BLIND RECRUITMENT

https://school.programmers.co.kr/learn/courses/30/lessons/72415 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 게임 개발자인 베로니는 개발 연습을 위해 다음과 같은 간단한 카드 짝맞추기 보드 게임을 개발해 보려고 합니다. 게임이 시작되면 화면에는 카드 16장이 뒷면을 위로하여 4 x 4 크기의 격자 형태로 표시되어 있습니다. 각 카드의 앞면에는 카카오프렌즈 캐릭터 그림이 그려져 있으며, 8가지의 캐릭터 그림이 그려진 카드가 각기 2장씩 화면에 무작위로 배치되어 있습니다. 유저가 카드를 2장 선택..

[프로그래머스 Level3] 표현 가능한 이진트리 - 파이썬(Python) - 2023 KAKAO BLIND RECRUITMENT

https://school.programmers.co.kr/learn/courses/30/lessons/150367 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 당신은 이진트리를 수로 표현하는 것을 좋아합니다. 이진트리를 수로 표현하는 방법은 다음과 같습니다. 이진수를 저장할 빈 문자열을 생성합니다. 주어진 이진트리에 더미 노드를 추가하여 포화 이진트리로 만듭니다. 루트 노드는 그대로 유지합니다. 만들어진 포화 이진트리의 노드들을 가장 왼쪽 노드부터 가장 오른쪽 노드까지, 왼쪽에 있는 순서대로 살펴봅니다. 노드의 높이는 살펴보는 순서에 영향을..

[프로그래머스 Level3] 표 병합 - 파이썬(Python) - 2023 KAKAO BLIND RECRUITMENT

https://school.programmers.co.kr/learn/courses/30/lessons/150366 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 당신은 표 편집 프로그램을 작성하고 있습니다. 표의 크기는 50 × 50으로 고정되어있고 초기에 모든 셀은 비어 있습니다. 각 셀은 문자열 값을 가질 수 있고, 다른 셀과 병합될 수 있습니다. 위에서 r번째, 왼쪽에서 c번째 위치를 (r, c)라고 표현할 때, 당신은 다음 명령어들에 대한 기능을 구현하려고 합니다. "UPDATE r c value" (r, c) 위치의 셀을 선택합니다...

[프로그래머스 Level3] 미로 탈출 명령어 - 파이썬(Python) - 2023 KAKAO BLIND RECRUITMENT

https://school.programmers.co.kr/learn/courses/30/lessons/150365 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 n x m 격자 미로가 주어집니다. 당신은 미로의 (x, y)에서 출발해 (r, c)로 이동해서 탈출해야 합니다. 단, 미로를 탈출하는 조건이 세 가지 있습니다. 격자의 바깥으로는 나갈 수 없습니다. (x, y)에서 (r, c)까지 이동하는 거리가 총 k여야 합니다. 이때, (x, y)와 (r, c)격자를 포함해, 같은 격자를 두 번 이상 방문해도 됩니다. 미로에서 탈출한 경로를 문자..

[프로그래머스 Level2] 이모티콘 할인행사 - 파이썬(Python) - 2023 KAKAO BLIND RECRUITMENT

https://school.programmers.co.kr/learn/courses/30/lessons/150368 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 카카오톡에서는 이모티콘을 무제한으로 사용할 수 있는 이모티콘 플러스 서비스 가입자 수를 늘리려고 합니다. 이를 위해 카카오톡에서는 이모티콘 할인 행사를 하는데, 목표는 다음과 같습니다. 이모티콘 플러스 서비스 가입자를 최대한 늘리는 것. 이모티콘 판매액을 최대한 늘리는 것. 1번 목표가 우선이며, 2번 목표가 그 다음입니다. 이모티콘 할인 행사는 다음과 같은 방식으로 진행됩니다. n명..

그래프(Graph)

그래프(Graph) 그래프(Graph)는 정점들이 간선들을 통해 연결된 자료 구조이다. 여러 개의 고립된 부분 그래프들(Isolated Subgraphs)로 구성될 수 있다. 1) 무방향 그래프(Undirected Graph) VS 방향 그래프(Directed Graph) 무방향 그래프는 간선으로 이어진 양쪽 정점 모두 상대편 정점으로 이동할 수 있다. 방향 그래프는 방향성이 존재하여 화살표 방향으로만 이동할 수 있다. 2) 가중치 그래프(Weighted Graph) 가중치 그래프는 간선에 가중치가 할당된 그래프로 '네트워크(Network)'라고도 한다. 3) 연결 그래프(Connected Graph) VS 비연결 그래프(Disconnected Graph) 연결 그래프는 무방향 그래프에 있는 모든 정점쌍..

자료구조 2022.12.30

해시 테이블(HashTable)

※ Direct Address Table 크기가 U인 테이블에서 key를 이용하여 데이터를 저장하는 자료구조이다. 중복되는 key는 없다고 가정한다. 시간 복잡도가 O(1)로 검색, 삽입, 삭제가 매우 빠르다는 장점이 있으나, 적재율이 낮다면 실제 대부분의 메모리 공간은 낭비된다는 단점이 있다. 해시 테이블(HashTable) 해시 테이블(Hash Table)이란 해시 함수를 사용해서 변환된 값을 인덱스(index)로 삼아 key-value 쌍으로 데이터를 저장하는 자료구조로, Direct Address Table에서의 공간 낭비를 줄이고 시간 복잡도를 낮추기 위해 만들어졌다. 기본연산으로는 탐색(Search), 삽입(Insert), 삭제(Delete)가 있다. 해시 함수(Hash Function): 입..

자료구조 2022.12.30

트리(Tree)와 힙(Heap)

1. 트리(Tree) 트리(Tree)는 값을 가진 노드(Node)와 노드들을 연결해주는 간선(Edge)으로 이루어진 계층적 자료구조이다. 사이클을 이루지 않으며 계층 구조를 나타낸다는 점이 그래프와의 가장 큰 차이점이다. 자식 노드는 0개 이상의 자식 노드를 가지며 트리 자료구조는 양방향 연결 리스트를 이용하여 구현한다. 트리는 비선형 자료구조이며, 계층적(Hierarchical) 자료구조라고도 불린다. 트리 자료구조는 주로 컴퓨터의 디렉터리 구조, 조직도 등에 이용된다. 깊이(depth): 루트 노드에서 어떤 노드에 도달하기 위해 거쳐야 하는 간선의 수 레벨(level): 트리의 특정 깊이를 가지는 노드의 집합 높이(height): 트리의 최대 깊이 차수(degree): 각 노드가 자식 노드와 연결된 ..

자료구조 2022.12.30

스택(Stack)과 큐(Queue)

1. 스택(Stack) 스택(Stack)은 먼저 들어간 요소가 가장 나중에 나오게 되는 선입후출의 구조를 가진 선형 자료구조이다. 이러한 스택의 구조적 특징을 LIFO(Last In First Out)이라고 한다. 스택의 대표적인 연산으로는 push(), peek(), pop()이 있다. 스택을 구현하기 위해서는 배열 / 연결리스트 사용이 가능하며, 주로 배열을 통해 구현된다. 일반적인 스택은 메모리의 크기가 정적이지만, 동적 배열을 이용하여 동적 스택을 만들 수도 있다. 스택 자료구조는 주로 웹 브라우저 방문기록(뒤로가기), 후위 표기법 계산, 문자열 뒤집기, 재귀 등에 사용되며, 거의 모든 애플리케이션을 만들 때 사용된다. 2. 큐(Queue) 큐(Queue)는 먼저 들어간 요소가 가장 먼저 나오게 ..

자료구조 2022.12.29

배열(ArrayList)과 연결 리스트(LinkedList)

배열(ArrayList) 배열은 쌍의 집합으로, 같은형의 변수를 여러 개 담을 수 있는 자료구조이다. 1차원 배열과 2차원 배열 등 여러 차원이 존재할 수 있다. 한 번 선언된 배열의 정적인 메모리 크기로 인한 문제를 해결하기 위해 동적 배열이 등장하였다. 동적 배열의 원리는 데이터가 추가되면서 메모리가 꽉 차면 메모리의 크기를 보통 2배를 늘려주고 데이터들을 모두 복사하는 방법으로, 이를 더블링(Doubling)이라고 한다. 특징 인덱스를 이용하므로 배열 내 요소의 탐색은 O(1)의 시간복잡도를 가진다. 배열의 데이터의 삽입과 삭제 시 데이터의 이동이 빈번하게 발생한다. 데이터의 삽입과 삭제에서의 시간복잡도는 최선의 경우 O(1), 최악의 경우 O(n)을 가진다. 고정된 크기의 저장공간이므로 할당된 크..

자료구조 2022.12.29
728x90