[TIL] 2019-10-26

undefcat·2019년 10월 25일
0

TIL

목록 보기
39/228

알고리즘

종만북

  • 9.12 - 웨브바짐
    - ~DP에서 메모이제이션을 적용할 때, 어떤 값들을 확실히 적용해야 하는지 감이 안잡히는건지, 논리를 잘못생각해서 엉뚱하게 적용하는지 갈피가 안잡힌다.~
    • 책을 읽고 다시 감이 잡혔다. 메모이제이션을 사용하는 이유는 중복된 계산을 막기 위해서다. 중복된 계산이라는 것은, 함수가 호출될 때의 상태가 같을 때를 뜻한다. 보통의 경우는 매개변수대로 메모이제이션을 적용하면 된다. 그런데, 매개변수가 편의상 추가된 매개변수일 수도 있다.
      			func (idx, used int)
      			```
    • 위 함수의 경우, 15개의 값을 사용했는지 안했는지 여부를 체크하기 위해 비트값으로 used를 사용했다고 가정하고, idx는 몇 번째인지를 나타낸다고 해보자. 이 경우, used1로 켜져있는 비트의 수를 세면 이 함수가 풀 idx값을 얻을 수 있다. 하지만 이는 추가적인 계산이 필요하다. 편의를 위해 이 값을 idx로 전달하면 쉽게 해결된다. 이 경우 굳이 idx는 메모이제이션을 하지 않아도 된다. 어차피 idx값은 used값에 종속적이기 때문에 used에 의해 상태가 결정되지, idx에 의해 상태가 결정되는 것은 아니기 때문이다.

HTML

input.value vs input.files

오픈 카톡방에서 어떤 분께서 input에 여러개 첨부된 파일 중 특정한 것을 어떻게 빼야 하는지 질문을 하셨다. 나는 자연스럽게 input태그의 파일값은 읽기 전용이므로 바꿀 수 없다는 답변을 드렸다. 그런데 다른 분께서 그냥 다른 배열로 옮기고 처리하면 된다고 말씀하시고 그걸로 해결을 하셨다고 한다.

엥? 도대체 어떻게 그게 가능하단 말이여? 내가 알기로 input태그의 value값은 읽기전용인데, 읽기전용인 이유는 사용자 컴퓨터의 특정한 경로에 있는 파일들을 마음껏 업로드 할 수 있으니 이를 보안상 막기 위함이라고 알고 있는데 말이다.

근데 알고보니까 FileList객체는 value에 들어있는게 아니라 files에 들어있더라... Aㅏ.. 난 지금까지 value라는 값에 FileList같은게 들어있는 줄 알았는데 그게 아니었던 것이다... 그래도 FileList 자체도 immutable이므로 읽기전용이라고 봐야 한다.

오브젝트

책임이 가장 중요하다. 암 그렇고 말고!

profile
undefined cat

0개의 댓글