일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
- 컴공
- bfs
- 오에스
- 컴퓨터공학과
- 개발
- Computer science
- 컴공과
- 브루트포스
- 그래프
- 스택
- 구현
- 오퍼레이팅시스템
- 정석
- 백준
- DP
- coding
- Operating System
- 문제풀이
- 자료구조
- 북리뷰
- OS
- vector
- cs
- 알고리즘
- c++
- 정석학술정보관
- 코딩
- 코테
- Stack
- 너비우선탐색
- Today
- Total
목록coding (150)
Little Jay
객체 지향의 기둥 추상화(Abstraction) 캡슐화(Encapsulation) 상속(Inheritance) 다형성(Polymorphism) 1. Abstraction 파이썬 코드를 짤때는 추상화를 잘 설명을 해야합니다. 추상화는 이미 파이썬 자체에서 잘 되어있다고 볼 수 있을 것 같습니다. 이게 무슨 뜻이나면, 우리가 list 메소드를 쓸 때 append나 del 같은거는 처음 봤을 때 뭔지 모릅니다. 우리가 문법을 배워서 알면 되지만 처음 봤을때는 이게 어떤 뜻인지는 모르는것이죠. 하지만 이것이 대략적으로 어떤 기능을 하는지 직관적으로 유추를 할 수 있겠습니다. 우리가 사용자 정의의 클래스나 함수를 새로 만들었다면 우리의 코드를 읽는 다른 사람은 그게 정확히 뭘 의미하는지, 어떤 기능을 하는지 한눈..
일반적으로 최대 힙(MAX HEAP), 최소 힙(MIN HEAP)을 통해 구현할 수 있겠지만 사실 이걸 자료구조 시간때 직접 구현하는 방법만 알았지 STL을 어떻게 써야 할 지 몰랐다. 당연히 다른 블로그들을 보게 되면 대부분 최대/최소 힙을 사용하여서 문제를 풀었었다. 그런데 어느 한 블로그를 보고 이걸 multiset으로 푸신분이 계셔 그분의 코드를 참고했다. multiset은 c++의 STL이며 set container와 달리 key가 중복 가능한 set을 구현할 수 있다. 트리 자료구조이다. multiset에 원소를 넣으면 자동으로 오름차순 정렬이 된다. 중위 순회로 원소에 접근한다. (중위 순회는 트리에서 루트 노드를 중간순서에 방문하는 순회) 자세한 개념은 아래의 블로그를 참고하자 https:..
정규표현식이란? 정규 표현식은 문자열에 나타는 특정 문자 조합과 대응시키기 위해 사용되는 패턴입니다. 간단한 문자 검색부터 이메일, 패스워드 검사 등의 복잡한 문자 일치 기능 등을 정규식 패턴으로 빠르게 수행할 수 있습니다. 자바스크립트에서는 정규표현식 또한 객체입니다. 정규표현식의 역할 정규표현식은 크게 3개의 역할들로 구분합니다. 문자 검색(search) 문자 대체(replace) 문자 추출(extract) 본 포스팅은 자바스크립트의 정규식에대해 다루겠습니다. 파이썬, C++ 에서도 정규표현식을 지원하지만, 본 포스팅에서는 자바스크립트 기준으로 공부하고 정리한 것을 올리겠습니다 정규표현식 테스트 사이트 아래의 사이트들에서 간단하게 본인이 작성한 정규식코드를 확인할 수 있습니다. https://rege..
map을 활용한 기본적인 문제 #include #include using namespace std; int n; map m; int main() { ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); cin >> n; while (n--) { string s; cin >> s; ++(m[s]); } pair p; int max = 0; for (auto s : m) { if (s.second > max) { max = s.second; p = s; } } cout
처음 파트는 Linked List로 구현했다 남들은 array로 구현하는게 쉽다고 하는데 본인은 Linked List로 구현하는게 훨씬 쉽다고 느껴졌다 #include #include using namespace std; class Node { public: int data; Node* next; Node(int e) { this->data = e; this->next = NULL; } }; class LinkedList { public: Node* head; Node* tail; LinkedList() { head = NULL; tail = NULL; } ~LinkedList() { } int front() { return head->data; } void addFront(int e) { Node* n..
문제 조건에 아무 지역도 물에 잠기지 않을 수도 있다. 이 말을 듣고 음 그런군..... 이라고 생각을 했었는데 이것때문에 계속 틀렸다;;; 이 말은 즉슨 level이 0부터 시작될 수도 있다는거다 #include #include #include #include #include using namespace std; int n, safe, level; int map[101][101]; bool visited[101][101]; int map_copy[101][101]; vector v; const int dx[] = { 1, -1, 0, 0 }; const int dy[] = { 0, 0, 1, -1 }; void copy(int flood_level) { for (int i = 0; i < n; i++)..
이 문제를 해결하는데는 두 달정도가 걸린 것 같다. 방학때 자료구조 배우고 개강하기 전에 stack 고급 문제들을 풀어봐야지 하고 무심코 도전했던 첫 골드 문제였는데 5번 제출하고도 틀렸었고, 백준에 질문을 올려서 뭘 잘못했는지 반례를 찾았고, 드디어 해결을 했다. stack과 문자열 parsing을 활용한 문제였다. html의 tag를 생각하면 되는 문제였는데, 다행히도 html의 태그 내의 css요소 들은 신경을 안써도 되었다. 그래서 a 태그, br 태그 들을 잘 생각해주면 되는 문제였다. 내가 틀린 부분은 처음에 가 들어올 경우 legal로 출력이 되는 것이 문제였다. 이 부분을 처리해주고 제출했더니 correct가 떴다. 재미있기도 했고, 허무했던 stack 문제였다. #include #incl..
간단한 BFS 문제이다. 오랜만에 무지성으로 풀고 한번에 통과했다 미로탐색이랑 유사한 문제이다 #include #include #include #include using namespace std; intt, l, sx, sy, fx, fy; int cnt[300][300]; bool visited[300][300]; int table[300][300]; const int dx[] = { 1, 2, 2, 1, -1, -2, -2, -1 }; const int dy[] = { 2, 1, -1, -2, -2, -1, 1, 2 }; int main() { cin >> t; while (t--) { cin >> l; memset(visited, 0, sizeof(visited)); for (int i = 0; i..
간단한 BFS 문제이다. 경로는 대부분 BFS를 돌리면 찾을 수 있으므로 BFS로 접근해서 풀었다 처음에는 변수를 올리면서 탐색을 했는데, 이렇게 하면 BFS를 다 돈 값이 나와서 어떻게 하나 고민을 했었는데, 그냥 다른 이차원 배열에 경로를 이동한 값을 넣어주면서 다니면 되는걸 깨달았다. #include #include #include #include using namespace std; int n, m; char maze[100][100]; int cnt[101][101]; bool visited[100][100]; const int dx[] = { 1, -1, 0, 0 }; const int dy[] = { 0, 0, 1, -1 }; int main() { ios::sync_with_stdio(fa..
처음에는 이중 for문 즉, O(N^2)로 풀었는데 시간초과가 떠버렸다. 어떻게 이걸 O(N)으로 풀지, 그리고 어떻게 스택으로 풀지 고민하다가 결국 다른 분의 블로그를 참조했다. 원리는 생각보다 간단했다. stack에 저장하면서 stack에 있는 값이랑 비교하면서 큰 값 나올때까지 pop하기 답을 안보고 싶은데 진짜 1시간 동안 못풀면 계속 보게된다;;;; #include #include #include using namespace std; int N; stack s; int ans[1000001]; int seq[1000001]; int main() { cin >> N; for (int i = 0; i > seq[i]; for (int i = N - 1; i >= 0; i-..