반응형

IT 프로그래밍 376

[C++] 백준 1157번 단어 공부

https://www.acmicpc.net/problem/1157 1157번: 단어 공부 알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다. www.acmicpc.net 코드(C++) #include using namespace std; int main() { string n; cin >> n; int num[26] = { 0, }; for (int i = 0; i < n.length(); i++) { n[i] = toupper(n[i]); num[n[i] - 65] += 1; } int max = 0; int result; for (int i = 0; i < 26; i++) { if (num[i..

[따배시 6.15 ~ 6.16] 참조, 포인터와 참조의 멤버 선택 연산자

#include using namespace std; int main() { int x = 5; int& ref_x = x; return 0; } 이게 참조해주는 간단한 식입니다. 여기서 만약 int& ref_x = 5; 이런 식으로 바꾸면 어떻게 될까요? 그럴 경우 오류가 나게 됩니다. 왜냐하면 5에는 주소가 따로 존재하기 않기 때문입니다. 하지만 const를 앞에 붙이면 가능합니다. const int를 붙이면 임시적으로 컴파일러가 주소를 만들어준다 이런 식으로 생각을 해주시면 됩니다. #include using namespace std; void doSomething(const int& x) { cout

[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

반응형