카테고리 없음
[프로그래머스 / 코딩테스트 입문 / 자바(JAVA)] 문자열 밀기
읁;
2024. 3. 8. 19:45
문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/120921
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
▼ ▼ ▼
▲ ▲ ▲
내 풀이 (정답)
로직
A를 char 배열로 만들어서 배열 요소를 한 칸씩 밀어낸다...
근데 솔직히 이것보다 더 효율적으로 할 수 있을텐데.. 라고 생각하면서 코드를 짰다.
코드
class Solution {
public int solution(String A, String B) {
int answer = 0;
char[] arr = A.toCharArray();
for(int i=0; i<A.length();i++) {
if(new String(arr).equals(B)) break;
char next = arr[0];
arr[0] = arr[arr.length-1];
for(int j=0; j<A.length()-1;j++) {
char temp = arr[j+1];
arr[j+1] = next;
next = temp;
}
answer++;
}
return (new String(arr).equals(B))?answer:-1;
}
}
채점 결과
정확성 테스트
테스트 1 〉 통과 (0.04ms, 73.6MB)
테스트 2 〉 통과 (0.05ms, 73.5MB)
테스트 3 〉 통과 (0.04ms, 77.2MB)
테스트 4 〉 통과 (0.06ms, 71.7MB)
테스트 5 〉 통과 (0.04ms, 77.2MB)
테스트 6 〉 통과 (0.03ms, 75.8MB)
테스트 7 〉 통과 (0.04ms, 74.9MB)
테스트 8 〉 통과 (0.03ms, 80.9MB)
채점 결과
정확성: 100.0
합계: 100.0 / 100.0
좋은 풀이
kimtaehan11@gmail.com , 이규민 님의 코드
class Solution {
public int solution(String A, String B) {
String tempB = B.repeat(3);
return tempB.indexOf(A);
}
}
배운 점
솔직히 이런 사람 보면 벽 느낀다 ㄱ-.. 흑흑
김진호 , Bokyeong Kang , 도인호 , look 님의 코드
class Solution {
public int solution(String A, String B) {
int answer = -1;
String temp = A;
for(int i = 0 ; i < A.length() ; i++){
if(temp.equals(B)){
answer = i;
break;
}
temp = temp.charAt(A.length()-1) + temp.substring(0, A.length()-1);
}
return answer;
}
}
배운 점 (로직 이해해보기)
- 한 칸씩 밀어낸 문자열을 만드는 코드를 이렇게 짰다.
temp.charAt(A.length()-1)
temp의 가장 뒷글자를 가장 앞에 붙이고,temp.substring(0, A.length()-1)
temp의 가장 앞 글자부터 가장 마지막 글자 전 까지 자름
- 만약 temp가 B랑 같으면 answer를 i로 하고 반복문을 벗어난다.