일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- C++ library
- JUCE library
- gui
- OS
- BOJ
- 운영체제
- c++ heap
- C++
- 알고리즘
- JUCE
- Nebula
- go
- 자료구조
- 연결리스트
- vim-go
- JUCE 튜토리얼
- 공룡책
- LOB
- 프로그래밍
- JUCE라이브러리
- C++ gui
- Docker
- C++ gui 라이브러리
- C언어
- go channel
- 코딩
- tour of go
- 리듬게임
- 백준
- a tour of go
Archives
- Today
- Total
CafeM0ca
[BOJ]키로거 본문
반응형
친구에게 도움을 많이 받았다. 3일걸렸는데 1일차에는 링크드리스트 직접구현해서 써먹을려다 실패. 2일차에는 std list 사용법 익히다가 erase부분에서 조건 몰라서 실패 3일차에 erase부분 도움받았다.
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 31 32 33 34 35 36 37 38 39 | #include<iostream> #include<list> #include<string> using namespace std; int main(void) { int L; //줄 수 string s; cin >> L; while(L>0){ list<char> keyloger; //keyloger 리스트 생성 list<char>::iterator insert_pos = keyloger.begin(); //insert_pos라는 리스트의 iterator cin >> s; for(int i=0;i<s.length();i++){ //문자열 크기만큼 switch(s.at(i)){ //문자열의 인덱스마다 case '<': if(insert_pos != keyloger.begin()) //첫번째 컨테이너 전인 begin에 커서위치가 아니면 insert_pos--; break; case '>': if(insert_pos != keyloger.end()) //마지막 컨테이너 후인 end에 커서위치가 아니면 insert_pos++; break; case '-': if(keyloger.size() > 0) if(insert_pos != keyloger.begin()) //begin의 위치가 아니면 insert_pos = keyloger.erase(--insert_pos); //지우기 break; default: keyloger.insert(insert_pos,s.at(i)); //삽입 } } for(auto b : keyloger) //keyloger를 탐색하며 출력 cout << b; cout << '\n'; L--; } return 0; } | cs |
처음에는 연결리스트 구현하려 했었는데 노드 이어주는 부분에서 문제(?)가 생겨서 stl로 풀었다. stl 정말 편한데 iterator(반복자)에 대해 더 공부할 필요가 있음을 느꼈다. '연결리스트와 같은 자료구조는 어디다 써먹을까?' 라는 질문에는 이러한 문제가 답변하고 있으니 자료구조도 더 공부할 필요를 느꼈다.
반응형
'Programming > 백준' 카테고리의 다른 글
[BOJ]10809번 알파벳 찾기 (0) | 2018.04.22 |
---|---|
[BOJ]11718,11719 그대로 출력하기 (2) | 2018.04.19 |
[BOJ] 1316번 그룹 단어 체커 (0) | 2018.03.24 |
[BOJ]셀프넘버 - 4673 (0) | 2018.02.14 |
[BOJ]11718,11719번 문자열 그대로 출력하기 (1) | 2017.08.08 |
Comments