https://www.acmicpc.net/problem/10942
10942번: 팰린드롬?
총 M개의 줄에 걸쳐 홍준이의 질문에 대한 명우의 답을 입력으로 주어진 순서에 따라서 출력한다. 팰린드롬인 경우에는 1, 아닌 경우에는 0을 출력한다.
www.acmicpc.net
코드설명
이 문제같은경우 투포인터를 활용하여 풀수 있습니다.
투포인터를 활용하여 팰린드롬인지 아닌지 판단하여 출력하면 됩니다.
가장 왼쪽의 Left 와 가장 오른쪽 지점의 Right를 기준으로 투포인터를 작동시킵니다.
해당 값들이 같다면 계속해서 이어가고, 같지않다면 팰린드롬이 될 수 없으므로 Return false 하여 중단합니다.
출력시간을 줄이기 위해 StringBuilder를 사용합니다.
코드
투포인터 활용하여 팰린드롬인지 체크합니다.
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.LinkedList; import java.util.Queue; import java.util.StringTokenizer; public class Main { public static int N, M; public static int answer = 0; public static int[] arr; public static StringBuilder sb = new StringBuilder(); public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine()); N = Integer.parseInt(st.nextToken()); arr = new int[N+1]; st = new StringTokenizer(br.readLine()); for(int i=1;i<=N;i++) { arr[i] = Integer.parseInt(st.nextToken()); } st = new StringTokenizer(br.readLine()); M = Integer.parseInt(st.nextToken()); for(int i=0;i<M;i++) { st = new StringTokenizer(br.readLine()); int S = Integer.parseInt(st.nextToken()); int E = Integer.parseInt(st.nextToken()); if(getPalindrome(S, E) == true) { sb.append(1).append("\n"); }else { sb.append(0).append("\n"); } } System.out.println(sb.toString()); } public static boolean getPalindrome(int S, int E) { int left = S; int right = E; while(left < right) { if(arr[left] == arr[right]) { left += 1; right -=1; }else { return false; } } return true; } }
'알고리즘 > Two Pointer' 카테고리의 다른 글
[LeetCode] 88. Merge Sorted Array - Two Pointer(투포인터) JAVA (0) | 2023.12.23 |
---|---|
[백준] 2473 세 용액 - 투포인터(Two Pointer) JAVA (0) | 2023.11.13 |
[백준] 1253 좋다 - 투포인터 JAVA (0) | 2023.08.11 |
[백준] 2467 용액 - 투포인터 JAVA (0) | 2023.08.10 |
[백준] 2531 회전 초밥 - 슬라이딩 윈도우(Sliding Window) + 투포인터(Two Pointer) + 원형(Circular) + HashMap(해시맵) JAVA (0) | 2023.08.09 |