반응형
🔺 문제
🔺 코드
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 java.util.*;
class Solution {
static String s;
public int solution(String s) {
this.s = s;
for(int i = s.length() ; i > 0 ; i--) { // 팰린드롬 길이 (🔔 큰 범위부터 줄이기 !)
for(int j = 0 ; j+i <= s.length() ; j++) { // 팰린드롬 검사 시작 위치
if(isPalindrome(j, j + i - 1)) { // 해당 범위 시작부터 끝까지 비교
return i;
}
}
}
return 0;
}
private static boolean isPalindrome(int start, int end) {
while(start <= end) {
if(s.charAt(start++) != s.charAt(end--))
return false;
}
return true;
}
}
|
cs |
🧩 해결 아이디어
• 문자열, 구현
1. 팰린드롬 길이를 가장 큰 길이에서부터 범위를 1씩 좁혀가며 가장 긴 팰린드롬의 길이를 구한다.
2. 팰린드롬의 길이만큼 문자들을 비교하여 같지 않다면, 다음 시작점으로 넘어간다.
3. 팰린드롬이라면, 이 때의 길이가 가장 긴 길이이므로 바로 출력하고 종료한다.
💥 유의사항
StringBuilder로 팰린드롬인지 판별하면 효율성 쪽에서 틀린다.........
아래처럼..
효율성 틀린 코드 확인하기 (72.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
29
30
31
|
import java.util.*;
class Solution {
static String s;
public int solution(String s) {
this.s = s;
int answer = 1;
for(int i = 0 ; i < s.length() ; i++) {
for(int j = i ; j < s.length() ; j++) {
if(isPalindrome(i, j)) {
int tmp = s.substring(i, j + 1).length();
answer = Math.max(answer, tmp);
}
}
}
return answer;
}
private static boolean isPalindrome(int l, int r) {
String str1 = s.substring(l, r + 1);
StringBuilder sb1 = new StringBuilder(str1);
String str2 = sb1.reverse().toString();
if(str1.equals(str2))
return true;
return false;
}
}
|
cs |
🔺 다른 풀이들
- 팰린드롬이 짝수개인지 홀수개인지 구분해서 구하는 메소드
- 그림 풀이 굿.. (복습용)
- 문자열이 팰린드롬인지 판별할 때 for문 사용
💬 느낀 점
머리가 어지럽네예.....
2번째로 풀 때 해결방법은 비슷하게 생각해낸 것 같긴 한데
결국 혼자 풀지는 못했네예..
담엔 혼자 이렇게 풀어보겠심더..
1회독 | 2회독 | 3회독 | 4회독 | 5회독 |
V |
(참고)
✔ 풀이 참고
✔ StringBuilder .reverse() 메소드 활용법 (얘 때문에 효율성 통과는 못 했지만..)
반응형
'코테 > 프로그래머스' 카테고리의 다른 글
[프로그래머스/Level2] 택배 배달과 수거하기 (JAVA) (0) | 2024.01.07 |
---|---|
[프로그래머스/Lv. 2] 요격 시스템 (JAVA) (0) | 2023.12.23 |
[프로그래머스/Lv. 2] 택배상자 (JAVA) (0) | 2023.11.26 |
[프로그래머스/Lv. 2] [1차] 뉴스 클러스터링 (JAVA) (0) | 2023.11.26 |
[프로그래머스/Lv. 1] 개인정보 수집 유효기간 (JAVA) (0) | 2023.11.25 |