본문 바로가기

알고리즘6

[TIL] 2023-01-30(63day) / 알고리즘 알고리즘 문제풀이 👉 겹치는 선분의 길이 # 문제설명 - 선분 3개가 평행하게 놓여 있습니다. 세 선분의 시작과 끝 좌표가 [[start, end], [start, end], [start, end]] 형태로 들어있는 2차원 배열 lines가 매개변수로 주어질 때, 두 개 이상의 선분이 겹치는 부분의 길이를 return 하도록 solution 함수를 완성해보세요. lines가 [[0, 2], [-3, -1], [-2, 1]]일 때 그림으로 나타내면 다음과 같습니다. 선분이 두 개 이상 겹친 곳은 [-2, -1], [0, 1]로 길이 2만큼 겹쳐있습니다. # 제한사항 - lines의 길이 = 3 - lines의 원소의 길이 = 2 - 모든 선분은 길이가 1 이상입니다. - lines의 원소는 [a, b] 형.. 2023. 1. 30.
[TIL] 2022-12-14(34day) 프로그래머스 알고리즘 문제풀이(3) 👉 영어가 싫어요 - 문제설명 영어가 싫은 머쓱이는 영어로 표기되어있는 숫자를 수로 바꾸려고 합니다. 문자열 numbers가 매개변수로 주어질 때, numbers를 정수로 바꿔 return 하도록 solution 함수를 완성해 주세요. - 제한사항 numbers는 소문자로만 구성되어 있습니다. numbers는 "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine" 들이 공백 없이 조합되어 있습니다. 1 ≤ numbers의 길이 ≤ 50 "zero"는 numbers의 맨 앞에 올 수 없습니다. - 입출력 예 numbers result "onetwothreefourfivesixsevene.. 2022. 12. 15.
[TIL] 2022-11-16(13day) 프로그래머스 알고리즘 문제풀이(1) 👉 369게임 - 문제설명 머쓱이는 친구들과 369게임을 하고 있습니다. 369게임은 1부터 숫자를 하나씩 대며 3, 6, 9가 들어가는 숫자는 숫자 대신 3, 6, 9의 개수만큼 박수를 치는 게임입니다. 머쓱이가 말해야하는 숫자 order가 매개변수로 주어질 때, 머쓱이가 쳐야할 박수 횟수를 return 하도록 solution 함수를 완성해보세요. - 제한사항 # 1 ≤ order ≤ 1,000,000 - 입출력 예 order result 3 1 29423 2 입출력 예 #1 : 3은 3이 1개 있으므로 1을 출력합니다. 입출력 예 #2 : 29423은 3이 1개, 9가 1개 있으므로 2를 출력합니다. ✏️ 소스코드 def solution(order): answer .. 2022. 11. 16.
[TIL] 2022-11-11(10day) 알고리즘(Algorithm -3) 👉 정렬 - 데이터를 순서대로 나열하는 방법을 의미 -1) 버블 정렬 - 첫 번째 자료와 두 번째 자료를, 두 번째 자료와 세 번째 자료를, 세 번째와 네 번째를, … 이런 식으로 (마지막-1)번째 자료와 마지막 자료를 비교하여 교환하면서 자료를 정렬하는 방식 input = [4, 6, 2, 9, 1] def bubble_sort(array): n = len(array) for i in range(n):##배열의 크기만큼 반복했다가, for j in range(n - i - 1): #1개씩 줄어들면서 반복 if array[j] > array[j + 1]:#만약 array[j]가 더 크다면 array[j], array[j + 1] = array[j + 1], array[j.. 2022. 11. 11.
[TIL] 2022-11-10(9day) 알고리즘(Algorithm -2) 👉 Array(어레이) - 배열은 크기가 정해진 데이터의 공간 (한 번 정해지면 바꿀 수 없다.) - O(1) 내에 접근할 수 있다. - 배열은 원소를 중간에 삽입/삭제 하려면 모든 원소를 다 옮겨야 한다. - 원소를 추가하기에는 비효율적인 자료구조 👉 Linked List(링크드 리스트) - 리스트는 크기가 정해지지 않은 데이터의 공간 (연결 고리/포인터로 이어주기만 하면, 늘어날 수 있다.) - 리스트는 원소를 중간에 삽입/삭제 하기 위해서는 앞 뒤의 포인터만 변경하면 된다. (원소 삽입/삭제를 O(1)의 시간 복잡도 안에 할 수 있다.) ✍️ 링크드 리스트 구현 class LinkedList: def __init__(self, value): self.head = N.. 2022. 11. 10.
[TIL] 2022-11-09(8day) Python 기초문법(2) 👉 튜플 - 리스트와 비슷하지만 불변인 자료형 - 딕셔너리 대신 리스트와 튜플로 딕셔너리 '비슷하게' 만들어 사용해야 할 때 많이 쓰인다. a_dict = [('bob','24'),('john','29'),('smith','30')] 👉 집합 - 중복 제거가 가능하고, 교집합/합집합/차집합 구할 수 있다. a = ['사과','감','수박','참외','딸기'] b = ['사과','멜론','청포도','토마토','참외'] print(a & b) # 교집합 print(a | b) # 합집합 👉 f-string - 변수로 더 직관적인 문자열을 만들 수 있다. for s in scores: name = s['name'] score = str(s['score']) print(f'{name}.. 2022. 11. 9.