분류 전체보기

문제 링크 https://www.acmicpc.net/problem/1918 1918번: 후위 표기식 첫째 줄에 중위 표기식이 주어진다. 단 이 수식의 피연산자는 알파벳 대문자로 이루어지며 수식에서 한 번씩만 등장한다. 그리고 -A+B와 같이 -가 가장 앞에 오거나 AB와 같이 *가 생략되는 등의 www.acmicpc.net 소스 코드 def main(): formula = list(input()) stack = [] # 연산자, 괄호가 담길 스택 answer = '' for tmp in formula: if tmp.isalpha(): # 문자는 바로 정답 문자열에 추가 answer += tmp elif tmp == '(': # 여는 괄호는 스택에 추가 stack.append(tmp) elif tmp =..
Java collections library java의 collections라는 라이브러리엔 유용한 툴들이 많이 들어있습니다. python에도 같은 이름의 라이브러리가 있어서 코딩테스트 문제를 풀이할 때 종종 사용됩니다. War story (from Assignment 1) 과제 1이었던 percolation 문제를 예로 들어서 라이브러리 사용에 충분한 이해가 전제되어야 함을 강조하고 있습니다. n by n 사이즈의 문제를 다룰 때, 이를 배열로 풀이한 사람은 N^2 만큼의 시간이 소요됩니다. 반면 이를 linked list로 풀이하면 N^4의 시간, 즉 제곱만큼의 시간이 소요됩니다. 이는 linked list가 탐색을 수행할 때 배열의 길이 n에 비례하는 시간 복잡도를 가지기 때문입니다. 즉, 상수(c..
Iteration 실제로 어떤 작업이 이루어질 때 그 내부 구조에 대해서 사용자는 굳이 알 필요가 없습니다. 그래서 사용될 수 있는 Java의 좋은 기능 중 하나가 iterator라고 합니다. python에서도 iterable 객체에서 값을 하나씩 꺼낼 수 있는 iterator가 존재합니다. Stack iterator: linked-list / array implementation itertator의 구조를 자세히 살펴보고 있습니다. 호출이 될 때마다 current에 저장된 값이 다음 값으로 넘어가는 것을 알 수 있습니다. Bag API 강의가 너무 오래 전이라 그래서 어느 정도의 괴리가 존재하는지 모르겠네요.. python의 set 자료형을 말하는 것 같습니다. 이때 당시의 자바는 이걸 Bag이라는 A..
Parameterized stack 이 내용도 사실 파이썬과는 큰 차이가 있습니다. Java에서는 generic이라는 것이지만, 파이썬에서는 type hint를 지원하기 때문입니다. run time error를 지양하고 compile 단계에서 에러가 발생하도록 하는 장치라고 볼 수 있습니다. 어떤 프로그램이 곧 product라고 생각하면, 고객에게 전달된 뒤에 문제가 발생하는 것보다 내 손에 있을 때 발생하는 것이 낫겠죠. 그래서 사전에 정해진 일반적인 형태 등을 정해놓은 것이 generic, 그리고 파이썬에서는 type hint라고 이해하면 될 것 같습니다. Generic stack: linked-list implementation generic type name을 사용해서 기존의 코드를 개선한 예시입..
· 딥러닝
본 게시물은 NLP 분야에서 가장 많이 사용되는 모델 중 하나인 BERT를 기준으로 작성되었습니다. 드디어 혼자서 아주 간단한 프로젝트에 도전해 볼 기회가 주어져서 밑바닥부터 딥러닝 모델 구조를 짜보았습니다. 사실 다른 사람이 짜준 코드와 구조 내에서 일부만 변경하던 것에 비하면 너무너무 어렵다는 생각이 들었습니다 🤯 어찌보면 그만큼 복잡한 구조 내에서 작업했던게 신기하기도 했구요. 아마 저처럼 캐글이나 데이콘과 같은 경진대회에 처음 입문하는 사람은 주어진 베이스라인의 형태를 벗어나는 것 조차 어려운 일일 것입니다. 그래서 제가 캐글과 데이콘의 간단한 분류 프로젝트를 진행하면서 알게 된 내용들을 최대한 이해하기 쉽게 정리해보고자 합니다. 다른 것보다도 사전학습된 모델을 불러와서 내가 원하는대로 커스텀하는..
Queue API Queue 자료구조는 Stack과 정반대의 특성을 지닙니다. 대표적으로 FIFO, 들어온 순서대로 나가는 특성을 지니고 있죠. Queue: linked-list representation 파이썬에서는 포인터라는 개념이 없기 때문에 더욱 어색하지만 개념은 간단한 것 같습니다. 아이템을 추가할 때는 맨 앞에, 제거할 때는 맨 뒤에서 하다보니 가리키는 주소값이 두 군데여야 한다는 것입니다. Queue dequeue: linked-list implementation Queue: linked-list implementation in Java 굳이 파이썬으로 이런 코드를 짤 필요는 없는 것 같습니다.. 단순히 deque를 불러와서 추가할 줄만 알면 충분합니다. 참고로 popleft를 쓰면 배열의 ..
chanmuzi
'분류 전체보기' 카테고리의 글 목록 (45 Page)