function solution(s){
let answer = ""
let sum = 0
let s1 = s.split("")
console.log(s1)
for (let i = 0; i < s1.length; i++) {
if (s1[i]=== ' ' ) {
answer += ' '
continue
}
else {
if(sum%2===0) {
answer += s1[i].toUpperCase()
sum++
}
else {
answer += s1[i]
sum++
}
}
}
return answer
}
feedback: continue를 사용하면 쉽게 풀 수 있었던 문제. continue를 잘 사용하지 않다 보니 다른 어려운 문제들은 풀었는데 난이도가 중인 문제에서 진땀을 흘렸다. continue 키워드는 반복문 안의 반복 작업을 멈추고 처음으로 돌아가 다음 반복 작업을 진행하게 해준다. 선택적으로 특정 케이스에만 무언가 실행해주고 싶을 때 사용하면 유용할 것 같다.
function solution(arr, n){
let temp = [];
// deep copy
for (let i=0; i<arr.length; i++){
temp[i] = arr[i];
}
for (let i=0; i<arr.length; i++){
for (let j=i+1; j<arr.length; j++){
if (arr[i] === arr[j]){
temp[i] = i + 1000;
temp[j] = j + 1000;
}
}
}
let selected = [];
for (let i=0; i<temp.length; i++){
if (typeof(temp[i]) == 'string'){
selected.push(temp[i]);
}
}
//console.log(selected);
return selected.sort((a,b) => {
// b,a 와야 하니깐 리턴값 > 0
if (a[n] > b[n]) return 1;
else if (a[n] < b[n]) return -1;
else{
if (a>b) return 1;
else if (a<b) return -1;
else return 0;
}
});
}
// console.log(solution(["coke", "water", "glass", "dog", "dog", "yogurt", "vitamin"], 2))
// alternative
function solution(arr, n) {
// 중복된 문자 찾기
// let temp = []
// for (let i=0; i<arr.length; i++){
// if (arr.indexOf(i) === i){
// temp.push(arr[i])
// }
// }
let newArr = [];
const Duplicates = arr => arr.filter((item, index) =>
arr.indexOf(item) !== index);
const duplicates = Duplicates(arr);
for(let i = 0; i < arr.length; i++) {
if(arr[i] != duplicates[0]) {
newArr.push(arr[i])
}
}
let answer = newArr.sort((a, b) => {
if(a[n] > b[n]) return 1
if(a[n] < b[n]) return -1
if(a[n] === b[n]){
if(a>b) return 1
if(a<b) return -1
return 0
}
});
return answer
}
feedback: indexOf(arr[i])와 i를 비교해서 만약 두 값이 다르다면 중복된 문자가 있음을 뜻한다는 것을 알 수 있었음. indexOf가 단순히 특정 문자열의 index만 반환한다고 알고 사용했는데, 구체적으로는 indexOf(str[i]) 메소드는 주어진 값과 일치한 첫번째 인덱스를 반환하는 것이었다. 즉, 위의 케이스에 있는 ["coke", "water", "glass", "dog", "dog", "yogurt", "vitamin"]에서 첫 번쨰 dog의 index와 i는 각각 3,3이지만 두 번째 dog의 index와 i 각각 3,4가 된다.(두 번째로 발견된 dog는 첫 번째로 발견된 dog의 indexOf() 값을 갖게 된다.) index의 용도에 대해 더 구체적으로 알 수 있어서 좋았던 문제.