데일리 루틴
44 - 최소직사각형
https://school.programmers.co.kr/learn/courses/30/lessons/86491
function maxOfArray(arr){ // 배열을 입력받아서 그 중 최댓값을 return해주는 함수
let max = arr[0];
for(let i=0; i<arr.length; i++){
if (arr[i] > max)
max = arr[i];
}
return max;
}
function solution(sizes) {
var answer = 0;
const widths = []; // 가로 길이만 모은 배열
const lengths = []; // 세로 길이만 모은 배열
for(let i=0; i<sizes.length; i++){ // sizes 배열을 순회하면서 가로,세로 중 큰 값은 widths에, 작은 값은 lengths에 추가
if(sizes[i][0] > sizes[i][1]){
widths.push(sizes[i][0]);
lengths.push(sizes[i][1]);
} else {
widths.push(sizes[i][1]);
lengths.push(sizes[i][0]);
}
}
const maxWidth = maxOfArray(widths); // widths에서 가장 큰 값
const maxLength = maxOfArray(lengths); // lengths에서 가장 큰 값
answer = maxWidth * maxLength; // 둘이 곱해서 return
return answer;
}
45번 - 시저 암호
https://school.programmers.co.kr/learn/courses/30/lessons/12926
function solution(s, n) {
var answer = '';
for(let i=0; i<s.length; i++){
if(s[i] === " "){ // 공백은 예외처리
answer += " ";
continue;
}
let ASCI = s[i].charCodeAt(); // 배열 안의 알파벳 아스키코드로 변환
for(let j=0; j<n; j++){ // n번만큼 더함
if(ASCI === 90 || ASCI === 122) // 알파벳이 90(Z)나 122(z)일 경우 25 빼서 a로
ASCI -= 25;
else // 아니면 +1
ASCI++;
}
answer += (String.fromCharCode(ASCI)); // 바뀐 아스키코드를 다시 알파벳으로 변환해서 answer에 추가
}
return answer;
}
JavaScript 5주차
getter와 setter를 써야하는 이유?
5주차 강의에서 getter와 setter에 대해서 배우던 중, 실습을 통해 써보면서 이걸 굳이 써야되나? 라는 생각이 들었다.
constructor에 있는 값 하나하나마다 getter와 setter를 하나하나 따로 만들어줘야한다는 점도 그렇고, this._name 이런식으로 underscope를 일일히 붙여줘야 해서 귀찮았기 때문이다. 그래서 따로 구글링을 통해 공부를 더 해보았다.
getter와 setter가 하는 역할
getter - 객체의 속성(property)값을 반환하는 메서드
setter - 객체의 속성값을 설정, 변경하는 메서드
getter와 setter은 각각 객체의 속성에 접근하고, 수정하는 역할을 하는 메서드이다. 하지만 굳이 이들을 이용하지 않아도 객체의 속성에 접근할 수 있는데, 써야하는 이유가 무엇일까?
쓰는 이유 (결론)
getter와 setter를 사용하면 객체 내부의 속성에 직접 접근하지 않아 객체의 정보 은닉이 된다고 한다. 결과적으로 보안이 강화되고, 코드의 안전성과 유지보수성이 올라간다. 또한 setter의 경우 value값 지정을 통해 옳지 않은 값을 넣는 것을 미연에 방지함으로써, 데이터의 무결성을 보장할 수도 있다.
'TIL' 카테고리의 다른 글
TIL 8/27 (0) | 2024.08.27 |
---|---|
8/26 TIL (0) | 2024.08.26 |
8/22 TIL (0) | 2024.08.22 |
TIL 8/21 - 데일리 루틴 40번, 개인과제 (0) | 2024.08.21 |
TIL 8/20 - 데일리 루틴 28번 ~ 39번 (0) | 2024.08.20 |