본문 바로가기
728x90

C++16

[c++] vector 입력 1. vector 초기화 안했을 시 push_back()으로 입력해야 함. v[i]처럼 인덱스로 입력 안됨. 2. vector 초기화 시 v[i] 처럼 인덱스로 접근하여 입력 가능 2023. 7. 25.
[c++] cin.getline() vs getline() 및 cin.ignore() 정리 1. cin.getline(char 배열, 넣을 문자수) 넣을 문자 수만큼만 char 배열에 저장한다. 저장은 각각의 알파벳이 원소 하나하나에 할당됨. 공백도 같이 저장한다. (cin >> 은 공백 전까지 장, cin.getline()은 공백 포함 개행문자 전까지 저장) # 넣을 문자 만큼 받는다. 2. getline(cin, string) from #include getline()은 string에 정의되어 있으며, string 형의 문자열 저장. # getline(cin, string, ‘특정문자’) : 특정문자 전까지의 문자열을 받는다. ※ 주의사항, cin.ignore() 일반적인 cin >> a;와 같이 입력 받고, getline() 혹은 cin.getline()을 사용할 시에는 재대로 동작하지 .. 2023. 7. 14.
[c++] 백준 덱(10866) 문제 https://www.acmicpc.net/problem/10866 간단히 덱의 기본동작을 구현하는 문제이다. push_front X: 정수 X를 덱의 앞에 넣는다. push_back X: 정수 X를 덱의 뒤에 넣는다. pop_front: 덱의 가장 앞에 있는 수를 빼고, 그 수를 출력한다. 만약, 덱에 들어있는 정수가 없는 경우에는 -1을 출력한다. pop_back: 덱의 가장 뒤에 있는 수를 빼고, 그 수를 출력한다. 만약, 덱에 들어있는 정수가 없는 경우에는 -1을 출력한다. size: 덱에 들어있는 정수의 개수를 출력한다. empty: 덱이 비어있으면 1을, 아니면 0을 출력한다. front: 덱의 가장 앞에 있는 정수를 출력한다. 만약 덱에 들어있는 정수가 없는 경우에는 -1을 출력한다. .. 2023. 7. 14.
[c++] 백준 회전하는 큐(1021) 문제 https://www.acmicpc.net/problem/1021 문제가 이해가 안됨. 보고 또 보고 이해함. 지민이의 큐는 저 위의 3가지 밖에 동작을 할 수 없다. 따라서, 무조건 첫 번째 원소만 뽑을 수 있고, 뒤에서 뽑을 수 없음 (덱의 구조상 뒤에서 삭제도 가능한데 이것을 생각하면 안됨. 이게 어떻게 덱 문제인지..? --> 자세히 보니 큐 문제이긴 한데, 뒤에서 삽입이 가능해야 하니 덱을 사용해야 한다. 자체적으로 조건을 걸어줘서 풀어야 하는 듯.) 또한, 1번의 연산은 count를 하지 않고, 2번과 3번만 count해야 한다. 그러므로 뽑고자 하는 원소를 최소한의 연산으로 큐의 앞쪽에 위치시키도록 하면 된다. 풀이 1. 덱에 인덱스 번호를 저장해서 초기화 해야 한다. 왜냐하면, 덱에 .. 2023. 7. 14.
[c++] 백준 큐(10845) 문제 정수를 저장하는 큐를 구현한 다음, 입력으로 주어지는 명령을 처리하는 프로그램을 작성하시오. 명령은 총 여섯 가지이다. push X: 정수 X를 큐에 넣는 연산이다. pop: 큐에서 가장 앞에 있는 정수를 빼고, 그 수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다. size: 큐에 들어있는 정수의 개수를 출력한다. empty: 큐가 비어있으면 1, 아니면 0을 출력한다. front: 큐의 가장 앞에 있는 정수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다. back: 큐의 가장 뒤에 있는 정수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다. 입력 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 .. 2023. 7. 13.
[c++] 큐, STL<queue> First in First out 맨 먼저 입력 받은 값을 내보내게 됨. head는 배열의 첫번째를 가르키고, tail은 배열의 마지막 +1을 가르킴(입력을 받을 곳) push : 배열의 tail에 입력, tail++ pop : 배열의 head를 출력, head++ pop을 한다고 해서 공간이 없어지는게 아닌 그대로 남아 있는 형태이기 때문에, 고정된 배열의 공간에서 pop을 수행한 메모리는 사용하지 못하게 된다. 이를 보완하기 위해 원형 queue 등이 있음. 2023. 7. 13.
[c++] 스택 - 일반구현 vs STL<stack> First in Last out 구조. Last out 원소를 가르키는 pos 필요, pop시 pos-- 1. 일반구현 2. STL stack https://github.com/intlabSeJun/c-plus-coding-test/tree/master/5.%20%EC%8A%A4%ED%83%9D 2023. 7. 13.
[c++] iterator에 대해서 1) 컨테이너에 저장되어 있는 원소들을 참조할 때 사용 2) 추장적으로, 컨테이너의 모든 원소들을 볼 수 있는 포인터와 비슷한 객체, 여러 종류가 있음. 3) 반복자의 성질을 가지므로, 컨테이너와 안의 요소를 구별, 요소의 값 확인, 컨테이너 안에 있는 요소들 간의 이동할 수 있는 연산 제공 4) end() 함수는 끝이 아님, 맨 마지막 원소의 다음번 원소를 가르킴. 5) 반복자의 종류 - 입력 반복자(input iterator) : 읽기만 가능, 순방향 이동, 현 위치의 원소를 한 번만 읽을 수 있는 반복자 - 출력 반복자(output iteraotr) : 쓰기만 가능, 순방향 이동, 현 위치의 원소를 한 번만 쓸 수 있는 반복자 - 순방향 반복자(forward iterator) : 읽기/쓰기 모두 가.. 2023. 7. 13.
[c++] 백준 키로거(5397), 연결리스트, 반례모음 문제 https://www.acmicpc.net/problem/5397 문제 창영이는 강산이의 비밀번호를 훔치기 위해서 강산이가 사용하는 컴퓨터에 키로거를 설치했다. 며칠을 기다린 끝에 창영이는 강산이가 비밀번호 창에 입력하는 글자를 얻어냈다. 키로거는 사용자가 키보드를 누른 명령을 모두 기록한다. 따라서, 강산이가 비밀번호를 입력할 때, 화살표나 백스페이스를 입력해도 정확한 비밀번호를 알아낼 수 있다. 강산이가 비밀번호 창에서 입력한 키가 주어졌을 때, 강산이의 비밀번호를 알아내는 프로그램을 작성하시오. 강산이는 키보드로 입력한 키는 알파벳 대문자, 소문자, 숫자, 백스페이스, 화살표이다. 입력 첫째 줄에 테스트 케이스의 개수가 주어진다. 각 테스트 케이스는 한줄로 이루어져 있고, 강산이가 입력한 순서.. 2023. 7. 13.
[c++] STL <list> 정리 STL의 list는 양방향 연결리스트 구조이다. #include #include // list로 불러온다. #include using namespace std; // 여러가지 자료형 선언 가능 list L; list L_string; for (int i = 0; i < 10; i++) L.push_back(i); // 값들을 저장하면서 연결해줌. // insert + next 예제 L.insert(next(L.begin(),2), 3); // L.begin에서 2만큼 next한 지점에 3을 insert함. 오른쪽으로 한칸씩 밀려남 // erase + next L.erase(next(L.begin(), 2)); // L.begin의 2만큼 next한 지점의 값을 지운다. 왼쪽으로 한칸씩 밀려남 // siz.. 2023. 7. 13.
[c++] 백준 에디터(1406), 연결리스트 문제 https://www.acmicpc.net/problem/1406 한 줄로 된 간단한 에디터를 구현하려고 한다. 이 편집기는 영어 소문자만을 기록할 수 있는 편집기로, 최대 600,000글자까지 입력할 수 있다. 이 편집기에는 '커서'라는 것이 있는데, 커서는 문장의 맨 앞(첫 번째 문자의 왼쪽), 문장의 맨 뒤(마지막 문자의 오른쪽), 또는 문장 중간 임의의 곳(모든 연속된 두 문자 사이)에 위치할 수 있다. 즉 길이가 L인 문자열이 현재 편집기에 입력되어 있으면, 커서가 위치할 수 있는 곳은 L+1가지 경우가 있다. 이 편집기가 지원하는 명령어는 다음과 같다. L : 커서를 왼쪽으로 한 칸 옮김 (커서가 문장의 맨 앞이면 무시됨) D : 커서를 오른쪽으로 한 칸 옮김 (커서가 문장의 맨 뒤이면 .. 2023. 7. 13.
[c++] 백준 숫자의 개수(2577), 배열 문제 https://www.acmicpc.net/problem/2577 세 개의 자연수 A, B, C가 주어질 때 A × B × C를 계산한 결과에 0부터 9까지 각각의 숫자가 몇 번씩 쓰였는지를 구하는 프로그램을 작성하시오. 예를 들어 A = 150, B = 266, C = 427 이라면 A × B × C = 150 × 266 × 427 = 17037300 이 되고, 계산한 결과 17037300 에는 0이 3번, 1이 1번, 3이 2번, 7이 2번 쓰였다. 입력 첫째 줄에 A, 둘째 줄에 B, 셋째 줄에 C가 주어진다. A, B, C는 모두 100보다 크거나 같고, 1,000보다 작은 자연수이다. 출력 첫째 줄에는 A × B × C의 결과에 0 이 몇 번 쓰였는지 출력한다. 마찬가지로 둘째 줄부터 열 .. 2023. 7. 13.
728x90