Algorithm

문제출처: 프로그래머스 def solution(ingredient): answer = 0 s = [] for i in ingredient: s.append(i) if (len(s) >= 4) & (s[-4:] == [1, 2, 3, 1]): s = s[:-4] answer += 1 return answer ingredient 에서 요소를 pop(0) 하는 것 보다 for문을 통해 앞에서부터 훓으면서 원소를 stack에 저장하는 방식을 택했다. 그런 후 stack의 마지막 4개의 원소가 버거 포장 순서 1-2-3-1 과 일치하면 count 한다. Test 케이스 18개 중 4,5,12번 테스트 케이스에서 시간 초과로 실패했다. 그래서 if문에 추가로 stack 길이가 4이상인 경우를 추가하여 시간을 단축시..
def solution(s): answer = True tmp_s = [] s = list(s) while s != []: e = s.pop() if e == ")": tmp_s.append(e) elif tmp_s == []: return False else: tmp_e = tmp_s.pop() if tmp_e != ")": return False if tmp_s == []: return True else: return False string 형식에는 pop 메소드가 적용되지 않는 점을 간과하고 의사코드를 짰다.
큐 Queue 먼저 저장된 데이터가 먼저 출력되는 선입선출 FIFO(First In First Out)형식으로 데이터를 저장하는 자료구조입니다. queue의 뒤(rear)에 데이터를 추가하는 것을 enqueue라고 하고, queue의 앞(front)에서 데이터를 꺼내는 것을 dequeue라고 합니다. List 기반 구현 enqueue → append 메소드 사용 dequeue → pop 메소드 사용 # queue 선언 q = [] # enqueue O(1) q.append(1) # [1] q.append(2) # [1, 2] q.append(3) # [1, 2, 3] # dequeue O(n) q.pop(0) # [2, 3] q.pop(0) # [3] Linked list 기반 구현 enqueue → a..
문제출처: 프로그래머스 def solution(wallpaper): min_x, min_y = len(wallpaper), len(wallpaper[0]) max_x, max_y = 0, 0 for i in range(len(wallpaper)): for j in range(len(wallpaper[i])): if wallpaper[i][j] == '#': if i max_x: max_x = i if j > max_y: max_y = j answer = [min_x, min_y, max_x + 1, max_y + 1] return answer 되도록이면 이중 for문을 쓰지 않으려고 했지만, 결국 가장 쉽게 구현할 ..
리스트는 순서를 가지는 자료구조로, sequence라고도 부릅니다. 구현 방법은 두 가지가 있습니다. Array List Linked List 1. Array List 배열을 기반으로 구성된 List 자료구조이다. 메모리 할당 방식에 따라 다음 두 가지로 나눌 수 있습니다. 정적 배열 static array 배열 선언시 미리 저장 공간을 할당받는다. (fixed-size) 데이터를 순차적으로 저장한다. (order) 동적 배열 dynamic array static array 문제점, 초기 할당된 배열의 크기보다 더 많은 데이터를 저장해야 하는 경우 메모리 공간이 없어 발생하는 문제를 보안하고자 나온 할당 방식이다. 기존에 할당된 메모리 공간을 초과했을 때, 배열의 크기를 변경 resizing 할 수 있다..
정렬은 데이터를 특정 기준에 따라 순서대로 나열하는 과정입니다. 파이썬에서는 여러 정렬 방법을 사용할 수 있는데, 각각의 특징과 사용 방법을 간략하고 쉽게 정리하였습니다. 1. 내장 함수 sort(), sorted() sort() : 리스트 자체를 정렬한다. 원본 리스트가 변경됨. sorted(): 정렬된 새 리스트를 반환한다. 원본 리스트는 그대로 유지됨. 추가 인자: key: 정렬 기준을 정하는 함수를 기반으로 정렬. reverse: True 로 설정하면 내림차순, False면 오름차순으로 정렬. sorted(sample, key=len) sorted(sample, key=lambda x: x[1]) cmp_to_key 함수는 Python에서 사용자 정의 비교 함수를 정렬의 기준으로 사용할 수 있게 ..
elliz
'Algorithm' 카테고리의 글 목록 (2 Page)