반응형

코딩테스트 16

Two Pointers: 백준 회문-17609

문제 유형: Two Pointers회문회문(回文) 또는 팰린드롬(palindrome)은 앞 뒤 방향으로 볼 때 같은 순서의 문자로 구성된 문자열을 말한다. 예를 들어 ‘abba’ ‘kayak’, ‘reviver’, ‘madam’은 모두 회문이다. 만일 그 자체는 회문이 아니지만 한 문자를 삭제하여 회문으로 만들 수 있는 문자열이라면 우리는 이런 문자열을 “유사회문”(pseudo palindrome)이라고 부른다. 예를 들어 ‘summuus’는 5번째나 혹은 6번째 문자 ‘u’를 제거하여 ‘summus’인 회문이 되므로 유사회문이다.여러분은 제시된 문자열을 분석하여 그것이 그 자체로 회문인지, 또는 한 문자를 삭제하면 회문이 되는 “유사회문”인지, 아니면 회문이나 유사회문도 아닌 일반 문자열인지를 판단해야..

알고리즘/JAVA 2024.08.09

Two Pointers: 백준 수 고르기-2230

문제 유형: Two Pointers수 고르기N개의 정수로 이루어진 수열 A[1], A[2], …, A[N]이 있다. 이 수열에서 두 수를 골랐을 때(같은 수일 수도 있다), 그 차이가 M 이상이면서 제일 작은 경우를 구하는 프로그램을 작성하시오.예를 들어 수열이 {1, 2, 3, 4, 5}라고 하자. 만약 M = 3일 경우, 1 4, 1 5, 2 5를 골랐을 때 그 차이가 M 이상이 된다. 이 중에서 차이가 가장 작은 경우는 1 4나 2 5를 골랐을 때의 3이 된다. 작성 코드import java.util.Arrays;import java.util.Scanner;public class Main { public static int N, M; public static int[] givenNums;..

알고리즘/JAVA 2024.08.09

Two Pointers: 백준 부분합-1806

문제 유형: Two Pointers + Sliding Windows부분합10,000 이하의 자연수로 이루어진 길이 N짜리 수열이 주어진다. 이 수열에서 연속된 수들의 부분합 중에 그 합이 S 이상이 되는 것 중, 가장 짧은 것의 길이를 구하는 프로그램을 작성하시오.작성 코드import javax.sound.midi.Sequence;import java.util.Scanner;public class Main { static Scanner sc = new Scanner(System.in); static int N, S; static int[] sequence; static void input() { N = sc.nextInt(); S = sc.nextInt();..

알고리즘/JAVA 2024.08.09

Two Pointers

투포인터는 한가지의 포인터로 배열안의 모든 요소를 비교 하는게 비효율적이거나 배열 안에서 페어단위로 조사를 할 필요성이 있을 때 대표적으로 사용되는 알고리즘이다.  투포인터 알고리즘이 사용 되기 좋은 상황의 경우 아래와 같다.1. 두 배열의 Intersection을 찾을 때2. 두 배열의 용소를 합칠 때3. 두 배열의 차이를 찾을 때즉, 두개의 배열을 사용하는 경우 유용하다. 이런 투포인터의 핵심은 포인터와 포인터가 움직이는 조건에 대한 파악이다.그리고 두개의 포인터이니 조건을 판단하고 어떤 포인터를 움직여야 하는지에 대해 파악이 필요하다. 예를들어 주어진 값과 배열 안에서 주어진 값을 만들 수 있는 하나의 페어를 찾아야 하는경우 배열 가장 앞과 뒤에 두개의 포인터를 두고 합이 값보다 클경우 가장 뒤에있..

알고리즘/이론 2024.08.06

알고리즘이란 무엇인가?

알고리즘 영어로는 Algorithms(알고리즘) 전공자이든 비전공자이든 바이든이든 이건 누구나 다 들어 봤을 표현이다. 그러면 이게 정확히 무엇인지 아는 사람들이 있을까? 솔직히 많다. 그래도 사전적 정의는 '주어진 문제를 논리적으로 해결하기 위해 절차나 방법을 묵어 놓은 것'이다. 구글 Youtube 알고리즘을 예로 들어서 설명해보자 대표적인 Youtube 알고리즘의 문제는 '사용자에게 어떤 영상을 추천하는가?' 로 시작된다. 그럼, 이 문제를 논리적으로 해결하기 위한 절차나 방법을 생각해 보자. 먼저 흔히 생각해 낼 방법은 아래와 같다. 1. 사용자의 시청 기록 확인하기 2. 사용자의 검색 기록 확인하기 3. 사용자에게 직접 물어보기 그럼 위의 방법들을 좀 더 자세하게 절차와 함께 생각해보자. 1. ..

알고리즘 2023.01.29
반응형