알고리즘
-
[백준 1157번] - 기본 / PythonData Engineering/알고리즘 - Python 2021. 6. 30. 21:29
[백준 1157번] - 기본 https://www.acmicpc.net/problem/1157 1157번: 단어 공부 알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다. www.acmicpc.net (오답) x=input() arr=[x[i].upper() for i in range(len(x))] mySet=list(set(arr)) dict={} for i in range(len(mySet)): a=arr.count(mySet[i]) dict[mySet[i]]=a key,value = dict.items() if len(max(dict.values()))==1: print(key) else: ..
-
[백준 11866번] - Deque / PythonData Engineering/알고리즘 - Python 2021. 6. 30. 20:07
[백준 11866번] - Deque https://www.acmicpc.net/problem/11866 11866번: 요세푸스 문제 0 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 1,000) www.acmicpc.net (정답) from collections import deque N,K=map(int, input().split()) queue=deque([i for i in range(1,N+1)]) ans=[] while queue: queue.rotate(-(K-1)) q=queue.popleft() ans.append(q) print('') 📍위의 문제를 손으로 풀어보면 아래와 같은 원리를 발견할 수 있다. ▪ N=4, K=3 ▪ [1,2,3,4] → 3..
-
[백준 2164번] - Queue / PythonData Engineering/알고리즘 - Python 2021. 6. 30. 18:58
[백준 2164번] - Queue https://www.acmicpc.net/problem/2164 2164번: 카드2 N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가 www.acmicpc.net (정답) from collections import deque n=int(input()) queue=deque() for i in range(1,n+1):queue.append(i) while len(queue)!=1: queue.popleft() queue.rotate(-1) print(queue[0]) 또한, queue 리스트를 만들 때 아래 방법도 사용할 수..
-
[백준 10845번] - Queue / PythonData Engineering/알고리즘 - Python 2021. 6. 30. 18:32
📍Deque ▪ 큐(Queue)는 선입선출 방식이다. ▪ 그러나 자료의 개수가 많아지면 큐의 연산이 느려지기 때문에 데크를 사용하게 된다. ▪ 데크(Deque)는 양방향 큐로, 앞뒤 양쪽에서 요소를 추가하거나 제거할 수 있다. 그래서 나는 데크를 이용해서 문제를 풀었다. 📍 Deque의 장점 ▪ 앞뒤에서 접근할 수 있기 때문에 append, pop이 매우 빠르다. ▪ 스택, 큐처럼 사용할 수 있다. [백준 10845번] - Queue https://www.acmicpc.net/problem/10845 10845번: 큐 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거..
-
[백준 1260번] BFS, DFSData Engineering/알고리즘 - Python 2021. 6. 29. 15:46
[백준 1260번] DFS와 BFS] https://www.acmicpc.net/problem/1260 1260번: DFS와 BFS 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사 www.acmicpc.net (정답) 처음 해보는 문제라서 많이 어려워서 다른 답들을 참고했다. n,m,v=map(int,input().split()) mat=[[0]*(n+1) for _ in range(n+1)] visit=[0]*(n+1) for i in range(m): x,y=map(int, input().split()) mat[x][y]=m..