Language/C
[C언어 기초 정리] #4 조건문
해당 게시물은 2020년 1학기 교내에서 진행한 튜터링 활동 '같이피움' 에 튜터로 활동하며 쓰였던 자료를 정리한 것 입니다. 이곳에 적은 글들은 전부 튜티에게 설명해주기 위해 정리한 내용으로 틀리거나 부족한 내용이 있을 수 있습니다. 그러므로 지적/수정 댓글은 언제나 환영입니다 :) 지금까지 우리는 C언어가 절차 지향 프로그래밍 언어라는 것과 입출력, 변수와 연산자를 사용해서 여러가지 연산이 가능하다는 것을 배웠다. 이제 첫 발걸음을 떼었으니 프로그래밍 기초의 꽃인 '조건문'과 '반복문'을 배워보자. 프로그래밍을 하다보면 개발자가 의도한대로 실행의 흐름을 바꿔주어야 하는 경우가 무척 많다. 예를 들어, 사용자의 입력을 무한히 받을 수 있고, 1이라고 입력했을 때만 프로그램을 끝내게 하는 코드를 짜보..
[C언어 기초 정리] #3 연산자
해당 게시물은 2020년 1학기 교내에서 진행한 튜터링 활동 '같이피움' 에 튜터로 활동하며 쓰였던 자료를 정리한 것 입니다. 이곳에 적은 글들은 전부 튜티에게 설명해주기 위해 정리한 내용으로 틀리거나 부족한 내용이 있을 수 있습니다. 그러므로 지적/수정 댓글은 언제나 환영입니다 :) 1. 연산자 프로그래밍에서는 다양한 산술과 논리 연산이 가능하다. 놀랍게도 우리는 연산자 라는 개념을 배우기 이전부터 사용을 해 왔는데 바로 '=' 이것이다. 우리는 이것을 '대입 연산자' 라고 부른다. - 대입 연산자 C언어에서 '='는 같다는 의미가 아니라, 오른쪽 것을 왼쪽에 대입한다는 의미로 쓰인다. int a = 1; // a라는 정수형 변수에 1을 대입한다. y = x = 1; // x에 1값을 대입하고, y..
[C언어 기초 정리] #2 변수와 자료형
이 카테고리는 2020년 1학기 교내에서 진행한 튜터링 활동에 쓰였던 자료를 기반으로 C언어 프로그래밍에 관한 내용을 정리한 것이다. 이곳에 적은 글들은 전부 내가 배운 것을 튜티에게 설명해주기 위해 정리한 내용으로 틀리거나 부족한 내용이 있을 수 있다. 그러므로 지적/수정은 언제나 환영이다 :) 1. 변수(Variable) 변수란 바뀔 수 있는 값에 이름을 붙이는 것이다. 특정 수나 문자가 나의 코드에서 계속해서 쓰이게 된다면 우리는 그 숫자를 변수로 지정해 사용할 수 있다. 예를 들어 사용자가 입력한 숫자에 내가 1이라는 숫자를 더해주는 작업을 해주어야 할 때 1을 변수로 지정해 사용할 수 있다. int one = 1; //one 이라는 변수에 1을 저장한다 // 이 one 은 이후 코드에서는 1..
[C언어] gets, puts 문자열 입출력 함수
gets 함수 : 표준 입력(stdin)에서 입력받은 문자열을 사용자가 전달한 메모리에 C언어 스타일 문자열인 char*, char[] 타입으로 저장해 주는 함수 #include // 표준 입력 함수 //함수 원형 char* gets(char* str); 들어온 문자열 끝에 '\0'을 붙여줌 //gets 예시 char str[100]; gets(str); //사용자의 입력을 str에 저장 printf("%s", str); // 끝에 \n가 붙기 때문에 자동으로 줄바꿈 * 최신 visual studio에서는 버퍼 오버플로우가 날 수 있기 때문에 get_s 사용하기를 권장한다. puts 함수 : C언어 스타일의 문자열을 표준 출력(stdout)으로 보내는 함수 #include //헤더 파일 int puts(..
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
LIS : 어떠한 수열에서 오름차순으로 증가하는 가장 긴 부분 수열. 부분수열의 각 수는 서로 연속할 필요는 없다 LIS 길이 구하기 : 가장 단순한 방법은 완전 탐색을 하는 것이다. 수열의 개수가 K개 -> 1개 이상의 원소를 갖는 부분 수열의 가짓수는 2^K 즉, 모든 부분 수열을 확인해 오름차순으로 정렬되어 있는지 확인하는 것은 매우 비효율적이다. 이를 개선하기 위해 다이나믹 프로그래밍으로 구현 가능하다. #1 DP(Dynamic Programming) 시간 복잡도 : O(n^2) 수열의 한 원소(k)에 대해, 그 원소에서 끝내는 최장 증가 수열 길이를 저장한다. => k를 제외한 모든 원소는 k보다 작아야 한다. 따라서 k의 앞 순서에 있는 모든 원소들 중 값이 k보다 작은 원소에 대해, 그 각각..