본문 바로가기
반응형

Python51

[백준] 10814번 : 나이순 정렬 유형 : 정렬 [예제] 3 21 Junkyu 21 Dohyun 20 Sunyoung [출력] 20 Sunyoung 21 Junkyu 21 Dohyun 1. 내 풀이 N = int(input()) age_list = [] name_list = [] for _ in range(N): age, name = input().split(' ') age = int(age) age_list.append(age) name_list.append(name) age_list2 = list(enumerate(age_list)) age_list3 = sorted(age_list2, key=lambda x:(x[1],x[0])) for index, value in age_list3: print(value, name_list[ind.. 2021. 12. 31.
[백준] 1427번 : 소트인사이드 문제 유형 : 정렬, 배열 [예시] 2143 [출력] 4321 1. 내 풀이 N = input() M = int(N) _list = [] for _ in range(len(N)): _list.append(M%10) M = M//10 _list = sorted(_list,reverse=True) for i in range(len(_list)): print(_list[i],end='') - N에 수를 입력받고, 자리수를 세야해서 바로 int로 바꾸지 않았다. - 변수 M을 int형으로 바꾼 N으로 두었다. - 숫자의 각 자리수에 해당하는 수를 _list 원소에 하나씩 넣었다. - 그 뒤 sorted()로 내림차순 정렬하였다. 2. 다른 풀이 ** 핵심 아이디어 1. 자릿수를 기준으로 정렬 → 9부터 0까지 .. 2021. 12. 27.
[백준] 2750번 : 수 정렬하기 문제 유형 : 정렬 [예시] 5 5 2 3 4 1 [출력] 1 2 3 4 5 1. 내 풀이 N = int(input()) _list = [] for i in range(N): tmp = int(input()) _list.append(tmp) _list = sorted(_list) for i in _list: print(i) 입력받은 N 개수만큼 _list에 데이터를 입력받았다. for문을 이용해 하나씩 입력받았고, append() 함수로 _list 뒤에 하나씩 이어붙였다. 그 뒤 sorted()로 _list를 오름차순 정렬하고, for문으로 _list 값 하나씩 출력하였다. 2. 다른 풀이 ** 핵심 아이디어 1. 데이터의 개수가 1000개 이하 → 기본적인 정렬 알고리즘을 이용 1) 선택 정렬 알고리즘.. 2021. 12. 27.
[백준] 4195번 : 친구 네트워크 유형 : 해시, 집합, 그래프 [예시] 2 3 Fred Barney Barney Betty Betty Wilma 3 Fred Barney Betty Wilma Barney Betty [출력] 2 3 4 2 2 4 핵심 아이디어 1. 해시를 활용한 Union-Find 알고리즘을 이용 2. 딕셔너리 자료형을 해시처럼 사용 가능(파이썬) 1. 합집합 찾기(Union-Find) 알고리즘 - 원소들의 연결 여부를 확인하는 알고리즘 - 부모 테이블을 이용해서 현재 어떤 집합에 포함되어 있는지 확인 def find(x): if x == parent[x]: return x else: p = find(parent[x]) parent[x] = p return parent[x] def union(x,y): x = find(.. 2021. 12. 19.
[알고리즘] 그래프 1. 그래프 관련 용어 정리 - 그래프(Graph) : 실제 세계의 현상이나 사물을 정점(노드)와 간선으로 표현 - 노드(Node) : 위치를 말하며 정점(Vertex)와 같은 말 - 간선(Edge) : 위치 간의 관계를 표시한 선으로 노드를 연결한 선을 의미, link나 branch라고도 함 - 인접 정점(Adjacent Vertex) : 간선으로 직접 연결된 노드 2. 그래프 종류 1) 무방향 그래프(Undirected Graph) - 방향이 없는 그래프 → 노드는 양방향으로 갈 수 있음 - 노드 A,B : (A,B)나 (B,A)로 표현 2) 방향 그래프(Directed Graph) - 방향이 있는 그래프 - 노드 A,B (A→B) : 로 표현 3) 가중치 그래프(Weighted Graph) 또는 네.. 2021. 12. 15.
[알고리즘] 탐색 알고리즘 - 이진탐색, 순차탐색 1. 분할 정복 알고리즘과 이진 탐색 1) 분할 정복 알고리즘(Divide and Conquer) - Divide : 문제를 하나 or 둘 이상으로 나눔 - Conquer : 나눠진 문제가 충분히 작고 해결이 가능하다면 해결하고, 그렇지 않으면 다시 나눔 2) 이진 탐색 - Divide : 리스트를 2개의 서브 리스트로 나눔 - Conquer - 검색할 숫자 > 중간값 : 뒷 부분의 서브 리스트에서 검색할 숫자를 찾음 - 검색할 숫자 < 중간값 : 앞 부분의 서브 리스트에서 검색할 숫자를 찾음 2. 이진 탐색 코드 def binary_search(data, search): if len(data) == 1 and search == data[0]: # 사이즈가 1일 때, 그 때 검색할 데이터 존재할 경우 r.. 2021. 12. 13.
반응형