일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 컴공
- coding
- 브루트포스
- 북리뷰
- 알고리즘
- 정석학술정보관
- c++
- 자료구조
- 구현
- bfs
- 코딩
- 개발
- 스택
- Computer science
- DP
- 오퍼레이팅시스템
- 코테
- OS
- 오에스
- 컴퓨터공학과
- 백준
- 정석
- 그래프
- 너비우선탐색
- Operating System
- cs
- 컴공과
- vector
- 문제풀이
- Stack
- Today
- Total
목록구현 (14)
Little Jay
사실 머리로 생각만 하면 간단한 문제인데 코드로 구현하려고 하니까 조금은 복잡한 문제였다. def solve(): A=[0, 0, 1, 8, 2, 2, 8, 9, 0, 3, 4, 0, 0] A.sort() i= A.count(0) if len(A) 2: count+=(A.pop()+A.pop())*i i*=10 count+=sum(A)*i return count
조금 짜증났던 구현문제 로마 숫자에 익숙하지 않아서 로마 숫자 개념을 이해하고 코드를 구현하는게 조금 어려웠다. Switch문을 사용할때 break를 안쓰게 되면 다음 Case로 넘어가기 때문에 이를 활용했다. #include #define endl '\n' using namespace std; string a; int t; int romanToNum(string& s) { int temp = 0; int aSize = s.size(); for (int i = 0; i < aSize; i++) { if (s[i] == 'M') { temp += 1000; } else if (s[i] == 'D') { temp += 500; } else if (s[i] == 'C') { if (s[i + 1] == 'M'..
실제 뿌요뿌요 게임을 구현하는 문제였다. 아이디어는 이렇다 4개 이상의 같은 색깔의 슬라임(?)이 모이면 터지고 1연쇄가 일어난 후 뿌요들이 아래로 중력에 의해 내려온다. 이 문제를 풀때 간과했던 것은 한 번에 터뜨릴 수 있는 것들은 한번에 터지고 이는 1 연쇄이다. 그래서 한번에 2개의 그룹이 터져도 2연쇄가 아니라 1연쇄이다. 이 부분을 제외하면 재밌게 풀었던 문제이다. #include #include #define endl '\n' using namespace std; char graph[12][6]; bool visited[12][6]; const int dx[] = { 1, -1, 0, 0 }; const int dy[] = { 0, 0, 1, -1 }; int ans = 0; //일반 bfs ..
빡구현 문제이다. 여기서 어려웠던 부분은 명령어 별로 벽에 부딪혔을 때 나머지 명령어도 받아야 하는 부분의 처리가 좀 까다로웠다. 구조체를 활용하여 위 부분만 조심하면 크게 어렵지는 않았던 문제였던 것 같다. #include #define endl '\n' using namespace std; int a, b; int n, m; int num, orders; char action; struct rb { int x; int y; char direction; }; rb robots[101]; bool checkWall(int num) { if (robots[num].x b) { cout > y >> dir; robots[i].x = x; robots[i].y = y; robots[i].direction = ..
쉬웠던 구현문제였지만 오타 하나를 못봐서 30분간 맞왜틀하고 있었던 문제였다. 처음에는 이차원 배열을 통해서 구현해야하나 싶었는데, 생각해보면 deque를 사용하면 좋겠다라는 생각을 했다. 컨베이어벨트를 회전시킬 때 단순히 push_front, pop_back을 해주면 컨테이너가 잘 회전이 된다. 생각없이 check 컨테이너에 push_back 써놓은거를 못봐서 애먹었다. 벨트 회전 - 로봇 움직이기 - 로봇 배치 - 내구도 체크 순서대로 진행하면 된다. 특히 로봇은 0~n-1에서 놀고 n ~ 2n -1에 절대로 가지 않는다. 어차피 n-1에서 다 떨어져야하기 때문이다. #include #define endl '\n' using namespace std; int n, k; deque durability;..
처리해야하는 항목은 다음과 같다 문장의 맨 앞에 '_' 가 오는 경우 문장의 맨 뒤에 '_' 가 오는 경우 문장의 만 앞이 대문자인 경우 '__' 같이 언더스코어가 연속적으로 나오는 경우 대문자와 '_'가 복합적으로 나오는 경우 정도를 에러처리 해주면 나머지 구현은 쉽다. Python으로 풀면 더 간단할텐데 C++이라 코드도 길어지고 시간도 오래 걸렸다. toJava 함수에서 위험한 구간이 있는데 s[i + 1] == '_'인 경우를 체크해주는건데 메모리를 잘못 건드려서 seg fault가 날 수 있지 않을까를 생각해봤는데 그 경우의 수는 문장의 마지막에 '_'가 오는 경우이기 때문에 이미 체크를 해서 안전하게 넘어갈 수 있는 것 같다. #include #define endl '\n' using name..
조금은 까다로웠던 구현 문제였다. 함수 이름을 BFS라고 써놨는데 그냥 check정도가 적당할 것 같다. 입력으로 X가 들어올때 vector에 집어 넣고, 이 vector 컨테이너 안에 있는 시작점들을 바탕으로 탐색을 시작하면 되는 문제였다. 오목이기 때문에 상하좌우 뿐만이 아니라 대각선으로도 이동할 수 있다는 것까지 고려해야 한다. 특이한점은 X가 5개로 연결되는 경우가 정답이 아니라 X가 4개 있고, 하나의 바둑돌을 놓을 수 있어야 정답이 된다. #include #define endl '\n' #define pii pair using namespace std; const int m = 10; char arr[m][m]; vector v; const int dx[8] = { 1, 1, 1, 0, 0, ..
이 문제를 처음 봤을때는 Brute Force로 하나하나 열 다 체크해가면서 Back Tracking으로 다시 돌아가고 해야하나 생각했지만 2차원 리스트를 생성하고 0으로 초기화해 성을 나타내고, 행들 중에서 경비원이 없는 행의 개수를 센다. 열들 중에서 경비원이 없는 열의 개수를 센다. 두 값 중에 큰 값이 정답이 된다. #include using namespace std; char castle[51][51]; bool row[51]; bool col[51]; int n, m; int main() { ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); cin >> n >> m; for (int i = 0; i > castle[i..
처음 파트는 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..
int형 LinkedList 데이터 타입은 바꾸거나 typedef로 지정을 해주거나 할 수 있다. 중간에 데이터를 넣는 것은 구현하지 않았다. #include #include using namespace std; class intNode { private: int dat; intNode* next; intNode(int x) { this->dat = x; this->next = NULL; } friend class intLinkedList; }; class intLinkedList { private: intNode* head; intNode* tail; public: intLinkedList() :head(NULL), tail(NULL) { } ~intLinkedList() {} void addFront..