A로 B 만들기
Algorithm 관련 포스팅
- 최빈값 구하기
- k의 개수 구하기
- String
- 문자열 정렬하기
- 인덱스 바꾸기
- 제곱수 판별하기
- Math
- 배열 회전시키기
- A로 B 만들기
- 잘라서 배열로 저장하기
- Array와 ArrayList
- 저주의 숫자 3
이 글은 프로그래머스의 A로 B 만들기의 풀이를 정리한 것입니다.
문제 설명
문자열 before
와 after
가 매개변수로 주어질 때, before
의 순서를 바꾸어 after
를 만들 수 있으면 1을, 만들 수 없으면 0을 return 하도록 solution 함수를 완성해보세요.
제한사항
- 0 <
before
의 길이 ==after
의 길이 < 1,000 before
와after
는 모두 소문자로 이루어져 있습니다.
입출력 예
before | after | result |
---|---|---|
“olleh” | “hello” | 1 |
“allpe” | “apple” | 0 |
입출력 예 설명
입출력 예 #1
- “olleh”의 순서를 바꾸면 “hello”를 만들 수 있습니다.
입출력 예 #2
- “allpe”의 순서를 바꿔도 “apple”을 만들 수 없습니다.
나의 풀이(1)
- after의 길이 만큼
for
문을 돎 -
replaceFirst()
를 사용해 before의 문자 중 after에 있는 처음 만나는 공통 문자를""
로 교체※
replace()
의 경우, 해당 문자를 모두 바꾸어버림String replaceFirst(String regex, String replacement)
- before에 있는 문자열이 after에도 모두 있다면
replaceFirst()
의 결과는 공백(""
)이며, before에 있는 문자열이 after에 모두 있지 않다면 미처 지워지지 않은 문자열이 반환됨
class Solution {
public int solution(String before, String after) {
int answer = 0;
// 1.
for (int i = 0; i < after.length(); i++) {
// 2.
before = before.replaceFirst(String.valueOf(after.charAt(i)), "");
}
// 3.
if (before.equals("")) answer = 1;
else answer = 0;
return answer;
}
}
나의 풀이(2)
- before과 after의 문자열을
toCharArray()
로 문자 배열로 전환 - 문자 배열을
sort()
로 오름차순 정렬 - 두 배열을
String 생성자
를 이용해 문자열로 전환 후 동일 여부 파악
import java.util.Arrays;
class Solution {
public int solution(String before, String after) {
int answer = 0;
// 1.
char[] beforeCh = before.toCharArray();
char[] afterCh = after.toCharArray();
// 2.
Arrays.sort(beforeCh);
Arrays.sort(afterCh);
// 3.
if (new String(beforeCh).equals(new String(afterCh))) answer = 1;
else answer = 0;
return answer;
}
}