🔺 문제
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
🔺 코드
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 |
🔺 다른 풀이들
- 팰린드롬이 짝수개인지 홀수개인지 구분해서 구하는 메소드
프로그래머스: 가장 긴 팰린드롬 [JAVA]
문제 링크 https://programmers.co.kr/learn/courses/30/lessons/12904 코딩테스트 연습 - 가장 긴 팰린드롬 앞뒤를 뒤집어도 똑같은 문자열을 팰린드롬(palindrome)이라고 합니다. 문자열 s가 주어질 때, s의 부분문
presentnine.tistory.com
- 그림 풀이 굿.. (복습용)
프로그래머스 - (Java) 가장 긴 팰린드롬
https://programmers.co.kr/learn/courses/30/lessons/12904 코딩테스트 연습 - 가장 긴 팰린드롬 앞뒤를 뒤집어도 똑같은 문자열을 팰린드롬(palindrome)이라고 합니다. 문자열 s가 주어질 때, s의 부분문자열(Substrin
moons-memo.tistory.com
- 문자열이 팰린드롬인지 판별할 때 for문 사용
[프로그래머스]가장 긴 팰린드롬 - JAVA
[프로그래머스]가장 긴 팰린드롬 programmers.co.kr/learn/courses/30/lessons/12904 코딩테스트 연습 - 가장 긴 팰린드롬 앞뒤를 뒤집어도 똑같은 문자열을 팰린드롬(palindrome)이라고 합니다. 문자열 s가 주어
moonsbeen.tistory.com
💬 느낀 점
머리가 어지럽네예.....
2번째로 풀 때 해결방법은 비슷하게 생각해낸 것 같긴 한데
결국 혼자 풀지는 못했네예..
담엔 혼자 이렇게 풀어보겠심더..
1회독 | 2회독 | 3회독 | 4회독 | 5회독 |
V |
(참고)
✔ 풀이 참고
[코딩테스트] 프로그래머스 - 가장 긴 팰린드롬(Java)
레벨: 3언어: 자바(Java)해당 문제는 알고리즘이랑 자료구조 필요없이 루프돌리면 구할수 있는문제이다.이 문제를 풀때 효율성에 몇번 걸렸었는데 주의할점이 있다.String substring() or StringBuilder reve
velog.io
✔ StringBuilder .reverse() 메소드 활용법 (얘 때문에 효율성 통과는 못 했지만..)
[StringBuilder] StringBuilder.reverse() 이용해서 문자열 뒤집기
Javascript문법 공부중 this.message = this.message.split('').reverse().join('') 라는 얄미운 문법을 발견. 'Java엔 저런게 없을까' 라는 생각과 바로 시작 된 구글링. Java 또한 StringBuilder의 reverse() 메소드를 이용하
ahndding.tistory.com
'코테 > 프로그래머스' 카테고리의 다른 글
[프로그래머스/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 |