프로그래머스 3단계 : 가장 긴 팰린드롬 (Java 자바)

2023. 9. 7. 01:09·💻 코딩테스트/programmers
728x90

문제 설명
앞뒤를 뒤집어도 똑같은 문자열을 팰린드롬(palindrome)이라고 합니다.
문자열 s가 주어질 때, s의 부분문자열(Substring)중 가장 긴 팰린드롬의 길이를 return 하는 solution 함수를 완성해 주세요.

예를들면, 문자열 s가 "abcdcba"이면 7을 return하고 "abacde"이면 3을 return합니다.

 


제한사항

  • 문자열 s의 길이 : 2,500 이하의 자연수
  • 문자열 s는 알파벳 소문자로만 구성

 

입출력 예

 

 

풀이

주어진 문자열 s에서 가장 긴 팰린드롬 부분 문자열의 길이를 찾는 문제입니다.

 

solution 메서드: 이 메서드는 주어진 문자열 s에서 가장 긴 팰린드롬 부분 문자열의 길이를 반환하는 함수입니다.

첫 번째 반복문 for (int i = s.length(); i > 0; i--): 문자열의 길이를 줄여가며 팰린드롬 부분 문자열을 찾기 위한 반복문입니다. i는 현재 검사 중인 부분 문자열의 길이를 나타냅니다. 길이가 전체 문자열의 길이부터 1까지 역순으로 검사합니다.

두 번째 반복문 for (int j = 0; j + i <= s.length(); j++): 현재 길이 i로 검사 중인 팰린드롬 부분 문자열의 시작 위치 j를 나타냅니다. j + i가 문자열 길이를 초과하지 않도록 주의합니다.

if (isPalindrome(s, j, j + i - 1)) return i;: 현재 검사 중인 부분 문자열이 팰린드롬인지 확인하고, 팰린드롬이라면 해당 길이 i를 반환합니다. 이 부분에서 팰린드롬 여부를 확인하는 isPalindrome 메서드를 호출합니다.

isPalindrome 메서드: 주어진 문자열 value에서 start부터 end까지의 부분 문자열이 팰린드롬인지 확인하는 메서드입니다. 이 메서드는 투 포인터 방식을 사용하여 부분 문자열을 확인합니다.

이 코드의 핵심 아이디어는 가능한 모든 부분 문자열을 검사하며 가장 긴 팰린드롬 부분 문자열을 찾는 것입니다.

 

class Solution {
public int solution(String s) {
for (int i = s.length(); i > 0; i--) {
for (int j = 0; j + i <= s.length(); j++) {
// isPalindrome 메서드를 사용하여 현재 검사 중인 부분 문자열이 팰린드롬인지 확인합니다.
if (isPalindrome(s, j, j + i - 1)) {
return i; // 팰린드롬이면 해당 길이(i)를 반환하고 종료합니다.
}
}
}
return 0; // 팰린드롬 부분 문자열이 없으면 0을 반환합니다.
}
// 주어진 문자열 value에서 start부터 end까지의 부분 문자열이 팰린드롬인지 확인하는 메서드
boolean isPalindrome(String value, int start, int end) {
while (start <= end) {
// 시작과 끝 부분의 문자를 비교하여 팰린드롬 여부를 확인합니다.
if (value.charAt(start++) != value.charAt(end--)) {
return false; // 문자가 다르면 팰린드롬이 아닙니다.
}
}
return true; // 모든 문자가 같으면 팰린드롬입니다.
}
}

 

 

728x90
저작자표시 비영리 변경금지 (새창열림)

'💻 코딩테스트 > programmers' 카테고리의 다른 글

프로그래머스 3단계 : 부대복귀 (Java 자바)  (0) 2023.09.07
프로그래머스 3단계 : 연속 펄스 부분 수열의 합 (Java 자바)  (0) 2023.09.07
프로그래머스 3단계 : 입국심사 (Java 자바)  (0) 2023.09.06
프로그래머스 3단계 : 섬 연결하기 (Java 자바)  (0) 2023.09.06
프로그래머스 3단계 : 징검다리 건너기 (Java 자바)  (0) 2023.09.06
'💻 코딩테스트/programmers' 카테고리의 다른 글
  • 프로그래머스 3단계 : 부대복귀 (Java 자바)
  • 프로그래머스 3단계 : 연속 펄스 부분 수열의 합 (Java 자바)
  • 프로그래머스 3단계 : 입국심사 (Java 자바)
  • 프로그래머스 3단계 : 섬 연결하기 (Java 자바)
gxxg
gxxg
함께 일하고 싶은 개발자를 꿈꾸는 예비개발자의 공부 기록
  • gxxg
    공공
    gxxg
  • 전체
    오늘
    어제
    • 분류 전체보기 (138)
      • ☁️ 구름 x 카카오 Deep Dive 풀스택 (7)
        • html, css (1)
        • Java (3)
        • 스프링 MVC (0)
      • 💻 코딩테스트 (89)
        • 백준 (2)
        • programmers (87)
      • SQLD (1)
      • Language (3)
        • Java (2)
        • JavaScript (1)
      • Style Sheet (0)
        • CSS (0)
        • SCSS & SASS (0)
      • DBMS (2)
        • Oracle (2)
        • MySQL (0)
        • postgresql (0)
        • 데이터베이스 기초 이론 (0)
      • React (0)
      • SpringBoot (0)
      • JSP (2)
      • 알고리즘 (0)
      • 2023-02 몰입형 SW 정규 교육 (24)
        • 9월 프로젝트 (8)
      • 벽돌깨기 (4)
      • Etc (4)
  • 블로그 메뉴

    • 홈
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    티스토리챌린지
    프로젝트 구조
    POST
    자바스크립트
    프로그래머스
    이클립스
    구현체
    springboot
    오블완
    programmers
    spring
    junit 테스트
    HTML
    java
    2단계
    회원 관리 시스템
    0단계
    코테
    코딩테스트
    톰캣
    eclipse
    Lv0
    3단계
    javascript
    JSP
    CSS
    DFS
    LV3
    자바
    Lv2
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
gxxg
프로그래머스 3단계 : 가장 긴 팰린드롬 (Java 자바)

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.