[JS 문법 종합반] 1주차 숙제
1. 문자열 연습하기
- 프로그래머스 : 문자열 내 p와 y의 개수
https://school.programmers.co.kr/learn/courses/30/lessons/12916
function solution(s) {
var answer = true;
// 1. 대문자로 통일하기
s = s.toUpperCase(); // 📍 toUpperCase() : 대문자로 변경해줌
// 2. for문을 통해서 문자열의 요소를 비교하기
// p, y와 비교하기
var num = 0; // 변수 num을 0으로 설정
for (var i = 0; i < s.length; i++) { // for문으로 돌기
if (s[i] === 'P') { // 변수 s의 i번째 요소가 'P'면,
num++; // 변수 num을 증가시키고,
}
if (s[i] === 'Y') { // 변수 s의 i번째 요소가 'Y'면,
num--; // 변수 num을 감소시키기
}
} // 'P'와 'Y'의 개수가 같다면, 변수 num은 0이 됨
// 3. 갯수 체크(p,y 개수가 같은지 확인하는 작업)
if (num === 0) { // 만약 변수 num이 0이면(='P'와 'Y'의 개수가 같다면)
answer = true; // 변수 answer는 true가 되고,
} else { // 그게 아니라면(='P'와 'Y'의 개수가 같지 않다면)
answer = false; // 변수 answer는 false이 된다
}
return answer;
}
var str1 = "pPoooyY";
var str2 = "Pyy";
solution(str1);
console.log(solution(str1))
2. 반복문, 조건문 연습하기
function solution(absolutes, signs) {
// 1. return해야 하는 answer 생성
var answer = 0;
// 2. 두 배열을 비교해서 값을 더하거나 빼주기
// 두 배열은 크기가 같음
for (var i = 0; i<absolutes.length; i++) { // absolutes 요소 for문으로 돌기
// 부호(+,=)에 따른 처리
if(signs[i] === true) { // 변수 signs의 i번째가 true(양수)면,
answer = answer + absolutes[i]; // 변수 answer에는 answer에 absolutes의 i번째를 더한 값이 들어가고
}
if(signs[i] === false) { // 변수 signs의 i번째가 false(음수)면,
answer = answer - absolutes[i]; // 변수 answer에는 answer에 absolutes의 i번째를 뺀 값이 들어간다
}
}
// 3. 출력
return answer;
}
var absolutes = [4,7,12];
var signs = [true,false,true];
console.log(solution(absolutes, signs));
[JS 문법 종합반] 2주차
Map과 Set
- Map
# Map
// key, value를 저장하는 객체와 비슷
// 객체와 차이 : key에 어떤 데이터타입(유형)도 다 들어올 수 있음
// Map은 키가 정렬된 순서로 저장되기 떄문임
// Map의 기능 : 검색(set), 삭제(delete), 제거(clear), 크기/존재 여부 확인(size)
# Map 주요 메서드와 프로퍼티
new Map() // 맵을 만들기
map.set(key, value) // key를 이용해 value를 저장
map.get(key) // key에 해당하는 값을 반환, key가 존재하지 않으면 undefined를 반환
map.has(key) // key가 존재하면 true, 존재하지 않으면 false를 반환합니다.
map.delete(key) // key에 해당하는 값을 삭제
map.clear() // 맵 안의 모든 요소를 제거
map.size // 요소의 개수를 반환
# Map 생성, 값추가, 값검색
// set과 get은 세트임
const myMap = new Map();
myMap.set('key', 'value');
console.log(myMap.get('key')); // value
# Map의 반복 메소드 : keys(), values(), entries()
// for of 반복문은 ES6에 추가된 새로운 컬렉션 전용 반복 구문
// for of 구문을 사용하려면 컬렉션 객체가 [Symbol.iterator] 속성을 가지고 있어야 함
// iterator : 반복자
const myMap = new Map();
myMap.set('one', 1);
myMap.set('two', 2);
myMap.set('three', 3);
console.log(myMap.keys()); // [Map Iterator] { 'one', 'two', 'three' }
for (const key of myMap.keys()) {
console.log(key); // one two three
}
console.log(myMap.values()); // [Map Iterator] { 1, 2, 3 }
for (const value of myMap.values()) {
console.log(value); // 1 2 3
}
console.log(myMap.entries()); // [Map Entries] { [ 'one', 1 ], [ 'two', 2 ], [ 'three', 3 ] }
for (const entry of myMap.entries()) {
console.log(`${entry[0]}: ${entry[1]}`); // one: 1 two: 2 three: 3
}
# Map의 크기 및 존재 여부 확인 : size 속성, has() 메소드
console.log(myMap.size); // 사이즈(길이)확인 : 3
console.log(myMap.has('two')); // key 기반 검색 : true
- Set
# Set
// 고유한 값을 저장하는 자료 구조
// 값만 저장
// 키를 저장하지는 않음
// 값이 중복되지 않는 유일한 요소로만 구성
# Set을 사용한 작업
// ㄴ 값 추가 및 검색, 값 삭제, 모든 값 제거, 크기 및 존재 여부 확인
# Set 생성, 값추가
const mySet = new Set(); // 생성
mySet.add('value1'); // 값추가
mySet.add('value2');
// mySet.add('value2'); // 똑같은 값 추가하면 중복된 값으로 인식해서 카운트 X
mySet.add('value3');
mySet.add('value5');
mySet.add('value8');
# Set 크기 확인, 존재 여부 확인
console.log(mySet.size); // 크기 확인
console.log(mySet.has('value1')); // true - 존재 여부 확인
# Set 반복 : iterator
for (const value of mySet.values()) {
// 키를 저장하지 않아서 무조건 value임
console.log(value);
} // value1 value2 value3 value5 value8
'⛵ 항해99 > TIL · WIL ✏️' 카테고리의 다른 글
[TIL] 2023.08.18 - 프로그래머스 / forEach() / parseInt() / split() (0) | 2023.08.18 |
---|---|
[TIL] 2023.08.17 - 프로그래머스 (0) | 2023.08.17 |
[TIL] 2023.08.16 - 숫자 야구 프로그램 / Math.random() /문자열 변경(숫자 + '') / 문자열 인덱스 접근 / includes() (0) | 2023.08.16 |
[TIL] 2023.08.14 - for문 / 객체와 배열 (0) | 2023.08.14 |
[WIL] 개강 준비 주차(스타터 노트) (0) | 2023.08.13 |