알고리즘
-
[백준][python] 3052번: 나머지알고리즘/Baekjoon 2022. 2. 3. 21:20
https://www.acmicpc.net/problem/3052 3052번: 나머지 각 수를 42로 나눈 나머지는 39, 40, 41, 0, 1, 2, 40, 41, 0, 1이다. 서로 다른 값은 6개가 있다. www.acmicpc.net 해결 처음에 cnt변수를 따로 생성해서 배열마다의 cnt을 따로 구해 그걸 또 배열에 넣었음 .. set이란 함수가 중복을 제거하는 기능을 가지고 있다는 것을 알았다. 즉, set함수는 리스트의 중복되는 값을 제거한 집합을 반환함! add : 하나의 값 추가 update: 여러개의 값 update remove : set내의 값 삭제 num=[] for i in range(10): n = int(input()) num.append(n%42) num = set(num) ..
-
[백준][python] 1110번: 더하기 사이클알고리즘/Baekjoon 2022. 1. 31. 16:55
https://www.acmicpc.net/problem/1110 1110번: 더하기 사이클 0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음, www.acmicpc.net 문제점 십의 자리랑 일의 자리를 문자열화 해서 잇고 숫자로 다시 바꾸는 과정으로 문제를 해결하려고 했음,,,, 1차원적인 생각 ㅜ result = str(second)+str(result%10) result = int(result) 해결 십의 자리는 곱하기 10을 하면 굳이 문자열로 잇지 않아도 잘 이어짐... 그리고 맨 처음 입력했던 수랑 비교하기 위해선 input으로 받은 n을 ..
-
[백준][python] 11021번: A+B - 7알고리즘/Baekjoon 2022. 1. 31. 14:42
https://www.acmicpc.net/problem/11021 11021번: A+B - 7 각 테스트 케이스마다 "Case #x: "를 출력한 다음, A+B를 출력한다. 테스트 케이스 번호는 1부터 시작한다. www.acmicpc.net 내가 푼 방식 - 형식 지정자 말고 그냥 연결해 줬음 t = int(input()) for i in range(1,t+1): a, b = map(int, input().split()) print("Case #",i,":",end=" ") print(a+b) 해결 - 형식 지정자를 사용하자 cases = int(input()) for i in range(cases): a,b = map(int, input().split()) ans = a + b print("Case ..
-
양방향 연결리스트(Doubly Linked Lists)알고리즘/이론정리 2021. 9. 14. 19:01
양방향 연결리스트란? 한쪽으로만 링크를 연결하지 말고 양쪽으로 - 앞으로도(다음node) 뒤로도(이전node)진행가능 node의 구조 확장 class Node: def __init__(self, item): self.data = item self.prev = None self.next = None 리스트 처음과 끝에 dummy node를 두자 -> 데이터를 담고 있는node들은 모두 같은 모양 L.insertAfter next = prev.next newNode.prev self.nodeCount: return None if pos > self.nodeCount // 2: i = 0 curr = self.tail while i < self.nodeCount - pos + 1: curr = curr.pre..
-
연결리스트 (2)알고리즘/이론정리 2021. 9. 9. 19:21
연결리스트는 삽입과 삭제가 유연하다는 것이 가장 큰 장점이다. (1)에서는 특정번째를 지정하여 원소를 삽입/삭제하는 연산을 구현해보았다면, (2)에서는 특정원소의 바로 다음을 지정하여 원소를 삽입/삭제하는 연산을 정의하고 구현해 볼 것이다. 그러자면, 맨 앞에 원소를 추가 (삽입) 하거나 맨 앞의 원소를 제거 (삭제) 하는 연산을 지정하기가 애매해짐 이런 경우에도 동일한 방법을 적용하기 위해서, 이번에는 연결 리스트의 맨 앞에다가 데이터 원소를 담고 있지 않은, 그냥 자리만 차지하는 노드 -dummy node 리스트를 정의하자 0번째 노드에 dummy node를 정의하자..! class Node: def __init__(self, item): self.data = item self.next = None ..
-
연결리스트 연습문제알고리즘/이론정리 2021. 9. 9. 17:07
연결리스트에 관한 삽입 삭제 순회의 함수들을 모두 구현한 것이다. 문제는 popAt()함수를 구현하는 것이었다. class Node: def __init__(self, item): self.data = item self.next = None class LinkedList: def __init__(self): self.nodeCount = 0 self.head = None self.tail = None def getAt(self, pos): if pos self.nodeCount: return None i = 1 curr = self.head while i < pos: curr = curr.next i += 1 return curr def insertAt(self, pos, newN..
-
연결리스트(Linked Lists)알고리즘/이론정리 2021. 9. 8. 18:32
연결리스트 (Linked Lists) - 선형배열이 번호가 붙여진 칸에 원소들을 채워넣는 방식이라고 하면, 연결리스트는 각 원소들을 줄줄이 엮어서 관리하는 방식임 - 연결리스트는 원소들이 링크라고 불리는 고리로 연결되어 있으므로, 가운데를 끊어 하나를 삭제하거나 삽입하기가 쉬움 - 하지만 메모리 소요가 큼 추상적 자료구조 Data ex) 정수, 문자열 ,레코드 ..... A set of operations ex) 삽입 삭제 순회/ 정렬 탐색 Node - data - link(next) 리스트의 맨앞 : head 리스트의 맨끝 : tail class Node: def __init__(self, item): self.data = item self.next = None class LinkedList: def ..