728x90
728x90

cpp 4

백준] 입력의 테스트 케이스가 존재하지 않는 경우

대부분의 문제는 테스트 케이스를 입력 받고 그 케이스에 따른 입력값을 받거나,테스트 케이스의 수를 제한하지 않는다고 하더라도 종료를 뜻하는 입력 값을 받는 경우가 대부분이다.그러다 간혹 테스트 케이스의 입력도 없고, 종료 조건도 명시되어 있지 않은 문제들이 있는데EOF의 개념이 없는 사람들은 간단한 문제(심지어 a+b)임에도 풀지 못하는 경우가 있다. 아래 문제는 테스트 케이스 개수나, 프로그램을 종료하는 특별한 입력값을 요구하지 않는다.EOF를 입력받을 때 프로그램을 종료하는데, C와 C++에서 이 EOF는 아래와 같이 처리할 수 있다. https://www.acmicpc.net/problem/10951 while(cin>>a>>b) while(scanf("%d %d",&a,&b)!=EOF)

C, C++] 헤더파일과, CPP파일로 소스 코드 분리

대학교 학부과정에서 C, C++을 배우는 상황에서는 소스코드를 헤더파일과 CPP(혹은 C, 여기서는 CPP파일로 통칭하겠다.)파일로 분할해서 활용하는 일이 거의 없다. 컴퓨터 사고를 키우는 것과 프로그래밍의 기초에 집중하는 부분도 고려하기 때문인 것도 있지만, 기본적으로 코드를 분할해서 관리할 정도로 코드가 길거나, 재사용할 일이 없기 때문인 것이 가장 크다고 생각한다. 이 글을 쓰면서 헤더파일과 CPP파일 분리를 논하고 있는 본인조차도 학부시절 자료구조 강의를 들을 때가 되어서(아마 연결리스트를 응용하는 함수였던 걸로 기억한다.) 자주 접한 편이었다. 그렇게 강제하거나 따로 배운 건 아니고, 손 하나 대지도 않을 코드를 복사 붙여넣기 해서 괜히 스크롤을 내려야 하는 번거로움에 대한 반항심과 다른 학생들..

C++] vector를 구조체 내 변수 기준으로 정렬하기

C++로 알고리즘 문제를 풀거나 이런 저런 이유로 코딩을 하다 보면 vector를 사용하게 되고 이 vector 내에 들어가는 값들을 정렬하기 위해서 직접 정렬을 구현해주는 방법도 있지만 좀 더 최적화되어 빠른 속도로 정렬을 수행해주는 sort함수를 사용하게 된다. 요소의 상대적 위치가 바뀌지 않는 걸 원한다면, stable_sort를 사용하면 된다. 통상적으로 자료형이 하나(예를 들어 int 하나)만 들어가는 vector라면, 시작점과 끝만 정해주면 알아서 오름차순 정렬을 수행해버리기 때문에 문제가 되지 않지만, vector 배열에 들어가는 정보가 여러 가지 자료형이 섞여 있는 구조체이고 그 구조체 안의 변수를 기준으로 정렬을 수행해야 한다면, 갑자기 머리가 아파온다. 대부분 레퍼런스를 참고하지 않거나..

C++] Vector를 이용한 이중 배열

C++] Vector를 이용한 이중 배열 동적 할당에 대해서 익숙해지면배열을 정적으로 할당하는 경우가 줄어들게 되고거의 대부분 동적으로 할당하게 된다.그렇지 않은 사람들도 있겠지만,나는 변수 사이즈에 따라 배열 크기가 바뀌는 경우 반드시 동적할당을 통해서배열의 크기를 결정 짓는다. 그러다가 STL의 vector라는 걸 알게 되면,동적 할당도 잘 사용하지 않게 된다.구조체가 필요하고 안에 들어가는 변수 관리가 까다로운 경우가 아니면,거의 대부분의 경우 vector를 사용하게 된다.물론, vector에 임의의 구조체를 넣지 못하는 건 아니고그건 순전히 사용하는 나의 숙련도 문제에서 기인한 것이라고 생각된다. Topcoder나 비정기적 혹은 정기적으로 개최되는 코딩 대회에 참가하거나,그곳에서 나온 문제들을 풀..

728x90