💡 문제 1.
let s = [
"이유덕", "이재영", "권종표", "이재영",
"박민호", "강상희", "이재영", "김지완",
"최승혁", "이성연", "박영서", "박민호",
"전경헌", "송정환", "김재성", "이유덕",
"전경헌",
];
- "이재영"이라는 이름이 몇 번 반복되는지?
[ 함수 생성, 파라미터로 넘겨받도록("이재영")
function is_lee(name) {
let count = 0; -> 반복되는 횟수를 담을 변수 선언.
for (let i = 0; i < s.length; i++) {
if (s[i] == name) {
count++;
}
}
return name + " : " + count;
}
document.write(is_lee("이재영")); -> 결과 : 이재영 : 3
- 중복된 이름을 제거한 이름을 출력하시오.
-> 배열의 요소를 처음부터 하나씩 차례로 자기를 포함한 요소와 비교를 해볼것이다.(이중for문)
중복이 아닌 요소는 자기자신과 한 번만 같을테니 1번 중복하고,
중복인 요소는 1번 이상 중복할거다.
이 방식대로 코드를 작성해 보았다.
function remove_overlap() {
let uniq = []; -> 중복된 이름을 제거한 이름을 담을 배열 선언.
for (let i = 0; i < s.length; i++) {
let cnt = 0; -> 중복되는 횟수를 담을 변수 선언.
다음 검사 떄마다 초기화를 시켜줘야 하므로 for문 안쪽에 선언.
for (let j = 0; j < s.length; j++) {
if(s[i] == s[j]) {
cnt++;
}
}
if(cnt == 1) {
uniq.push(s[i]);
}
}
return uniq;
}
document.write(remove_overlap());
-> 결과 : 권종표,강상희,김지완,최승혁,이성연,박영서,송정환,김재성