Language
![[JAVA] 입출력 함수 BufferedReader / BufferedWriter](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbqG111%2Fbtrruz2Lilu%2FI3OeZtfNrUL7s1TbAz8f40%2Fimg.jpg)
[JAVA] 입출력 함수 BufferedReader / BufferedWriter
BufferedReader / BufferedWriter는 버퍼를 이용해 사용자의 입력을 읽고 쓰는 함수이다. 버퍼를 사용하기 때문에 이 함수를 이용하면 입출력의 효율이 비교할 수 없을 정도로 좋아진다. ? Scanner 와 BufferedReader 의 차이 Scanner는 스페이스와 개행문자를 경계로 입력 값을 인식하기 때문에 가공할 필요가 없어 편리하지만 속도가 느리다. 특히 BOJ와 같은 알고리즘 문제를 풀 때 시간 초과 에러를 많이 보인다. 반대로 BufferedReader 는 개행문자만 경계로 인식하고 받은 데이터가 String으로 고정되기 때문에 데이터를 따로 가공해야 해서 번거롭지만 버퍼를 사용하기에 입력 속도에서 확연한 차이를 보인다. '버퍼를 거쳐가는데 왜 더 빠른거지 더 느려야 정상 ..

C언어 스택(stack)
✔️Stack 이란? 먼저 들어간 자료가 나중에 나오는 자료구조. 후입선출 FILO(First In Last Out) ❓ Restricted structure 특정 위치에서만 원소를 넣거나 뺄 수 있는 제한이 걸려있는 자료구조 ex) 스택, 큐, 덱 ... ✔️원소의 삽입, 제거, 확인 시간복잡도 O(1) 원소의 확인은 원칙적으로 상단만 가능하다. 상단이 아닌 나머지 원소들의 확인, 변경이 불가하다. 추가, 제거, 상단 원소 확인 외에는 스택이 제공하는 기능이 아니다. [코드] // BOJ_10828 #include #define SIZE 10000 int arr[SIZE]; int top = 0; int push(int x) { if (top >= SIZE) return 0; arr[top++] = x..
![[C언어] LIS (Longest Increasing Subsequence) 최장 증가 수열 DP/binary search](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbkHZf0%2FbtrrunuJcT1%2F67WHteAEKNo8lJw0N7KHrK%2Fimg.jpg)
[C언어] LIS (Longest Increasing Subsequence) 최장 증가 수열 DP/binary search
LIS : 어떠한 수열에서 오름차순으로 증가하는 가장 긴 부분 수열. 부분수열의 각 수는 서로 연속할 필요는 없다 LIS 길이 구하기 : 가장 단순한 방법은 완전 탐색을 하는 것이다. 수열의 개수가 K개 -> 1개 이상의 원소를 갖는 부분 수열의 가짓수는 2^K 즉, 모든 부분 수열을 확인해 오름차순으로 정렬되어 있는지 확인하는 것은 매우 비효율적이다. 이를 개선하기 위해 다이나믹 프로그래밍으로 구현 가능하다. #1 DP(Dynamic Programming) 시간 복잡도 : O(n^2) 수열의 한 원소(k)에 대해, 그 원소에서 끝내는 최장 증가 수열 길이를 저장한다. => k를 제외한 모든 원소는 k보다 작아야 한다. 따라서 k의 앞 순서에 있는 모든 원소들 중 값이 k보다 작은 원소에 대해, 그 각각..

C언어 max/min 사용하기
C 언어의 기본 라이브러리에는 최소와 최대를 구하는 min, max 함수가 없다. #define MIN(X,Y) ((X) (Y) ? (X) : (Y)) 선언해놓고 사용하자.
![[C언어 기초 정리] #1 절차 지향 프로그래밍 C언어](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdeGdih%2Fbtrrwf4gPz0%2FW00exP4Upkls8CnWfAnOmK%2Fimg.jpg)
[C언어 기초 정리] #1 절차 지향 프로그래밍 C언어
이 카테고리는 2020년 1학기 교내에서 진행한 튜터링 활동에 쓰였던 자료를 기반으로 C언어 프로그래밍에 관한 내용을 정리한 것이다. 이곳에 적은 글들은 전부 내가 배운 것을 튜티에게 설명해주기 위해 정리한 내용으로 틀리거나 부족한 내용이 있을 수 있다. 그러므로 지적/수정은 언제나 환영이다 :) 1. 프로그래밍 언어의 시작 Hello, World! 를 출력해보자. 보통 프로그래밍 언어를 처음 시작한다면 국룰은 헬로월드이다 #include int main(void) { printf(“Hello, World!”); //Hello, World가 출력된다!! } //뒤에 표시된 문장들은 주석 이라고 표현한다. 주석은 실제 프로그래밍에 영향을 주지 않는 개발자의 메모이다. 2. 하나하나 뜯어보자 #inclu..