개념을 이해했다고 생각했지만, 문제를 풀 때 배웠던 것들 중 선택하고 조합하여 문제풀이에 활용하는 것이 어렵게 느껴졌다. 오랜 시간 고민하고 해결했던 문제들을 정리하고자 한다. 갑자기 더 좋은 아이디어가 떠오르면 다시 돌아와서 풀어보자!🤙
[문제]
findSmallestElement
의 arr
인자는 숫자 값으로만 이루어진 배열입니다.arr
의 값들 중 가장 작은 값을 리턴 해주세요.arr
가 비어있으면 0을 리턴 해주세요.[20, 200, 23, 1, 3, 9]
[풀이]
function findSmallestElement(arr) {
// your code here
//arr가 비어있으면 0을 리턴
if (arr.length === 0) {
return 0;
}
//arr값들 중 가장 작은 값을 리턴
else {
let min = arr[0];
for(let i in arr) {
if(min>arr[i]) {
min = arr[i]
}
}
return min;
}
}
변수 min을 arr[0]으로 설정하고(가상으로), arr를 순회하며 더 작은 값이 있을 시 min을 수정하도록 하는 방법으로 문제를 해결했다. 이 방법으로 가장 큰 값을 리턴하려면?
let max = arr[0];
for(let i in arr) {
if(max<arr[i]) {
max = arr[i]
}
}
return max;
let name = 'Dabin An';
let upperName = name.toUpperCase();
let lowerName = name.toLowerCase();
console.log(name); // Dabin An
console.log(upperName); // DABIN AN
console.log(lowerName); // dabin an
특정 텍스트의 포함 유무 및 위치 확인
let name = 'dabin an'
name.indexOf('b') // 2
name.indexOf('a') // 1
index 위치로 알려주고, 해당 텍스트 중 제일 처음 나오는 위치를 알려준다.
true
{ }, [ ]
포함)false
" "
(빈문자열)NaN
null
(object)undefined
[문제]
sliceCityFromAddress
함수는 address
를 인자로 받습니다.address
는 주소를 나타내는 string 입니다."경기도 성남시 분당구 중앙공원로 53"
다음과 같은 값이 리턴되어야 합니다:
"경기도 분당구 중앙공원로 53"
[풀이]
천재같은.. 빛과같은.. 팀원분들의 도움으로 모든 경우에 적용될 수 있는 코드를 구현했다.
function sliceCityFromAddress(address) {
return address
//배열로 만들기 [경기도,성남시,분당구,중앙공원로,53]
.split(" ")
//배열의 요소 마지막 자리에 '시'가 없는 요소만 반환
.filter(ele => ele[ele.length - 1] !== "시")
//string 만들기 '경기도 분당구 중앙공원로 53
.join(" ")
}
레플릿 문제를 pass하고도 계속 고민했던 이유는 [00구, 0000로, 00동] 의 0자리에 '시'가 들어가면 그 요소도 filter에서 걸러지기 때문 ㅠㅠ 완성 전 코드는 아래와 같다.
function sliceCityFromAddress(address) {
return address
.split(" ")
.filter(element => element.indexOf("시") === -1)
.join(" ")
}
도움을 요청했을 때, '00시'로 끝나는 배열의 요소를 찾기 위해 문자열의 length로 접근하면 될 것 같다는 조언을 받았고, 같이 실행해본 결과 성공했다! 그저 감탄,,,
문자열이나 숫자는 '+' 를 사용할 수 있다는 공통점이 있다. 하지만 문자열에는 '-'가 불가능하며, NaN이라는 결과가 반환된다. (문자열에 '-'를 하면 숫자로 변환해서 계산해주지만, 오해의 소지가 있다.)
let birthYearInput = "1997";
console.log(typeof birthYearInput); //string
var numberBirthYear = Number(birthYearInput);
console.log(typeof numberBirthYear); //number
parseFloat("1.901");
parseInt("1.901");
parseFloat
parseInt
let numberAsNumber = "1234";
let numberAsString = numberAsNumber - 0;
console.log(numberAsNumber, typeof numberAsNumber);// "1234" "string"
console.log(numberAsString, typeof numberAsString);// 1234 "number"
let numberAsNumber = 123;
let numberAsString = numberAsNumber.toString();
console.log(numberAsNumber, typeof numberAsNumber); // 123 "number"
console.log(numberAsString, typeof numberAsString); // "123" "string"
let numberAsNumber = 1234;
let numberAsString = 1234 + "";
console.log(numberAsNumber, typeof numberAsNumber); //1234 "number"
console.log(numberAsString, typeof numberAsString); // "1234" "string"