애너그램 (딕셔너리, 리스트)
·
Coding Test/Data Structure
문제 Anagram이란 두 문자열이 알파벳의 나열 순서를 다르지만 그 구성이 일치하면 두 단어는 아나그램이라고 합니다. 예를 들면 AbaAeCe 와 baeeACA 는 알파벳을 나열 순서는 다르지만 그 구성을 살펴보면 A(2), a(1), b(1), C(1), e(2)로 알파벳과 그 개수가 모두 일치합니다. 즉 어느 한 단어를 재배열하면 상대편 단어가 될 수 있는 것을 아나그램이라 합니다. 길이가 같은 두 개의 단어가 주어지면 두 단어가 아나그램인지 판별, 아나그램 판별시 대소문자가 구분 AbaAeCe baeeACA 풀이 딕셔너리 a=input() b=input() str1=dict() str2=dict() for x in a: str1[x]=str1.get(x,0)+1 for x in b: str2[x]..
[11286] 절댓값 힙 (heapq, PriorityQueue)
·
Coding Test/Data Structure
11286번: 절댓값 힙 첫째 줄에 연산의 개수 N(1≤N≤100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 0이 아니라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0 www.acmicpc.net import sys input=sys.stdin.readline from heapq import heappush, heappop n=int(input()) q = [] for _ in range(n): num=int(input()) if num==0: if len(q) > 0: print(heappop(q)[1]) else: print(0) else: heappush(q, (abs(num), num)) from queue import Prio..
[11279] 최대 힙 (heapq)
·
Coding Test/Data Structure
11279번: 최대 힙 첫째 줄에 연산의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 자연수라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0 www.acmicpc.net import sys input=sys.stdin.readline from heapq import heappush, heappop n=int(input()) q = [] for _ in range(n): num=int(input()) if num==0: if len(q) > 0: print(heappop(q)[1]) else: print(0) else: heappush(q, (-num, num))
[1927] 최소 힙 (heapq)
·
Coding Test/Data Structure
1927번: 최소 힙 첫째 줄에 연산의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 자연수라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0 www.acmicpc.net import sys input=sys.stdin.readline from heapq import heappush, heappop n=int(input()) q = [] for _ in range(n): num=int(input()) if num==0: if len(q)>0: print(heappop(q)) else: print(0) else: heappush(q, num)
단어 찾기 (해시, 딕셔너리)
·
Coding Test/Data Structure
문제 현수는 시를 쓰기 전에 시에 쓰일 단어를 미리 노트에 적어둡니다. 이번에는 N개의 단어를 노트에 적었는데 시에 쓰지 않은 단어가 하나 있다고 합니다. 여러분이 찾아 주세요. 첫 번째 줄에 자연수 N(3
공주 구하기 (큐, 덱)
·
Coding Test/Data Structure
문제 왕은 왕자들을 나이 순으로 1번부터 N번까지 차례로 번호를 매긴다. 그리고 1번 왕자부터 N 번 왕자까지 순서대로 시계 방향으로 돌아가며 동그랗게 앉게 한다. 그리고 1번 왕자부터 시 계방향으로 돌아가며 1부터 시작하여 번호를 외치게 한다. 한 왕자가 K(특정숫자)를 외치면 그 왕자는 공주를 구하러 가는데서 제외되고 원 밖으로 나오게 된다. 그리고 다음 왕자부터 다시 1부터 시작하여 번호를 외친다. 이렇게 해서 마지막까지 남은 왕자가 공주를 구하러 갈 수 있다. 예를 들어 총 8명의 왕자가 있고, 3을 외친 왕자가 제외된다고 하자. 처음에는 3번 왕자가 3 을 외쳐 제외된다. 이어 6, 1, 5, 2, 8, 4번 왕자가 차례대로 제외되고 마지막까지 남게 된 7 번 왕자에게 공주를 구하러갑니다. N과..