컴퓨터 공학/C++
-
endl과 \n 차이컴퓨터 공학/C++ 2023. 4. 3. 23:47
백준 7785번을 풀다가 화가 머리 끝까지 났다. 분명 답은 맞는데 시간 초과가 뜨는 것. 그런데 구글링을 한 결과 심지어 코드가 거의 흡사한데도 내 것만 시간 초과가 떴다. 약 20분 가량 코드를 브루트 포스 마냥 한 부분씩 수정하면서 뭐가 차이인지 실험해봤다 ㅋㅋㅋㅋㅋ 결국 얻은 해답은 endl과 "\n"의 차이였다. endl은 버퍼에 저장 했다가 출력할 때 한꺼번에 쏟는 방식이라 더 느리다는 것이다 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 진짜 개어이없음.. 이거 하나로 속도 차이가 이렇게 난다는 것도 신기하기도 하고.. 아무튼 다시는 이런 실수 하지말자는 취지에서 글을 썼다.
-
string컴퓨터 공학/C++ 2023. 3. 31. 00:16
https://www.acmicpc.net/problem/11005 11005번: 진법 변환 2 10진법 수 N이 주어진다. 이 수를 B진법으로 바꿔 출력하는 프로그램을 작성하시오. 10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 www.acmicpc.net 백준 11005번을 푸는데, char 배열의 한계를 느꼈다. 처음에 배열을 생성하고 문제를 풀려 했는데 당최 배열의 끝을 얼마로 지정해야 하는지 모르겠는 것이었다. 또, 얼마를 할당해야 하는지를 알 수는 있으나 그걸 알기 위해 반복문을 하나 더 써야해 비효율적이라는 생각이 들었다. 그래서 자동으로 동적할당을 해주는 문자열이 뭐가 있을까 찾아보니 C++에는 string이 있었다. 거의 써본 적..
-
binary_search()컴퓨터 공학/C++ 2023. 3. 29. 12:59
C++ 헤더에 binary_search()라는 함수가 정의되어 있다. 이름만 봐도 딱 이진탐색임을 알 수 있을 것이다. 이런 함수가 존재하는지 방금 처음 알았는데, 자세히 뜯어보기로 했다. https://cplusplus.com/reference/algorithm/binary_search/ https://cplusplus.com/reference/algorithm/binary_search/ function template std::binary_search default (1)template bool binary_search (ForwardIterator first, ForwardIterator last, const T& val);custom (2)template bool binary_search (For..
-
배열의 동적 할당컴퓨터 공학/C++ 2023. 3. 22. 19:53
백준 9063번을 풀던 중 TC가 뭔가 하나 틀리는 게 있는데 찾질 못하겠어서 다른 사람의 풀이를 봤는데.. 생각지 못한 수확이 있었다. 못보던 C++ 스타일의 배열의 동적할당이 있었던 것이다. 지금까지 당연히 malloc으로만 가능한 줄 알았고 그렇게만 사용해왔는데 너무 충격적이었고 당연히 C++에서는 더 편리한 동적할당이 있을 거라고 생각지 못한 내 자신에게 더 충격을 받았다. 그래서 메모도 하고 복습도 할 겸 포스팅을 하려 한다. C 스타일의 배열의 동적할당 malloc()이라는 라이브러리 내에 있는 정의된 함수를 이용한다. e.g) int *arr = (int*)malloc(sizeof(int) * (할당하고싶은 크기)); 근데 이녀석은 할당을 해주었기 때문에 제거해주지 않는 이상 계속 남아있어 ..
-
배열의 길이컴퓨터 공학/C++ 2023. 3. 10. 15:22
오늘도 어제와 같이 단계 별로 풀어보기에 새로 등록된 2743번 문제를 풀던 중 갑자기 궁금한 것이 생겨 정리해보려 한다. https://www.acmicpc.net/problem/2743 2743번: 단어 길이 재기 알파벳으로만 이루어진 단어를 입력받아, 그 길이를 출력하는 프로그램을 작성하시오. www.acmicpc.net 일단 문제 자체는 단순히 배열의 길이를 구하는 문제이다. 우선 입력할 수 있는 단어의 총 길이는 최대 100까지길래 아래와 같이 처음부터 배열을 선언해주었다. char S[101] = { 0 }; char형 배열의 마지막은 무조건 NULL이 들어가기에 101로 선언. 사실 동적할당을 쓰면 이래저래 더 깔끔한 코드가 되겠으나 문제 풀이할 때는 쓰지 않는다. 이전 포스팅에서 말했듯이 ..
-
reverse()컴퓨터 공학/C++ 2023. 3. 9. 21:04
졸업 후 급하게 방을 빼고 올라와서 또 급하게 정보처리기사를 준비하느라 최근 백준에 손을 대지 않았다. 3월 7일에 필기 시험이 끝나 새로운 계획을 짜고 어제부로 다시 문제를 풀기 시작했다. 오랜만에 들어가니 단계별로 풀어보기란에 새로운 문제들이 추가가 된 모습을 볼 수 있었다. 난이도는 낮지만 감도 찾을 겸 첫 단계에 추가된 문제부터 쭉 풀어보기로 했다. 오늘 10811번을 풀고 이건 글로 남겨보는 것도 나쁘지 않을 것 같아 정리해보려 한다. 일단 배열 뒤집기 문제인데, 나는 뇌가 C에 절여 있어 웬만한 알고리즘은 만들어 쓰는 것을 선호했었다. 이전에 코딩테스트를 보던 중 정렬 문제가 나왔는데 처음에 선택정렬로 해결하니 시간 초과가 떠서 어느 TC는 맞고 어느 TC는 틀리는 현상이 발생했다. 그래서 항..