Language

    [JAVA] 입출력 함수 BufferedReader / BufferedWriter

    [JAVA] 입출력 함수 BufferedReader / BufferedWriter

    BufferedReader / BufferedWriter는 버퍼를 이용해 사용자의 입력을 읽고 쓰는 함수이다. 버퍼를 사용하기 때문에 이 함수를 이용하면 입출력의 효율이 비교할 수 없을 정도로 좋아진다. ? Scanner 와 BufferedReader 의 차이 Scanner는 스페이스와 개행문자를 경계로 입력 값을 인식하기 때문에 가공할 필요가 없어 편리하지만 속도가 느리다. 특히 BOJ와 같은 알고리즘 문제를 풀 때 시간 초과 에러를 많이 보인다. 반대로 BufferedReader 는 개행문자만 경계로 인식하고 받은 데이터가 String으로 고정되기 때문에 데이터를 따로 가공해야 해서 번거롭지만 버퍼를 사용하기에 입력 속도에서 확연한 차이를 보인다. '버퍼를 거쳐가는데 왜 더 빠른거지 더 느려야 정상 ..

    C언어 스택(stack)

    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

    [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언어 max/min 사용하기

    C 언어의 기본 라이브러리에는 최소와 최대를 구하는 min, max 함수가 없다. #define MIN(X,Y) ((X) (Y) ? (X) : (Y)) 선언해놓고 사용하자.

    [C언어 기초 정리] #1 절차 지향 프로그래밍 C언어

    [C언어 기초 정리] #1 절차 지향 프로그래밍 C언어

    이 카테고리는 2020년 1학기 교내에서 진행한 튜터링 활동에 쓰였던 자료를 기반으로 C언어 프로그래밍에 관한 내용을 정리한 것이다. ​ 이곳에 적은 글들은 전부 내가 배운 것을 튜티에게 설명해주기 위해 정리한 내용으로 틀리거나 부족한 내용이 있을 수 있다. 그러므로 지적/수정은 언제나 환영이다 :) 1. 프로그래밍 언어의 시작 Hello, World! 를 출력해보자. 보통 프로그래밍 언어를 처음 시작한다면 국룰은 헬로월드이다 #include int main(void) { printf(“Hello, World!”); //Hello, World가 출력된다!! } //뒤에 표시된 문장들은 주석 이라고 표현한다. 주석은 실제 프로그래밍에 영향을 주지 않는 개발자의 메모이다. 2. 하나하나 뜯어보자 #inclu..