반응형

전체 글 429

[C++] 백준 10988번 팰린드롬인지 확인하기

https://www.acmicpc.net/problem/10988 10988번: 팰린드롬인지 확인하기 첫째 줄에 단어가 주어진다. 단어의 길이는 1보다 크거나 같고, 100보다 작거나 같으며, 알파벳 소문자로만 이루어져 있다. www.acmicpc.net 풀이 #include #include using namespace std; int main() { string n; cin >> n; string m = n; char tmp; for (int i = 0; i < n.length() / 2; i++) { tmp = n[i]; n[i] = n[n.length() - 1 - i]; n[n.length() - 1 - i] = tmp; } if (m == n) { cout

[따배시 6.13] 포인터와 const

int* array1 = new int[length](0); 이렇게 되면 0으로 초기화가 됩니다. int* array1 = new int[length] {11, 22, 33, 44, 55, 66}; 위의 경우 11 22 33 44 55 66 까지 정상적으로 나오고 이후에는 쓰레기값으로 출력되게 됩니다. int value = 5; int* ptr = &value; *ptr = 6; 이럴경우 ptr을 6으로 바꿔지면서 value도 6으로 바뀌게 됩니다. 그런데 만약에 const int value를 하게 되면 포인터를 통해서 value를 읽으려면 point 또한 const를 붙여주셔야 합니다. int main() { const int value = 5; const int* ptr = &value; cout

[따배시 6.11] 메모리 동적할당 new와 delete

int array[1000000]; 정적에 할당하는 메모리는 stack에 들어갑니다. 이 stack에는 메모리가 작습니다. 동적으로 할당하는 메모리는 hip에 들어가며 이 hip에는 메모리가 큽니다. 이렇기 때문에 코딩을 할 때는 정적메모리를 잘 활용하셔야 합니다. 큰 메모리를 만들려면 동적 메모리와 친숙해지셔야 합니다. int *ptr = new int; os로부터 받아온 4byte의 메모리를 그대로 사용할 수 있는 것입니다. int* ptr = new int{ 7 }; cout

[따배시 6.10] C언어 스타일의 문자열 심볼릭 상수, 포인터 사용의 유의점

char* name = "Jack Jack"; 위 같은 경우는 불가능합니다. 왜냐하면 Jack Jack은 임시로 만들어진 literal일 뿐인데 여기에다 포인터를 집어넣을 수는 없는 것입니다. 포인터는 메모리의 주소를 가리킬 수 있는 것이기 때문에 Jack Jack이 담길 곳이 없기 때문에 그런 것입니다. 하지만 여기에다 const를 붙여주면 가능합니다. const char* name = "Jack Jack"; 이는 특별히 name을 const로 고정해두면서 가능하게 해주는 것입니다. const char* name = "Jack Jack"; const char* name2 = "Jack Jack"; cout

벡터의 순회

벡터의 모든 원소들을 순회할 때 인덱스를 사용하거나 Range for문을 사용할 수 있습니다. 하지만 이렇게 하기 어려운 경우들이 있습니다. vector v = { 3, 1, 8, 9, 12, 2 }; for (int i = 0; i < v.size(); i++) v.at(i); for (int k : v) for k; 맞는 코드는 아니지만 대충 느낌만 보여주고자 이렇게 썼습니다. 정통적인 for문을 사용해주거나 range for 함수를 사용해주시면 되는 것입니다. 이런 복잡한 상황에서는 iterator을 통해 vector을 순회하면 됩니다. 주어진 벡터에서 모든 홀수를 제거하고 모든 짝수에는 2를 곱하라 int main() { vector vec{ 10, 8, 1, 5, 4, 6, 11, 2 }; fo..

반응형