본문 바로가기

C++34

[C++] 백준 2309번 일곱난장이 문제풀이 문제 링크 백준 2309번 일곱난장이 2309번: 일곱 난쟁이 아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다. www.acmicpc.net DP관련 문제인 줄 알았더니 알고보니 짐승공격 문제였다. ㅎㅎㅎ 항상 9개가 입력되고 7개의 답안이 출력된다는 점에 착안해서 9개 중에 골라낼 가짓수 2개를 모두 하나하나 대입하여 제외하고 나머지 7개의 합이 100이 되는지 판단하는 문제이다. vector와 sort함수를 이용하였다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 .. 2019. 2. 14.
[C++] 백준 1181번 단어정렬 문제풀이 문제 링크 백준 1181번 단어정렬 1181번: 단어 정렬 첫째 줄에 단어의 개수 N이 주어진다. (1≤N≤20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다. www.acmicpc.net 간단한 심화 정렬 문제이다. string으로 단어를 받고 sort 함수를 이용해 정렬을 하는데 compare 함수를 따로 길이순으로 반환을 한 후에 길이가 같다면 알바벳순으로 오름자순 정렬을 하는 형식이다. string size 함수를 이용해 길이를 파악하고 길이가 같다면 단순 비교를 통해 함수를 만들었다. 정렬을 공부하는 사람이라면 도움이 많이 될 것이다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 .. 2019. 1. 24.
[C++] 코드그라운드 버스타기 문제풀이 버스타기 N 명의 바둑 선수들이 몇 대의 버스에 나누어 타려고 한다. 선수들은 1부터 N까지 번호가 붙어 있다. 각 선수는 실력 값을 가지고 있다. 선수 i번의 실력 값을 Ai라고 하자. 선수들 간의 경쟁심 때문에 두 선수의 실력 차이가 K이하인 경우는 같은 버스에 타지 않는다고 한다. 즉, 두 선수 i번과 j번의 (i≠j) 실력이 |Ai−Aj|≤K를 만족하는 경우 같은 버스에 타지 않는 것이다. 한 대의 버스에 탈 수 있는 인원은 무제한이라고 한다. 철수는 선수들의 실력을 입력으로 받아서 필요한 버스 수의 최소값을 계산하려고 한다. 여러 선수들이 서로 같은 버스를 타지 않는 관계가 매우 복잡해 보이지만, 철수는 아주 간단한 계산 방법이 있다는 것을 알게 되었다. 철수를 도와서 버스 수의 최소값을 계산하.. 2019. 1. 10.
[Error, VS] "const char *" 형식의 값을 사용하여 "char *" 형식의 엔터티를 초기화할 수 없습니다. 1 char* window_name = "Threshold Demo"; cs 위와 같은 코드가 비주얼 스튜디오 2015에서는 잘 되는데 2017부터는 오류가 발생한다. 해결책은 1. 아래와 같이 const를 붙이거나 1 const char* window_name="Threshold Demo"; cs 2. 프로젝트 > 속성 > C/C++ > 언어 > 준수모드 > 아니오 로 변경해주는 방법이다. 좀 구체적으로 이유를 찾아보니 비주얼 스튜디오에는 속성에 준수모드라는게 있는데 이게 2017부터 기본적으로 "예(/permissive-)" 상태로 설정되어 있기 때문이다. 위의 준수모드를 아니오로 바꾸고 적용해주면 문제없이 실행된다. 2018. 12. 28.
[C++] STL : Standard Template Library 6 - 해시 맵_Hash Map About STL을 보시는 분은 대부분 아직 STL을 잘 모르는 분들이라고 생각합니다. 제가 일하고 있는 게임업계는 주력 언어가 C++입니다. 그래서 취업 사이트에 올라온 프로그래머 채용 공고를 보면 필수 조건에 거의 대부분이 C++와 STL 사용 가능이 들어가 있습니다. 게임 업계뿐 아니라 C++을 사용하여 프로그래밍하는 곳이라면 대부분 C++과 STL을 사용하여 프로그램을 만들 수 있는 실력을 필요로 합니다. C++ 언어를 배우고 사용하는 프로그래머라면 STL을 배우면 좋고, 특히 게임 프로그래머가 되실 분들은 STL을 꼭 사용할 줄 알아야 됩니다. 작년 여름부터 About STL을 쓰기 시작하여 지금은 2009년이 되었습니다. About STL 집필 계획으로는 이제 반 정도 도달한 것 같습니다. 앞.. 2018. 9. 30.
[C++] 프로그래머스 가운데 글자 가져오기 문제풀이 가운데 글자 가져오기 문제 설명 단어 s의 가운데 글자를 반환하는 함수, solution을 만들어 보세요. 단어의 길이가 짝수라면 가운데 두글자를 반환하면 됩니다. 제한사항 s는 길이가 1 이상, 100이하인 스트링입니다. 입출력 예 s return abcde c qwer we 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 #include #include using namespace std; string solution(string s) { string answer = ""; string a=s; if(s.length()%2==0){ answer.push_back(a[s.length()/2-1]); answer.push_back(a[s.length()/2]); } else answ.. 2018. 9. 2.
[C++] 입출력 속도 가속시키기 백준 2741번 N찍기 풀이 std::ios_base::sync_with_stdio(0) 알고리즘을 공부하다 사람들이 std::ios_base::sync_with_stdio(0);를 간간히 사용하는 것을 보았다. 왜 그런지 궁금하여 찾아보니 C++에서 흔하게 사용되는 입력 방법은 cin인데 이 cin이 다른 입력방법 (scanf, get)에 비해 상대적으로 느리다는 것이다. 알고스팟에 올라온 자료를 첨부한다. 출처 : https://algospot.com/forum/read/2496/ 위의 자료에 따르면 std::cin은 scanf보다 거의 3배가까이 느린것으로 나온다. 이유는 cpp의 iostream의 buffer와 c의 stdio buffer와 동기화 시켜주므로 2개의 버퍼사용으로 속도가 저하된다는 것이다. 하지만 std::ios_base::sync_with_stdio(false);를 사.. 2018. 8. 6.
Microsoft Visual C++ 프로그래밍 자료형 총정리 자료형크기범위비고char signed char1바이트, 8비트-128~127 unsigned char1바이트, 8비트0~255 short short int2바이트, 16비트-32,768~32,767int 생략 가능unsigned short unsigned short int2바이트, 16비트0~65,535int 생략 가능int signed int4바이트, 32비트-2,147,483,648~ 2,147,483,647 unsigned unsigned int4바이트, 32비트0~4,294,967,295int 생략 가능long long int signed long signed long int4바이트, 32비트-2,147,483,648~ 2,147,483,647int 생략 가능unsigned long unsigne.. 2018. 7. 23.
비주얼 스튜디오 콘솔창 유지 비주얼 스튜디오에서 Visual C++ 빈프로젝트를 생성하고 코드를 작성하여 실행하였으나 콘솔창이 유지되지 못하고 바로 종료되는 현상 다들 한번씩 경험해 보셨을 껍니다. 제가 그래서 아주 간단한 근본적인 해결책을 들고 왓습니다!! 이방법은 비주얼 2017뿐만 아니라 이전버전에서도 적용이 가능합니다 1. 우선 보통 우측에 나타나있는 솔루션 탐색기에서 project탭에 커서를 놓고 마우스 왼쪽을 클릭한 후 속성을 클릭합니다. 2. 구성속성 > 링커 > 시스템 > 하위시스템 탭에서 콘솔을 클릭합니다. 적용버튼을 누르고 확인하면 다시 ctrl+alt키를 눌렀을 때 정상적으로 실행되는 것을 볼 수 있습니다~ 2018. 7. 20.
[C++] 2차원 배열 동적할당 2차원 배열을 동적할당은 바로 못한다고 한다 그래서 2차원 배열 동적 할장 방법에 대해 찾아보았다. 안녕하세요. C++ 에서 2차원 배열을 동적으로 할당하고, 해제하는 방법입니다. 아래 코드에서는 string.h 를 inclue 하는데요, 메모리 관련 함수이면서 string.h 에 포함된 점이 특이합니다. memory.h 를 사용해도 된다지만 string.h 가 표준이라고 합니다. StakOverflow : How do I declare a 2d array in C++ using new? 링크의 답변 중에는 2차원 배열을 하나의 memory block 에 할당하는 방법(포인터들의 크기만큼 메모리 절약)에 대한 답변과, new - delete 보다는 std::vector 를 사용하라는 답변도 있습니다. #.. 2018. 7. 4.