[BOJ] 30804. 과일 탕후루
·
BOJ
📌 문제 제목문제 링크: BOJ 30804🗒️ 문제 설명1부터 9까지의 과일 N개가 꽂혀있는 탕후루가 있을 때, 앞이나 뒤의 과일을 제거하여 최대 2종류의 과일만을 가지는 탕후루를 만들어라.이때, 탕후루에 꽂혀있는 과일의 최대 개수를 구하여라.시간 제한: 2초메모리 제한: 1024MB1 1 💡 문제 해결 아이디어N이 최대 200,000 이므로 시간복잡도가 O(N)의 알고리즘 사용연속된 구간에서의 과일의 개수를 구하는 문제이므로 투 포인터를 사용다음에 꽂아야 할 과일이 이미 꽂혀있지 않고 이미 종류가 2종류라면 break⌛️ 시간 복잡도O(N)st는 시작점 포인터로 최대 N번 반복en은 끝점 포인터로 전체적으로 N번까지 증가겉보기에는 이중 반복이지만, en은 한 번 증가하면 다시 줄어들지 않음. ->..
[BOJ] 1806. 부분합
·
BOJ
📌 문제 제목문제 링크: BOJ 1806🗒️ 문제 설명10,000 이하의 자연수로 이루어진 길이 N짜리 수열이 있을 때, 이 수열에서 연속된 수들의 부분합 중 그 합이 S 이상이 되는 것 중 가장 짧은 것을 구하여라.시간 제한: 0.5초메모리 제한: 128MB10 0 💡 문제 해결 아이디어시간 제한이 0.5초이고 N이 최대 100,000개 이므로 O(N)의 시간복잡도를 가지는 알고리즘을 사용연속된 수들의 부분합을 구하는 문제이므로 투 포인터 사용st를 0으로 잡고 부분합이 S 이상일 때 까지 en을 증가 + total에 부분합을 더하기처음 total이 S 이상일 때 answer을 비교 후 갱신total에 seq[st] 감소⌛️ 시간 복잡도O(N)st는 최대 N번 반복en은 전체 루프 동안 N번까지 ..
[BOJ] 2230. 수 고르기
·
BOJ
📌 문제 제목문제 링크: BOJ 2230🗒️ 문제 설명N개의 정수로 이루어진 수열이 있을 때, 이 수열에서 두 수를 골랐을 때 그 차이가 M 이상이면서 제일 작은 경우를 구하여라.시간 제한: 2초메모리 제한: 128MB1 0 0 💡 문제 해결 아이디어N이 최대 100,000 이기 때문에 O(N log N) 이하의 시간복잡도를 가지는 알고리즘 사용정렬을 시킨다면 st가 증가할 때 en이 줄어들 수 없으므로 O(N)의 시간복잡도를 가지는 투 포인터를 사용할 수 있다.입력이 정렬되어 있지 않으므로 수를 정렬 - O(N log N)st를 0으로 잡고 두 수의 차가 M 이상일 때까지 en을 증가시킴.처음 M 이상인 지점에 두 수의 차를 answer과 비교⌛️ 시간 복잡도O(N log N)정렬에 O(N log..