[백준/5671] 호텔 방 번호 | 중복값 개수 세기(딕셔너리와 SET)
·
PS/BOJ&Programmers
5671 호텔 방 번호 5671번: 호텔 방 번호선영이는 집 호수에 반복되는 숫자가 있는 경우에는 그 집에 사는 사람에게 불운이 찾아온다고 믿는다. 따라서, 선영이는 838호나 1004호와 같이 한 숫자가 두 번 이상 들어있는 집에는 절대 살지www.acmicpc.net 알고리즘범위에 해당하는 숫자들이 자릿수마다의 중복되는지 체크하면 된다. 같은 값이 있는지 확인하는 방법으로는 딕셔너리를 떠올렸고 아래와 같이 중복 체크를 해주었다.  for item in hotel: d={'0':0, '1':0, '2':0, '3':0, '4':0, '5':0, '6':0, '7':0, '8':0, '9':0} flag=True for s in str(item)..
[백준/7785] 회사에 있는 사람 | 딕셔너리 | 코드 비교
·
PS/BOJ&Programmers
회사에 있는 사람  Baekjoon Online JudgeBaekjoon Online Judge 프로그래밍 문제를 풀고 온라인으로 채점받을 수 있는 곳입니다.www.acmicpc.net 회사에 출입하는 사람의 기록이 남는다.이 기록을 통해 회사에 남아있는 사람의 목록을 출력한다. 알고리즘 회사에 남아있는 사람을 체킹해야 하므로 출입 카운트를 해주었다.입장 + 퇴장은 무조건 짝수이므로 홀수 카운팅이된 사람은 회사에 남아있는 사람이다.입력 받은 이름을 정답 출력에 사용해야 하고 각각의 사람마다 카운팅 기록을 남겨주어야 하기 때문에 딕셔너리를 활용했다. 전체 코드와 알게된 점import sys; input = sys.stdin.readlinen = int(input())dic = dict()least_name..
[Python] 파이썬 딕셔너리
·
언어/PYTHON
개요코드트리에서 파이썬 딕셔너리를 공부한 내용이다 파이썬 딕셔너리(Python Dictionary) 파이썬 딕셔너리: 검색/삽입/삭제에 유용한 HashMap 자료구조다.HashMap: (key, value) 쌍, 순서와 상관없이 빠른 검색/삽입/삭제(시간복잡도 O(1))가 가능한 자료구조 딕셔너리 선언d1 = dict()d2 = {}d3 = { 'apple' : 1, 'banana' : 2, 'grape' : 3 }  key와 value 딕셔너리의 기본적인 구조는 dic_name[key] = value 이다. dic = dict()d['A'] = 90d['B'] = 80if 'A' in d : print(d['A']) # key를 통해 value 출력 dic.pop('A') # key A 와 ..
[백준/1021] 회전하는 큐 | python deque | dequed의 rotate()
·
PS/BOJ&Programmers
파이썬 dequedeque는 문제풀이에서 종종 사용했었지만 주요 내용을 다시 한번 정리해보았다.알고리즘파이썬 deque 자료구조를 알고있다면 어렵지 않게 해결할 수 있다. 최종코드from collections import dequen,m = map(int, input().split())que = deque(range(1,n+1))idx = list(map(int, input().split()))cnt = 0for i in idx: # 다 찾을 때까지 수행 while True: # 찾고자 하는 값의 위치가 중간보다 왼쪽인 경우 if que.index(i) 연산의 횟수를 세어야 하기 때문에 cnt 변수로 연산 횟수를 카운팅했다.알게된 점from collections imp..
[자료구조] 트리(Tree)
·
PS/Data Structure
트리트리란? 회사의 조직도, 가계도와 같이 나무처럼 뻗어나가는 모양의 사이클이 없는 그래프다. 노드간선루트 노드: 트리의 맨 꼭대기부모 노드/자식 노드리프 노드: 자식이 없는 노드차수와 깊이 그리고 높이차수: 특정 노드의 자식 수깊이: 특정노드로부터 루트노드와 떨어져있는 정도높이: max깊이 + 1이진트리트리의 자식을 2개로 한정하면, 이진트리배열로 나타내기 좋다. 부모는 i, 왼쪽 자식은 i2, 오른쪽 자식은 i2+1만약 모든 자식이 꽉 차있지 않다면 배열도 같이 비워줘야한다.이진트리는 한번 알면 여러모로 편하다.. 자식이 2개로 제한되어 있기 때문에 구현도 좋다… 그러니 확실하게 알아둘 것! 트리의 순회트리를 탐색하는 순회 방법은 3 가지가 있다.전위 순회(왼>뿌>오)중위 순회(뿌>왼>오)후위 순회(..
[백준/4949] 균형잡힌 세상 | Stack
·
PS/BOJ&Programmers
알고리즘전형적인 스택 문제다. 우선 괄호의 여는 부분이 왼쪽으로 와야 하기 때문에, 문자열을 돌면서 ( 나 [ 일 때 스택에 넣어준다.만약 스택에 값이 들어있는데 )나 ]가 들어오면 ( or [ 와 짝이 맞아야 하므로, 스택의 탑(stack[-1])을 통해 쌍이 맞는지 확인하고,쌍이 맞다면 스택에서 여는 괄호를 팝해서 스택을 비워준다.쌍이 아니라면 스택에 닫힌 괄호를 넣어준다. 이 알고리즘을 입력 받은 문자열을 모두 검사할 때까지 반복한다. 최종 코드while True: s = input() if s == '.': break stack = [] for i in range(len(s)): if s[i] == '(' or s[i] == '[': stack..
[백준/11652] 카드 - 파이썬
·
PS/BOJ&Programmers
알고리즘처음에는 정수를 하나씩 입력 받으면 정렬해서, 양옆을 비교한 뒤 같은 값이면 카운팅을 해주는 방법을 고안했다. 그러나 같은 값이 몇개인지 세어볼 때는 딕셔너리를 이용하는 게 효율적이다.기준이 되는 값을 key에, 해당 개수를 value에 저장하면 된다.얼마 전에 풀었던 https://www.acmicpc.net/problem/1159 문제도 이와 비슷한 알고리즘으로 같은 값 개수 세기문제를 해결할 수 있다. 1159번: 농구 경기상근이는 농구의 세계에서 점차 영향력을 넓혀가고 있다. 처음에 그는 농구 경기를 좋아하는 사람이었다. 농구에 대한 열정은 그를 막을 수 없었고, 결국 상근이는 농구장을 청소하는 일을 시작www.acmicpc.net  for _ in range(n): num = int..
[백준/1159] 농구경기
·
PS/BOJ&Programmers
문제 이해첫글자를 key값으로 넣고, 다음 입력값의 첫글자가 이미 딕셔너리 key로 저장되어 있다면 +1 해주는 로직이 떠올랐다. 첫번째 시도 _ 실패n = int(input())d = {}for i in range(n): name = input() key = name[0] # 만약 이미 d에 key 값이 존재하는 경우 if d.get(key): d[key] += 1 else: d[key] = 1 ans = list(d.values()) for i in ans: if i >= 5: for k,v in d.items(): print(k) 첫번째 시도 모든 key 값을 출력해버림. items 함수를..
[자료구조] Deque와 파이썬의 collections
·
PS/Data Structure
✔ 덱(deque)이란?double ended: 양 끝이 닮은, 앞뒤가 없는..이라는 뜻이다. 따라서 데큐는 양 끝 모두가 출입구가 되므로, 양방향으로 push&pop이 가능하다. (stack은 한쪽으로만 입출력!)데큐는 큐의 일종으로, FIFO(First In First Out: 먼저 넣은 데이터가 먼저 나오는) 구조이다.선착순을 떠올리면 직관적으로 이해할 수 있다.📝 덱(deque)의 성질덱은 가장 앞부분을 가리키는 front와 가장 뒷부분을 가리키는 back이 구성되어있다.따라서 push_front push_back, pop_front pop_back을 모두 활용할 수 있다!!데큐를 쓰는 이유는 https://wiki.python.org/moin/TimeComplexity 를 읽어보면 시간 복잡도..
[백준/1927] 최소 힙
·
PS/BOJ&Programmers
문제를 잘 이해하면 구현은 어렵지 않다. 첫번째 시도import sysn = int(sys.stdin.readline())heap = []# 자연수라면 in heap 0이라면 출력 + out heapfor _ in range(n): x = int(sys.stdin.readline()) if x == 0 and len(heap) != 0: print(min(heap)) heap.remove(min(heap)) elif x != 0: heap.append(x) else: print(0) 혼자서 문제에 따라 잘 구현한 것같은데,, 시간 초과ㅠㅠ구글링 후 알게된 점은 파이썬에서 따로 heappush, heappop을 제공한다는 것이었다..!..
sebinChu
'data structure' 태그의 글 목록