문자열 다루기 기본
끝에 g를 붙여주면 전부 적용하겠다
이건 HTML용이었다...... 내가알고싶은건 아니었지만 그래도 유용해서 정리.
var text = document.createTextNode("\u00a0");
\u00a0은 유니코드상 공백.. --> 이스케이프시퀀스(pg#63)
1칸 :
2칸 :  
3칸 :  
가 아니고 그냥 문자열 안에서 공백 넣어줬더니 됨...... 허탈
answer = "김서방은 " + location +"에 " +"있다"
표현식 삽입
: 문자열은 연산자 + 를 사용해 연결할 수 있다. +연산자는 피연산자중 하나 이상이 문자열인 경우 문자열 연결 연산자로 동작한다. 그 외의 경우는 덧셈 연산자로 동작한다.
: 표현식을 삽입하려면 ${}으로 표현식을 감싼다. 이 때 표현식의 평가 결과가 문자열이 아니더라도 문자열로 타입이 강제 변환되어 삽입된다.
ex) ${name}처럼 사용하거나,
console.log(`1 + 2 = ${1 + 2}`); //1 + 2 = 3
이렇게 !
repeat 안쓰면 어떻게 할 수 있나
repeat 사용하지 않는 이유 : arr.repeat(2.5) 라고 하면 2번만 반복함...
근데그럼 '수박수박수'같은 형태가 나올 수가 없어..
아니면 split 써서 반복을 ........그게되나 ?
하여튼
function solution(n) {
let answer = '';
let word = "수박"
if (n%2 ==0){
answer = word.repeat(n/2)
}else{
answer = word.repeat(parseInt(n/2)) + "수"
}
return answer;
}
근데 그럼.... 수박이 두글자라서 되긴 됐는데.... 만약 글자가 길어진다면 계속 else if로 나머지 글자를넣어주어야 하나 ? ==> 더 고민해보자
배열 특정값 삭제
let arr = ['a', 'b', 'b', 'c'];
// 원소 'b' 삭제
for(let i = 0; i < arr.length; i++) {
if(arr[i] === 'b') {
arr.splice(i, 1);
i--;
}
}
document.writeln(arr); // ['a', 'c']
이렇게하면 splice, split 오래걸림 --> 효율성 검사 5문제 전부 fail...
왜냐.. 조건에서 마라톤 경기에 참여한 선수의 수는 1명 이상 100,000명 이하라고 했는데,,
저대로 돌리면 최악의경우 100000*100000 만큼 반복문을 돌리게 되는 것임..
시간복잡도 공간복잡도 고려 해야함....
어떻게 해결이 됐다고 멈추지말고 좀더 간단하고 적은 메모리와 시간이 드는 방법을 고려해야함..
좀 더 간단히 만들려면
해시 - 키 밸류 쌍으로
participantObj = {
"leo" : 1,
"kiki" : 1,
"eden": 1
}
participantObj[person]
completion.forEach((person)=> participantObj[person]-- )
{
"leo" : 1,
"kiki" : 0,
"eden": 0
}
이렇게 만들어주면, 밸류가 1인 키만 가져와서 보여주면 훨씬 간단
인데??? 난 일단 저런식으로 어떻게 만들어주는지를 모른다. 찾아봐야함..
하지만?
function solution(participant, completion) {
let answer = '';
let name = participant.sort()//["eden","kiki","leo"]
let fin = completion.sort()//["eden","kiki"]
for(let i=0;i<participant.length;i++){
if(name[i]!=fin[i]){
answer= name[i]
return answer;
}
}
console.log(answer)
}
이렇게 하면.. 동명이인이 있더라도... 틀린거 하나만 나오게 되니까.. 해결..
처음에 저렇게 풀다가 안돼서 다른 방향으로 틀었는데 역시 끝을 봤어야 했다...
includes, indexOf, splice, forEach <-- 고민했던 것들
글자마다 띄우고 싶은거라면 꼭!
split('') 으로 해줘야함
split([분류기준]) 인것임.
String()
Number()
Boolean()
: 반복문 내에서 사용.
break는 즉시 반복문 탈출 !
continue는 그 조건을 충족하면 그밑부터는 실행하지않고 다음 i로 넘어감
do{해야할일}while{범위}
function solution(n){
let answer = 0;
let list = String(n).split('')
for(i=0;i<list.length;i++){
answer += Number(list[i])
}
// [실행] 버튼을 누르면 출력 값을 볼 수 있습니다.
console.log(list)
return answer;
}
forEach, for...of, for...inlet answer = [1, 2, 5, 7]
for(let i of answer)
내일 찾아볼 것..
for과 if 하나만으로 모든 lv.0, lv.1 코테를 정복하려했던 나의 우매함에 통탄하며..
있는 메서드를 최대한 활용하는 것도 효율을 극대화 하는 방법 중 하나이다..(근데 뭘 알아야 활용할 수 있으니 메서드 공부를 열심히 하도록 하자...)
코테를 무조건 수학문제처럼 접근하면 오히려 더 돌아갈 수 있다.. (ex. Date로 2016 날짜 구하기..)
결국 어떤 메서드가 있는지 알고(꼭 안외워도 됨), 적재적소에 활용하도록 하자..
for과 if 만으로 해결하려는 바닐라 바닐라 자바스크립트(?) 는 이제 그만하도록..
시간복잡도, 공간복잡도 고려하기. 어떤메서드는 굉장히 무거울(?) 수 있다. --> 요것도 알아보기