Coding Test/Java Coding Test
[프로그래머스 / 자바] - A로 B 만들기
nam_ji
2024. 6. 27. 09:22
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;
}
}