포스트

10988번 팰린드롬인지 확인하기 - dart

main 사진

백준 10988번 : 팰린드롬인지 확인하기

🤓 풀이 과정

1️⃣ 첫 번째 생각한 방법

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
26
27
28
import 'dart:io';

void main() {
  String? input = stdin.readLineSync(); // 터미널에서 입력
  palindromeCheck(input!);
}

void palindromeCheck(String input){
  int inputLength = input.length;
  List check = [];

  List inputList = input.trim().split('');
  for(var firstIndex = 0; firstIndex < inputLength; firstIndex ++){
    if(inputList[firstIndex] == inputList[inputLength-firstIndex-1]){
      check.add(true);
      
    }
  }
  if(check.length == inputLength){
    print('palindrome!!!!');
    print(1);

      } else {
    print('Not palindrome!!!!');
    print(0);
        
      }
}

처음에 생각한 방법은 String을 하나씩 잘라서 List로 처음과 끝, 그리고 두번째와 마지막에서 두번째 이런식으로 같은 지 확인하기 위해 방법을 고민했습니다.

예를 들어서 String a = '12321';

List aList = ['1', '2', '3', '2', '1'];로 변경하여

aList[0] == aList[4],aList[1] == aList[3],aList[2] == aList[2]가 전부 true 가 되게 적용하면 됩니다.

그리고 String의 길이가 홀수, 짝수 상관없이 적용됩니다.

2️⃣ 두 번째 생각한 방법

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
26
27
28
import 'dart:io';

void main() {
  String? input = stdin.readLineSync(); // 터미널에서 입력
  palindromeCheck2(input!);
}

void palindromeCheck2(String input){
  int inputLength = input.length;

  List inputList = input.trim().split('');
  int check = 0;
  
  for(var index = 0; index < inputLength/2; index ++){
    if(inputList[index] != inputList[inputLength-index-1]){
      print('Not palindrome!!!!');
      print(0);
      break; // 하나라도 충족되지 않을 때 탈출
    } else {
      check++;
      if(check == (inputLength/2).round()){
        print('palindrome!!!!');
        print(1);
        break; 
      }    
    }
  }
}

두번째는 인덱스를 확인할때 길이를 반으로 줄여서 해도 적용된다는 것을 알고 위와 같이 수정했습니다.

3️⃣ 세 번째 생각한 방법

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import 'dart:io';

void main() {
  String? input = stdin.readLineSync(); // 터미널에서 입력
  palindromeCheck3(input!);
}

void palindromeCheck3(String input){
  var  reversedinputList = input.trim().split('').reversed;
  String reversedInput = reversedinputList.join();
  if(input == reversedInput){
    print(1);
  }else {
    print(0);
  }
}

마지막으로 최종적인 방법은 원래 리스트와 뒤집었을 때의 리스트와 같으면 팰린드롬인 방법으로 코드를 작성했습니다.




🧐 오늘의 소감은?

처음부터 너무 어렵게 생각을 했던 것네요 ㅠㅠ 마지막 방법이 저렇게 간단한 방법이 있을지… 전혀 생각지도 못했어요 ㅠ 치근차근 문제를 풀어봐야겠어요!!

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.