Q. 배열 arr가 주어집니다. 배열 arr의 각 원소는 숫자 0부터 9까지로 이루어져 있습니다. 이때, 배열 arr에서 연속적으로 나타나는 숫자는 하나만 남기고 전부 제거하려고 합니다. 단, 제거된 후 남은 수들을 반환할 때는 배열 arr의 원소들의 순서를 유지해야 합니다. 배열 arr에서 연속적으로 나타나는 숫자는 제거하고 남은 수들을 return 하는 solution 함수를 완성해 주세요.
function solution(arr)
{
let answer = [];
for (let i =0 ; i <= arr.length -1; i++){
if (arr[i] != arr[i+1]){
answer.push(arr[i]);
}
}
return answer;
}
- 1단계. 순서는 상관이 없기에 바로
for (let i =0 ; i <= arr.length -1; i++)
로 반복문 작성- 2단계. 현재의 숫자와 다음에 올 숫자가 다를 때, 현재 숫자를 빈 배열에 push함
- 3단계. 마지막
arr[arr.length - 1] != arr[arr.length]
에서arr[arr.length]
은undefinded
이기 때문에arr[arr.length - 1]
가 깔끔하게 들어감
Q. 문자열 s가 매개변수로 주어집니다. s에서 한 번만 등장하는 문자를 사전 순으로 정렬한 문자열을 return 하도록 solution 함수를 완성해보세요. 한 번만 등장하는 문자가 없을 경우 빈 문자열을 return 합니다.
function solution(s) {
let str = s.split("").sort();
let answer = ""
if (str[0] != str[1]){
answer += str[0];
} else {
answer = "";
}
for (let i = 1; i <= str.length - 1; i++){
if (str[i] != str[i - 1]){
if (str[i] != str[i+1]){
answer += str[i];
}
}
}
return answer;
}
- 1단계. 매개변수가 문자열로 묶여있기 때문에,
split("")
으로 쪼개고,sort()
로 알파벳 순서대로 나열함- 2단계. 이 문제의 경우, 앞뒤의 문자를 비교해서 앞뒤 모두 다른 문자를 출력해야하기에,
for (let i = 1; i <= str.length - 1; i++){ if (str[i] != str[i - 1]){ if (str[i] != str[i+1]){ answer += str[i]; } } }
로 작성!!- 3단계. 이러면 0번째 문자를 검사 할 수 없기때문에 맨 앞에
if (str[0] != str[1]){ answer += str[0]; } else { answer = ""; }
로 0번째 문자를 검사