문제 링크 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 =..
분류 전체보기
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FblkVhw%2Fbtr9z9ur3Bs%2FxN1RrwKJYjK9RLcPOkvg71%2Fimg.png)
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..
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbajV3K%2Fbtr9yxCl774%2FXPIXsQdgP9K0JdU0xv6c6K%2Fimg.png)
Iteration 실제로 어떤 작업이 이루어질 때 그 내부 구조에 대해서 사용자는 굳이 알 필요가 없습니다. 그래서 사용될 수 있는 Java의 좋은 기능 중 하나가 iterator라고 합니다. python에서도 iterable 객체에서 값을 하나씩 꺼낼 수 있는 iterator가 존재합니다. Stack iterator: linked-list / array implementation itertator의 구조를 자세히 살펴보고 있습니다. 호출이 될 때마다 current에 저장된 값이 다음 값으로 넘어가는 것을 알 수 있습니다. Bag API 강의가 너무 오래 전이라 그래서 어느 정도의 괴리가 존재하는지 모르겠네요.. python의 set 자료형을 말하는 것 같습니다. 이때 당시의 자바는 이걸 Bag이라는 A..
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbwWrDM%2Fbtr9siS6iW4%2Fl8QOHfHekHxJhnzdbqJqfK%2Fimg.png)
Parameterized stack 이 내용도 사실 파이썬과는 큰 차이가 있습니다. Java에서는 generic이라는 것이지만, 파이썬에서는 type hint를 지원하기 때문입니다. run time error를 지양하고 compile 단계에서 에러가 발생하도록 하는 장치라고 볼 수 있습니다. 어떤 프로그램이 곧 product라고 생각하면, 고객에게 전달된 뒤에 문제가 발생하는 것보다 내 손에 있을 때 발생하는 것이 낫겠죠. 그래서 사전에 정해진 일반적인 형태 등을 정해놓은 것이 generic, 그리고 파이썬에서는 type hint라고 이해하면 될 것 같습니다. Generic stack: linked-list implementation generic type name을 사용해서 기존의 코드를 개선한 예시입..
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdCsZ30%2Fbtr9qCEeNEQ%2FnqkfpxJS8lbfnyOAZyhaIK%2Fimg.png)
본 게시물은 NLP 분야에서 가장 많이 사용되는 모델 중 하나인 BERT를 기준으로 작성되었습니다. 드디어 혼자서 아주 간단한 프로젝트에 도전해 볼 기회가 주어져서 밑바닥부터 딥러닝 모델 구조를 짜보았습니다. 사실 다른 사람이 짜준 코드와 구조 내에서 일부만 변경하던 것에 비하면 너무너무 어렵다는 생각이 들었습니다 🤯 어찌보면 그만큼 복잡한 구조 내에서 작업했던게 신기하기도 했구요. 아마 저처럼 캐글이나 데이콘과 같은 경진대회에 처음 입문하는 사람은 주어진 베이스라인의 형태를 벗어나는 것 조차 어려운 일일 것입니다. 그래서 제가 캐글과 데이콘의 간단한 분류 프로젝트를 진행하면서 알게 된 내용들을 최대한 이해하기 쉽게 정리해보고자 합니다. 다른 것보다도 사전학습된 모델을 불러와서 내가 원하는대로 커스텀하는..
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcDzmjS%2Fbtr9B0ckG96%2FwHdUT3TE5KBODk5vkbTF7k%2Fimg.png)
Queue API Queue 자료구조는 Stack과 정반대의 특성을 지닙니다. 대표적으로 FIFO, 들어온 순서대로 나가는 특성을 지니고 있죠. Queue: linked-list representation 파이썬에서는 포인터라는 개념이 없기 때문에 더욱 어색하지만 개념은 간단한 것 같습니다. 아이템을 추가할 때는 맨 앞에, 제거할 때는 맨 뒤에서 하다보니 가리키는 주소값이 두 군데여야 한다는 것입니다. Queue dequeue: linked-list implementation Queue: linked-list implementation in Java 굳이 파이썬으로 이런 코드를 짤 필요는 없는 것 같습니다.. 단순히 deque를 불러와서 추가할 줄만 알면 충분합니다. 참고로 popleft를 쓰면 배열의 ..