Computer Science 387

[4.17] 문제 15. 친구의 친구 찾기 - 그래프

문제 15. 친구의 친구 찾기 -그래프 그래프 * 꼭짓점 - vertex, 선 - edge 파이썬으로 그래프 표현하기 딕셔너리, 리스트 이용함 graph = { 'Summer' = ['Mike', 'John', 'Justin'], 'Mike' = ['Summer', 'Justin'], 'Justin' = ['Summer', 'Mike', 'John', 'May'], 'John' = ['Summer', 'Justin'], 'May' = ['Justin', 'Kim'] 'Kim' = ['May'] 'Tom' = ['Jerry'] 'Jerry' = ['Tom'] } 모든 친구 찾기 알고리즘 1차 시도 - 앞으로 처리할 사람을 qu에 추가한다. - 이미 qu에 추가한 사람의 집합을 done이라고 한다. - 출발..

[4.16] 문제 14. 동명이인 찾기(딕셔너리)

문제 14. 동명이인 찾기 - 딕셔너리 딕셔너리 딕셔너리 dictionary : 기준이 되는 key와 value의 대응관계를 저장하는 자료 구조 * 해시 테이블 hash table : key - value를 대응시켜 자료를 보관하는 자료 구조 #리스트 만들기 a = {} a = dict() #key : value a = {"key1": "value1", "key2":"value2", "key3":"value3"} #key 불러오기 print(a["key1"]) #새 값을 추가하기 a["key4"] = "value4" len(a) a[key] a[key] = value del a[key] a.clear() key in a 동명이인 찾는 알고리즘 def find_same_name(a): name_dict =..

[4.16] 문제 13. 회문 찾기(큐와 스택)

넷째 마당 - 자료구조 문제 13. 회문 찾기(큐와 스택) 회문 : 뒤집어도 똑같은 글자, 문장(일요일, 스위스, 기러기 등) 큐queue : '줄 서기' 앞 [A B C D] 뒤 인큐 enqueue : 앞 [A B C D E] 뒤 디큐 dequeue : 앞 [B C D E] 뒤 (A) 스택 stack : '접시 쌓기' Last in First Out 푸시 push 처음 [A B C D E] 끝 팝 pop 처음 [A B C D] 끝 (E) 리스트로 큐/스택 만들기 queue : qu.append(x), qu.pop(0) stack : st.append(x), st.pop() Q. 주어진 문장은 회문인가? def palindrome(s): qu = [] st = [] for x in s: #주어진 글자가 ..

[4.16] 문제 12. 이분 탐색 Binary search

문제 12. 이분 탐색 이분 탐색은 찾는 값을 향한 '방향'으로만 탐색하는 것이다. 입력 리스트는 이미 정렬되어 있음. 알고리즘 생각중.. 입력 : (리스트, 찾는 값) 새로 정의 : (리스트, 찾는 값, i) 0. 종료 조건 - len 리스트 == 1 ? 1. 중간 위치 도출해서 값을 비교한다. - mid = len(a) // 2 - i = mid - 중간값 = 찾는 값이면 -> return mid - 중간값 재귀함수 [:중간값] - 중간값 > 찾는 값이면 -> 재귀함수 [중간값:] 값 말고 위치를 기억해야 한다. 그래서 return i를 해야함. 이렇게 끄적끄적 적고 만들어봐도 절대 혼자 못한다. 첨엔 걍 예시코드 봐야함. 이분 탐색 알고리즘 def binary_search(a,..

<모두의 알고리즘 with 파이썬> 문제 풀이 (1 ~ 5)

문제 1. 1부터 n까지 합 구하기 2021년 4월 2일 1. 1부터 n까지의 합 def sum(n): x = n * (n+1) // 2 return x print(sum(10)) 예제. n까지의 제곱합 def sum(n): x = 0 for i in range(1, n+1): x += i ** 2 return x print(sum(10)) 문제 2. 최댓값 찾기 2021년 4월 2일 1. 최댓값 찾기 def max_a(a): m = 0 for i in range(1, len(a)): if a[i] >= m: m = a[i] return m print(max_a([1, 2, 3, 10, 100, 200])) 예제. 최댓값의 위치 찾기 def max_a(a): m = 0 for i in range(1, l..