A로 B 만들기
문제
- 문자열 before, after가 매개변수로 주어집니다.
- before의 순서를 바꿔
- after를 만들 수 있으면 1을
- 아니라면 0을 출력하는 문제입니다.
-
before after result "olleh" "hello" 1 "allpe" "apple" 0
테스트 (인텔리제이)
- 처음 문제를 풀었을 때 순서를 뒤집었을 때 일치하면 1 아니면 0일거라 생각하고
- StringBuilder에 before를 담고 reverse 메서드를 사용하여 문자열을 뒤집고 비교했지만 실패
- 원인을 찾아보니 before의 순서를 이리저리 바꿨을 때 일치하면 1 아니라면 0이라는 것을 알게되었습니다.
class Solution {
public int solution(String before, String after) {
StringBuilder reverse = new StringBuilder(before);
int answer = 0;
if (after.contains(sb.reverse())) {
answer = 1;
}
return answer;
}
}
https://school.programmers.co.kr/questions/37596
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
- 그래서 풀이를 다시하여
- before와 after를 char 배열로 만들어줍니다.
- Arrays 클래스의 sort 메서드로 before와 after를 정렬해줍니다.
- 정렬된 before와 after를 다시 String으로 변환해주고 비교하면 됩니다.
import java.util.Arrays;
public class A로_B_만들기 {
public static void main(String[] args) {
/*
문자열 before, after가 매개변수로 주어집니다.
before의 순서를 바꿔
after를 만들 수 있으면 1을
아니라면 0을 출력하는 문제입니다.
입출력 예
before after result
"olleh" "hello" 1
"allpe" "apple" 0
입출력 설명
"olleh"의 순서를 바꾸면 "hello"를 만들 수 있습니다.
"allpe"의 순서를 바꿔도 "apple"을 만들 수 없습니다.
*/
String before = "olleh";
String after = "hello";
char[] c1 = before.toCharArray();
char[] c2 = after.toCharArray();
Arrays.sort(c1);
Arrays.sort(c2);
String str1 = new String(c1);
String str2 = new String(c2);
System.out.println(str1.equals(str2) ? 1 : 0);
}
}
프로그래머스 코드
import java.util.*;
class Solution {
public int solution(String before, String after) {
char[] c1 = before.toCharArray();
char[] c2 = after.toCharArray();
Arrays.sort(c1);
Arrays.sort(c2);
String str1 = new String(c1);
String str2 = new String(c2);
return str1.equals(str2) ? 1 : 0;
}
}
'Coding Test > Java Coding Test' 카테고리의 다른 글
[프로그래머스 / 자바] - 배열의 길이를 2의 거듭제곱으로 만들기 (0) | 2024.07.10 |
---|---|
[프로그래머스 / 자바] - 가까운 수 (0) | 2024.06.27 |
[프로그래머스 / 자바] - 수열과 구간 쿼리 1 (0) | 2024.06.26 |
[프로그래머스 / 자바] - 특정 문자열로 끝나는 가장 긴 부분 문자열 찾기 (0) | 2024.06.26 |
[프로그래머스 / 자바] - 배열 만들기 5 (0) | 2024.06.25 |