728x90
반응형

문제풀이(Problem Solving)/C++ 문제풀이에 유용한 것들 52

문자열 <- >정수 변환 string to int, int to string

string to int, int to string 을 include 해야 한다. stoi()의 예시다. // stoi example #include // std::cout #include // std::string, std::stoi int main () { std::string str_dec = "2001, A Space Odyssey"; std::string str_hex = "40c3"; std::string str_bin = "-10010110001"; std::string str_auto = "0x7f"; std::string::size_type sz; // alias of size_t int i_dec = std::stoi (str_dec,&sz); int i_hex = std::stoi (..

STL 벡터, vector 사용법 [C++]

메모리 heap에 생성되며 동적할당이 가능하여 동적 배열을 대체할 수 있는 std:: 를 알아보자 C++ STL 에서 컨테이너는 크게 두 가지 종류가 있다. 배열 처럼 객체들을 순차적으로 보관하는 시퀀스 컨테이너 (sequence container) 키를 바탕으로 대응되는 값을 찾아주는 연관 컨테이너 (associative container) 가 있다. 우리가 알아볼 벡터는 시퀀스 컨테이너다. 벡터에는 원소들이 메모리 상에서 실제로 순차적으로 저장되어 있고 따라서 임의의 위치에 있는 원소를 접근하는 것을 매우 빠르게 수행할 수 있다. 하지만 벡터가 만능인줄 알고 있는 사람들도 있지만 그렇지 않다. 맨 뒤에 원소를 추가하거나 제거하는 것은 빠르지만 임의의 위치에 원소를 추가하거나 제거하는 것은 O(n) 으..

Deque, 덱 , 자료구조 [CPP]

이번엔 자료구조에서 덱을 보겠다. 덱은 스택과 큐를 합친 구조라고 볼 수 있다. 삽입,삭제가 front, back에서 다 일어날 수 있다. C++에서 Stack,Queue는 덱에서 인터페이스를 제한해서 구현한 것이다. -> 즉, 덱에서 기능을 제한해서 구현했다는 뜻이다. ** 원칙적으로는 front와 back에서만 접근이 가능하지만 STL deque에서는 인덱스로 원소 접근이 가능하다. 덱의 특성 때문에 배열과 뭐가 다른가..? 생각이 들 때가 있다. 앞쪽과 뒤쪽의 추가와 제거가 모두 필요하면 deque를 사용 배열의 느낌으로 사용하려면, vector를 사용 거꾸로 말하면 Deque으로 Queue를 사용해야하는 문제나 Stack을 사용해야하는 문제를 풀 수 있다는 말도 된다. 생성자는 이렇다. deque..

Stack, 스택 , 자료구조 [CPP]

이번엔 스택을 알아보자 스택은 First In Last Out으로 삽입과 삭제 연산이 동일한 장소에서 일어나는 자료구조다. 역시 삽입, 삭제 연산에 있어서 상수 시간복잡도를 가진다. FILO구조는 다시 말하면 LIFO구조다. 마지막에 들어온 것이 먼저 나온다는 이야기다. 데이터를 역으로 추적할 때와 같은 상황에 사용한다. 연결리스트와 유사한 자료구조라고도 한다. (연결리스트로 스택 구현가능) 스택 같은 경우에는 중위-후위 변환 재귀함수와 같은 함수 호출 구현 **웹브라우저의 뒤로가기 (페이지기록) 문서 어플리케이션,에디터의 Ctrl + z , undo 기능등과 같은 곳에 쓰인다. 스택은 배열, 동적배열(Vector), 연결리스트로 구현이 가능하다. push(), pop()이 같은 장소에서 일어나고 que..

Queue, 큐 , 자료구조 [CPP]

자료구조의 큐에 대해서 알아보자 First In First Out의 구조를 가지고 있으며 방향성이 있는 자료구조이다. 삽입과 삭제 연산이 일어나는 곳이 다르다는 이야기다. -> 이 개념이 가장 중요하다. 이러한 일을 처리할 때 쓰는 것이다. 또한 삽입,삭제 연산에 있어서는 상수의 시간복잡도를 가진다. ** 주로 순차적으로 진행되어야 하는 일을 스케줄링할 때 사용된다. 주로 우리의 일상적으로 쓰는 곳에 있다. 줄을 서서 기다리는 모든 것들이 큐와 같다. ** 큐를 CPP에서 사용하기 위해서는 헤더를 사용해서 포함시켜야 한다. 큐를 선언할 때 원소가 될 자료형을 선언하며 크기는 선언하지 않았다. 하지만 enqueue와 dequeue를 사용하는 대신 push() 와 pop()를 사용하며 -> push는 bac..

2의 보수, 2's complement [C]

어떤 비트 연산보다도 2의 보수라는 것이 뭔지 몰라서 인터넷을 찾아보다가 기억을 하기 위해 따로 정리하기로 하였다. 통용적으로 사용되는 2의 보수와 C언어에서 통용되는 2의 보수가 약간 다르다. 우선 가장 큰 비트를 우리는 부호를 표현하는 비트로 놔두어 계산한다. 0이면 양수, 1이면 음수를 표현하게 한다. 0000 0000 .... 0000 1111 = 15 1000 0000 .... 0000 1111 = -15 하지만 이런식으로 표현해버리면 연산과정에서 오버헤드가 높게 발생하고 0을 가리키는 수가 2개가 되어버린다. 0, -0 차이가 없다. 0000 0000 .... 0000 0000 = 0 1000 0000 .... 0000 0000 = -0 때문에 컴퓨터에서 사용하는 2의 보수는 다르게 계산한다...

[C언어] 기본 함수, 메서드 만들기

https://www.hackerrank.com/challenges/functions-in-c/problem Functions in C | HackerRank Learn how to write functions in C++. Create a function to find the maximum of the four numbers. www.hackerrank.com Function in C 이걸 기반으로 설명한다. 답이야 간단하게 만들었다. a,b,c,d 를 비교하는 것이라 인수들은 다시 배열에 넣어서 for문을 돌려도 되지만 비교 개수가 작기에 4개만으로 충분했다. 물론 main 함수에서 선언할 수 있다. 그렇지만 main 전에 처리하기를 바라서 main 함수 밖에서 구현하고 메인 함수 전에 선언했다. 메..

[C++] 기본 입력과 출력

https://www.hackerrank.com/challenges/cpp-input-and-output/problem?h_r=next-challenge&h_v=zen Input and Output | HackerRank Learn to take in the input and print the output. Take three number as input and print their sum as output. www.hackerrank.com 이걸 기본으로 배워보자 C와 C++은 거의 같다고 볼 수 있는데 거의.. 같은거지 같지는 않다. 우선 답은 차례대로 알아보자 1. cin >> s >> n; cin 역시 c언어에서는 scanf와 같은 역할을 수행한다고 볼 수 있다. cin은 추출연산자로 >>연산자를..

[C언어] 숫자 입력, 출력하기

https://www.hackerrank.com/challenges/sum-numbers-c/problem Sum and Difference of Two Numbers | HackerRank Get started with data types. www.hackerrank.com 위의 문제에 기반해서 설명할 것이고 답부터 보여주자면 외부에서 input을 받을 때는 scanf()로 쓸 수 있는 것은 국룰이다. 그런데 이제 출력할 때 어떻게 하느냐가 좀 관건이다. int형은 그렇다 치자. 어떻게든 잘 된다. float은 부동 소수점이 포함된 자료형으로 4 라도 4.0000 요따구로 나오는데 %.숫자f로 숫자만큼의 소수점 자리를 자를 수 있다. 이것만 알고 가자 ㅎㅎ

728x90
반응형