투포인터

개발일지/Algorithm

백준 - 10815 숫자 카드 [이분탐색]

10815번: 숫자 카드 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10, www.acmicpc.net 1. 문제 요약 숫자 배열이 주어지고, 찾고자 하는 숫자가 주어졌을 때, 찾고자 하는 숫자가 배열에 존재하는지 판단하시오. 2. 접근 방법 이분 탐색 알고리즘을 사용합니다. 해당 알고리즘은 일반적으로 하는 up down 게임과 같은 원리입니다. 정렬된 상태에서 절반씩 소거하며 찾아내는 방법입니다. 오름차순으로 정렬된 배열에서 중간 부분을 탐색하고, 찾고자 하는 숫자보다 크면 해당 지점부터 끝부분까지의 중간 부분을 탐색합니다. 찾고자 ..

개발일지/Algorithm

백준 - 16472 고냥이 [투포인터]

16472번: 고냥이 고양이는 너무 귀엽다. 사람들은 고양이를 너무 귀여워했고, 결국 고양이와 더욱 가까워지고 싶어 고양이와의 소통을 위한 고양이 말 번역기를 발명하기로 했다. 이 번역기는 사람의 언어를 고 www.acmicpc.net 1. 문제 요약 n과 문자열이 주어지고, 문자열에서 최대 n개의 종류의 알파벳을 포함한 문자열의 길이를 구하라. 2. 접근 방법 투포인터 알고리즘을 사용하여 문자열을 순차적으로 검사합니다. j(끝) 위치의 알파벳이 새로운 알파벳일 경우 count += 1을 하고 사용 중인 알파벳으로 표시합니다. 사용 중인 알파벳의 종류가 n보다 클 경우 줄어들 때까지 i(시작) 위치의 알파벳을 이동합니다. 사용 중인 알파벳 종류가 하나 줄어들 경우 count -= 1 표시를 해줍니다. 현..

개발일지/Algorithm

백준 - 3273 두 수의 합 [투포인터]

3273번: 두 수의 합 n개의 서로 다른 양의 정수 a1, a2, ..., an으로 이루어진 수열이 있다. ai의 값은 1보다 크거나 같고, 1000000보다 작거나 같은 자연수이다. 자연수 x가 주어졌을 때, ai + aj = x (1 ≤ i < j ≤ n)을 만족하는 www.acmicpc.net 1. 문제 요약 자연수 수열이 주어지고 해당 수열의 수들 중, 두 수를 합하여 x와 같은 경우의 수를 구하라. 2. 접근 방법 - 투 포인터 배열을 오름차순으로 정렬합니다. 성능 향상 : x보다 작은 수들만 사용하도록 필터링 i = 0, j = 수열의 크기 - 1 arr[i] + arr[j] == x 일 경우 answer += 1 i += 1, j -= 1 (정렬을 했기 때문에, 해당 수들을 더했을 때, x..

E-room
'투포인터' 태그의 글 목록