728x90
문제 및 제한사항
문자열 before와 after가 매개변수로 주어질 때, before의 순서를 바꾸어 after를 만들 수 있으면 1을, 만들 수 없으면 0을 return 하도록 solution 함수를 완성해보세요.
**제한사항**
0 < before의 길이 == after의 길이 < 1,000
before와 after는 모두 소문자로 이루어져 있습니다.
풀이 방법
예를 들어 "olleh" "hello"는 순서가 바뀌어도 같은 단어를 만들지만 "allpe" "apple"은 순서를 바꿔도 만들 수 없다.
전자의 경우를 1로, 후자의 경우를 0로 리턴해야 한다.
풀이 방법은 2가지다.
1) sort()
문자열을 배열로 만든 후 sort로 동일한 순서를 맞춰준 후 비교하는 것이다.
삼항연산자를 사용해 같을 경우 1을, 그렇지 않을 경우 0을 리턴하게 했다.
2) 이중for문
처음에 이중으로 풀려다가 안돼서 챗지피티에 물어봤는데 두 번째 코드로 리팩토링 해줬다.
전자 문자열의 각 문자를 하나씩 순회해 후자 문자열에서 해당 문자가 있는지 찾아본다.
해당 문자가 없다면 & 모든 문자를 순회하고도 문자열을 만들지 못했다면 0을 반환하고
모든 문자를 순회하여 문자열을 만들었다면 1을 반환한다.
누가 봐도 1번이 훨씬 가독성이 좋다... (당연함 2번은 문자열의 길이가 길어지면 시간 복잡도를 가진다고 한다.)
코드
function solution(before, after) {
return before.split('').sort().join('') === after.split('').sort().join('') ? 1 : 0
}
function solution(before, after) {
for (let i = 0; i < before.length; i++) {
let found = false;
for (let j = 0; j < after.length; j++) {
if (before[i] === after[j]) {
found = true;
break;
}
}
if (!found) {
return 0;
}
}
return 1;
}
728x90
'⚙️ 코딩테스트' 카테고리의 다른 글
[JavaScript] 프로그래머스 코딩테스트 입문 : 2차원으로 만들기 (0) | 2023.03.28 |
---|---|
[JavaScript] 프로그래머스 코딩테스트 입문 : 팩토리얼 (0) | 2023.03.28 |
[JavaScript] 프로그래머스 코딩테스트 입문 : 모스부호 (1) (0) | 2023.03.28 |
[JavaScript] 프로그래머스 코딩테스트 입문 : 중복된 문자 제거 (0) | 2023.03.28 |
[JavaScript] 프로그래머스 코딩테스트 입문 : 문자열 정렬하기 (2) (0) | 2023.03.28 |