-
https://www.acmicpc.net/problem/11053
11053번: 가장 긴 증가하는 부분 수열
수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이
www.acmicpc.net
https://github.com/JUNGSOONIL/JAVA/blob/main/BAEKJOON%2011053
GitHub - JUNGSOONIL/JAVA: JAVA 소스 코드
JAVA 소스 코드. Contribute to JUNGSOONIL/JAVA development by creating an account on GitHub.
github.com
해당 문제는 수열이 주어졌을 때 해당 수열에서 가장 긴 증가하는 부분 수열을 구하는 문제다.
이진 탐색을 이용했고 이진 탐색에서 주의할 점은 만약 해당 수가 없으면 음수를 출력해 주는데
이 음수를 어떤 식으로 출력하는지 알아야 한다
음수 값은 현재 값이 있어야 할 위치 -1 해준 값이다. 이게 무슨 소리냐면
만약 2 4 6이라는 수열이 있을 때 5라는 데이터는 2번째 위치에 들어가면 된다. (시작은 0)
그러면 음수 값으로 -2가 주어지면 좋은데 확인해 보면 -3이 주어진다.
그 이유는 1234.. 숫자들은 양수 음수가 존재하지만 0은 양수 음수 개념이 없다
즉 이진 탐색을 했을 때 결과가 0이 나오면 이게 0번째에 있다는 건지 없지만 0번째에 들어가야 한다는 건지
알 수가 없다 그래서 만약 0번째에 있으면 0을 출력해 주고 그렇지 않다면 -1을 출력해 주어
0번째에 들어가야 한다는 것을 알려주는 방식이다.
728x90'알고리즘 > Baekjoon' 카테고리의 다른 글
Baekjoon 11403 경로 찾기 JAVA (0) 2021.11.12 Baekjoon 1389 케빈 베이컨의 6단계 법칙 JAVA (0) 2021.11.12 Baekjoon 12865 평범한 배낭 JAVA (0) 2021.11.12 Baekjoon 1600 말이 되고픈 원숭이 JAVA (0) 2021.11.12 Baekjoon 2636 치즈 JAVA (0) 2021.11.12 댓글