본문 바로가기

코딩테스트57

(알고리즘)BFS(Breadth-First-Search) 너비 우선 탐색 - 파이썬 + 백준 2178 풀이 BFS 1. BFS동작 예시 - 가까운 노드부터 우선적으로 탐색하는 알고리즘 - BFS는 큐를 사용하여 너비 우선으로 탐색한다. 집어 넣은 순서대로 1 -> 2 -> 3 -> 5 -> 4 -> 8 -> 6 -> 7 2. BFS 코드 예시 from collections import deque #queue를 사용하기 위해 쓰임 리스트를 사용해도 되지만, #deque이 시간을 더 단축해줌. def bfs(graph, start, visited): queue = deque([start]) #처음 정점을 넣어줌 visited[start] = True while queue: v = queue.popleft() print(v, end=' ') # 한 줄로 출력 for i in graph[v]: #만약 v=1일때 i는.. 2021. 6. 10.
코딩테스트 준비 - 백준15649번 N과 M (1)풀이-DFS에 관해서(파이썬) 백준 15649번 풀이 문제풀러가기 https://www.acmicpc.net/problem/15649 15649번: N과 M (1) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 문제 풀이 DFS알고리즘을 통해 푸는 문제이다. (DFS말고 다른 방법이 있다면 알려주세용 ㅠ_ㅠ) 코드 import sys N, M = map(int, sys.stdin.readline().split()) arr = [i for i in range(1,N+1)] check = [False]*len(arr) a = [] def dfs(x): if x == M:.. 2021. 6. 8.
코딩테스트 준비 - 백준18870번 좌표압축 풀이:파이썬 딕셔너리 활용 (파이썬) 백준 18870번 풀이 문제풀러가기 https://www.acmicpc.net/problem/18870 18870번: 좌표 압축 수직선 위에 N개의 좌표 X1, X2, ..., XN이 있다. 이 좌표에 좌표 압축을 적용하려고 한다. Xi를 좌표 압축한 결과 X'i의 값은 Xi > Xj를 만족하는 서로 다른 좌표의 개수와 같아야 한다. X1, X2, ..., XN에 좌 www.acmicpc.net 문제 풀이 1. 문제 해설 "Xi>Xj를 만족하는 서로 다른 좌표의 개수와 같아야된다" 라는 뜻은 즉 Xi가 리스트 안에서의 크기 순서를 출력하면 된다는 말입니다. (크기 순서는 0부터 시작.) 더보기 예를 들면 arr=[ 1,0,5,2,1] 라고 하면, 여기서 arr[0], 즉 1로 예를 들면, arr 리스트 .. 2021. 6. 7.
코딩테스트 준비 - 백준10814번 나이순 정렬 풀이:파이썬 람다 리스트 정렬 (파이썬) 백준 10814번 풀이 문제풀러가기 https://www.acmicpc.net/problem/10814 10814번: 나이순 정렬 온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을 www.acmicpc.net 문제 풀이 1. 나이는 int 형으로 출력!! *나이를 str로 출력하면 아무리 맞았어도 틀렸습니다가 뜹니다. 2. 리스트 정렬 sort사용 or lambda 사용 코드 1 import sys N=int(sys.stdin.readline()) arr=[] for i in range (N): a,b = map(str,sys.stdin.readline().split()).. 2021. 6. 6.
코딩테스트 준비 - 백준1181번 단어 정렬 풀이: 파이썬 문자열 정렬(파이썬) 백준 1181번 풀이 문제풀러가기 https://www.acmicpc.net/problem/1181 1181번: 단어 정렬 첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다. www.acmicpc.net 문제 풀이 1. 문자열 길이가 가장 작은 순으로 정렬 len(string) 사용 2. 문자열 길이가 같을 시, 사전순으로 정렬 문자열 비교 사용: string1>string2 3. 리스트 중복제거 사용 arr_list = list(set(arr_list)) 코드 import sys N = int(sys.stdin.readline()) arr = [] a.. 2021. 6. 5.
코딩테스트 준비 - 백준11651번 좌표 정렬하기 풀이(간단한 풀이)(파이썬) 백준 11651번 풀이 문제풀러가기 https://www.acmicpc.net/problem/11651 11651번: 좌표 정렬하기 2 첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다. www.acmicpc.net 문제 풀이 1. y가 제일 작은 순서대로 출력 2. y가 같을 시 x가 작은 순서대로 출력 코드 import sys N = int(sys.stdin.readline()) arr = [] for i in range (N): (a,b) = map(int,sys.stdin.readline().split()) a.. 2021. 6. 4.