티스토리 뷰

1) 생각

이전 문제인 [SW Expert] 4579. 세상의 모든 팰린드롬 2 와 거의 비슷한 문제이다 답도 1줄만 추가하였다.

팰린드롬을 만들 수 있나를 물어보는 문제이다. 이번엔 치트키로 '?'를 사용하고 있다.


첫 번째 생각

이전 문제랑 거의 똑같지만 한 가지 차이가 있다면 '*'는 모든 문자를 넣을 있으므로 '*'가 있을 때는 강제로 맞춰줄 수 있었다.

이번 문제에서 사용되는 치트키 '?'는 딱 한 글자만 넣을 수 있으므로 다른 점이다.


2) 방안

1) '?'는 한 글자만 넣을 수 있으므로 flag가 false를 가르키고 있다면 반복문을 바로 빠져나와준다.

2) 이전 문제의 치트키 '*'는 문자를 넣을 수 있었기에 "ab*csdfba"와 같이 '?'를 넣었을 경우에는 틀린 문자에서 문장을 넣어주어서 '*' 치트키로 Exist가 나오게된다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import java.io.IOException;
import java.util.Scanner;
 
public class Solution {
    static int[][] arr;
    static int n;
    public static void main(String[] args) throws IOException{
        Scanner sc = new Scanner(System.in);
        int tc = sc.nextInt();
        for(int i=1;i<=tc;i++) {
            String t = sc.next();
            boolean flag = true;
            for(int j=0;j<t.length();j++) {
                if(t.charAt(j)!=t.charAt(t.length()-j-1)) {
                    flag = false;
                    if(t.charAt(j)=='?'||t.charAt(t.length()-j-1)=='?')
                        flag = true;
                }
                if(!flag) break;
            }
            if(flag) System.out.println("#"+i+" "+"Exist");
            else System.out.println("#"+i+" "+"Not exist");
        }            
    }
}
cs


댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday