백준에서 간단한 문제를 풀던 중 C++로 알고리즘을 해결할 때 알아두면 유용한 정보를 찾아 기록해놓기로 했다. 4458번: 첫 글자를 대문자로 첫째 줄에 줄의 수 N이 주어진다. 다음 N개의 줄에는 문장이 주어진다. 각 문장에 들어있는 글자의 수는 30을 넘지 않는다. 모든 줄의 첫 번째 글자는 알파벳이다. www.acmicpc.net getline() 입력받기 C++에서 스트링을 입력받을 땐 std::cin을 이용해 입력받는다. 하지만 입력받는 스트링이 공백을 포함할 때, 예를 들어 "Hello World C++"라는 스트링을 하나의 변수에 저장하기 위해선 getline()을 이용해 입력받아야한다. string s; getline(cin, s); 하지만 getline이 호출되기 전 받는입력이 있다면, ..
알고리즘 대회나 코딩테스트에서 요소를 오름차순, 혹은 내림차순으로 정렬해야하는 상황이 자주 주어진다. 직접 정렬을 구현할 수 있다면 문제되지않으나 문제를 풀 때마다 구현하기가 쉽지않으며, 시간도 많이 소요된다. 다행히 C++ 에선 퀵 정렬을 기반으로한 sort함수를 제공한다. 기본적으로 퀵 정렬은 worst case 에서 N^2 의 시간복잡도를 가지기 때문에 항상 사용하기에 무리가 있지만, sort함수는 퀵 정렬 + 힙 정렬 + 삽입 정렬을 섞은 intro sort방식으로 구현되어 worst case 에서도 nlogn의 복잡도를 가진다. 배열과 벡터에서 sort를 사용하는 방법은 다음과 같다 오름차순 #include int arr[10] = {5, 2, 10, 9, 1, 3, 4, 8, 7, 6}; so..
#include 동적 배열을 더 편리하게 사용할 수 있게 해주는 대체제이다. 가장 큰 차이점은 1. 크기를 별도로 선언할 필요가 없으며 크기 변경이 용이하다. 2. 스코프를 벗어나면 자동으로 메모리를 해제해준다. (delete[] array 를 자동으로 수행) vector에서 자주 사용되는 멤버 함수 v.push_back() vector의 맨 끝에 원소 추가 v.pop_back() vector의 맨 끝 원소 제거 v.at(0) n 번째 원소를 참조, 범위 체크를 하므로 v[0]보다 느림 v.front() 첫 번째 원소를 참조해 리턴 v.back() 마지막 원소를 참조해 리턴 v.size() vector에 있는 원소 개수를 리턴 v.capacity() vector에 할당된 메모리 크기 리턴 v.clear(..
알고리즘을 풀다보면 입력 혹은 출력 횟수를 압도적으로 많이 요구하는 경우가 있다. 이럴 때 C++ 의 입출력 속도를 높이는 방법이 있다. ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 이 구문을 추가하면 cin, cout 속도가 상승한다. printf와 cout은 큰 차이가 나지않지만 입력의 경우 속도가 약 3~4배까지 빨라진다고한다. 이제 코드를 하나씩 살펴보자 1. C언어와 stream synchronization 끊기 ios::sync_with_stdio(false); iostream을 사용하면서 printf나 scanf또한 사용할 수 있는 이유는 c와 c++ 표준입출력이 동기화 되어있기 때문이다. 위의 구문으로 버퍼를 분리시켜 동기화를 ..
- Total
- Today
- Yesterday
- 스프링
- 개발용어
- 데이터베이스
- CS
- C
- SQL
- 스프링부트
- 국비교육
- Java
- 인턴
- 이클립스
- 부트스트랩
- JSP
- HeidiSQL
- 오류
- Thymeleaf
- C++
- Open API
- CSS
- 환경설정
- 오라클
- 프로그래머스
- 네트워크
- svn
- 백준
- 넥사크로
- JVM
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |