본문 바로가기

C&C++

[C/C++] 이분탐색으로 LIS 구하는 방법 [C/C++] 이분탐색으로 LIS 구하는 방법 혼자서 이분탐색으로 LIS를 구하는 알고리즘을 구현하다가 막혀서 검색을 하게 되었다. LIS를 이분탐색으로 구하는 방법 LIS배열의 마지막 원소와 비교하였을 때, 1. 증가하는 부분 수열일 경우, LIS 배열의 가장 끝에 추가한다. 2. 증가하는 부분 수열이 아닐 경우, LIS배열을 이분 탐색하여 들어갈 위치를 찾아 값을 대체한다. LIS 배열의 마지막 원소가 있는 인덱스가 가장 긴 부분 증가 수열의 길이가 된다. 이분탐색을 이용한 LIS 코드 구현 방법 직접 이분탐색을 구현하는 방법과 C++의 라이브러리 lower_bound()를 사용하는 방법이 있다. 1. C로 직접 이분 탐색하여 구현하는 방법 출처 : https://www.crocus.co.kr/583..
[C/C++] for문 조건에 따라 다르게 만들기 백준 2048(EASY)문제를 풀다가아.. 이거 반복문 하나로도 할 수 있을 것 같은데 한 번 더 돌려야 되나... 라고 생각했던 적이 있다..ㅎ.ㅎ 그래서 반복문에서 조건식을 변형 시키는 것을 알아 보았다! 우선, 내가 문제를 풀며 하고 싶었던 코딩은 아래와 같다! if (dir == 0) // UP :: 올라가야 하는 상황일 때의 for문for (int i = 0; i = 0; i--) 이걸 두번으로 나누지 말고 하나의 반복문으로 만들 수는 없을까!? 있다!!!!!! 우선 결과를 보여주자면 이렇게 만들면 된다. if (dir == 0) {row = N - ..
[C/C++] scanf와 scanf_s [scanf_s 사용할 때 주의할 점!!!] 이전 백준 알고리즘 문제를 풀 때, free하는 부분이 잘 안되서 문자열 동적할당을 포기하고 다른 방법을 이용해 문제를 푼 적이 있다. 근데.. scanf와 scanf_s의 차이를 몰라 생긴 나의 무지의 문제였다 ㅠ^ㅠ 우선, scanf 사용시 error가 날 때 세 가지 방법이 있는데 (1) scanf_s 를 사용한다!(2) #define _CRT_SECURE_NO_WARNING 를 코드 맨위에 써준다!(3) #pragma warning(disable:4996)를 써준다! 위 방법들을 사용하면 ERROR가 나지 않는다. 하지만 (1)을 사용할 시 주의해야 할 점이 있다. scanf_s로 문자나 문자열을 받을 때에는 size도 인자로 주어야 한다는 것!!! s..