분류 전체보기(394)
-
sort () 함수
1. sort() 함수는 C++ STL에서 제공하는 함수로써 이 함수의 시간 복잡도는 nlogn입니다. 이 함수는 intro sort라는 정렬 방식을 바탕으로 구현되어 있다. 이 방식은 quick sort를 기반으로 heap sort와 insertion sort를 섞은 방식으로 최악의 경우 n^2의 시간 복잡도를 가지는 quick sort와는 달리, 최악의 경우에도 nlogn을 보장하는 정렬 알고리즘입니다. 2. 사용법은 헤더를 include한 뒤 sort(begin,end) 이렇게 사용하면 오름차순으로 정렬됩니다. 정렬 방식이 sort(begin,end)이지만 범위가 begin
2022.12.26 -
5597번- 과제 안낸 놈 잡기
과제를 낸 출석번호를 입력받아서 과제 안낸 출석번호 찾기 -->배열의 인덱스를 출석번호로 활용 낸 출석번호를 그에 맞는 인덱스안에 저장(1번 학생은 1번 인덱스에, 25번 학생은 25번 인덱스에) 결국 배열의 인덱스 중 처음에 초기화했을 때 값이 그대로 보관된 인덱스가 과제 안낸 출석번호 * 배열의 모든 인덱스를 하나의 값으로 초기화하기 int arr[31]={0}; 이 방법은 0으로 초기화 할때만 가능하다. 다른 값으로 초기화하고 싶다면 for문을 통해 초기화하자 int arr[20]={10}; 이렇게 하면 첫번째 원소의 값만 10으로 초기화 되고 나머지는 0으로 초기화된다.
2022.12.23 -
2562번 최댓값 구하기
#include #include using namespace std; int main() { int arr[9]; for (int i = 0; i >arr[i]; } int max = arr[0]; int index=0; for (int i = 0; i < 9; i++) { if (max < arr[i]) { max = arr[i]; index = i+1; } } cout
2022.12.23 -
입력에서 더이상의 읽을 수 있는 데이터가 존재하지 않을 때 반복문을 종료하기
아무것도 입력을 안하고 엔터를 치면 되지 않을까? 라고 생각해 개행문자를 활용하여 반복문을 짜봤다. 하지만 "\n" 도 개행문자로 읽을 수 있는 데이터이다. -->이걸로 반복문을 종료할 수 없다. 우리는 EOF를 활용하면 된다. EOF는 더 이상 읽을 수 있는 데이터가 없다(입력 끝)라는 것을 알려준다. 콘솔에서 윈도우의 경우 CTRL + Z를 입력해주면 되며 리눅스(유닉스) 계열은 CTRL + D를 눌러주면 된다. 1. scanf로 while(scanf("%d",&a)!=-1){ printf("%d\n", a); } 더 이상 읽을 수 없다는 EOF에 도달하면 -1을 반환한다. 또는 while(scanf("%d",&a)==1){ printf("%d\n", a); } 지정한 포맷("%d")에 따른 변수가 ..
2022.12.20 -
반복문으로 별찍기
어렵게 생각했는데 생각보다 쉬운 문제였다. #include int main() { int N; scanf("%d", &N); for (int i = 0; i < N; i++) { for (int j = 0; j
2022.12.20 -
입출력 속도 향상
cin/cout을 사용하고자 한다면, cin.tie(NULL)과 sync_with_stdio(false)를 둘 다 적용해 주고, endl 대신 개행문자(\n)를 쓰자. 단, 이렇게 하면 더 이상 scanf/printf/puts/getchar/putchar 등 C의 입출력 방식을 사용하면 안 된다. scanf(), printf()를 사용하면 이 입출력 자체가 매우 빠른 편이라 쉽게 통과하지만, 다른 언어의 경우는 조금 사정이 다르다 1) ios-base::sync_with_stdio(false); C++와 C 표준 스트림의 동기화 해제 기본적으로 C++에서는 C++와 C의 표준 스트림이 동기화가 되어있다. 즉, C와 C++가 동일한 버퍼를 공유한다는 것 이러한 동기화는 성능을 저하시키는 원인이 되지만, 두..
2022.12.19