24/3/28 알고리즘(2)
접미사 배열
// 문자열을 배열로 만들고 맵함수를 돌린다. 접미사는 배열의 길이만큼 있을테니깡
// 그리고 문자열을 시작인덱스부터 끝까지 쓰고 sort를 통해 정렬해주면 끝
//호오 섭스트링을 쓰셨구만 괜찮네 ㅋㅋㅋ
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
배열 만들기 3
// 주어진 길이 맞춰 slice로 짤라주고 그렇게 나온 배열 두개를 concat으로 순서대로 묶어준다.
//오호 이것도 좋네 구조분해 할당으로 그냥 바로 꺼내쓰는법도 좋네 흐음흐음
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
문자열 돌리기
//포문 돌려서 콘솔 str의 길이만큼 돌려준다.
//배열화 시켰어 배열매서드 돌렸구먼 오호
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
문자열 잘라서 정렬하기
// x를 걷어내면서 배열로 만들고 빈문자열은 걷어내고 사전순으로 정렬
//match 매서드는 뭐지 첨본다 찾아봐야지 match 정규표현식에 일치하는 애들로 배열을 만든다고 하는군 신기
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// abc가 다 다를때랑 abc가 다 같을때랑을 먼저 분기 처리하고 abc중 두개가 같을때를 별도로 꺼내서 처리 완료
//와 이거 좋은데?? Set을 통해 동일한 값을 없애 버리는 구나 와우 언빌리버블 이야 지렸다.
// cal이라는 함수 별도로 꺼낸것도 좋고 재활용이 야무진 코드다.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
9로 나눈 나머지
//배열로 만들고 각요소를 다 더해주고 9로 나눈 나머지 리턴하면 끝
//와 이거 머냐? 호오 이런것도 있구만 엄청 큰수에 사용한다. 이거구먼 ㅇㅋㅇㅋ
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
세로 읽기
// 뭐 일단 몇행으로 쪼개지는지 횟수로 저장하고 포문돌려서 해당 열의 문자열을 answer에 푸쉬하도록 조치
//아하 와우 i를 m으로 나눈 나머지하고 필요한 것의 인덱스가 같겠구나 그거에 해당하는애들로 필터링해서 합쳐주는구먼
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
등차수열의 특정한 항만 더하기
//인클루드의 요소가 참인지 거짓인지 여부에 따라 등차수열을 쓸지 0을 담을지 정해서 그 배열의 넘버들을 다 더해서 리턴
//아하 맵함수를 쓸필요도 없네 바로 새배열 만들게 아니라 그자리에서 더해버리면 되는구나 오호 좋네
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
문자열 섞기
//동일한 길이의 배열을 만드는데 str1과 str2의 같은 위치의 요소들을 더해가면서 나중에 join으로 합쳐서 문자열완성
// 내꺼랑 완전히 일치하는데?? 호호
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
날짜 비교하기
// 배열 매서드는 도중에 종료할수가 없나봄??? 흐음 포문을 써서 첫번째 연도가 date1이 빠르면 바로 1리턴하고
//뭐 같으면 다음포문으로 넘어가고 남은건 date1이 date2보다 늦은 날짜면 볼것도 없이 0리턴하고 끝 깔꼼
//뭐야 이거 배열은 걍 Date 에 넣어도 이게 된다고 홀리쉿 한수 배움
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
이차원 배열 대각선 순회하기
// 와 나 지금까지 for in문 좋아해서 엄청쓰고 있었는데 이따 i랑 j를 직접적으로 쓰는게 오류가 발생할수도 있다네?
//와 진짜 몰랐음 허허 난이제 뭘써야 하오?
//와 reduce 두번 쓰는거 멋있다.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
수열과 구간 쿼리 1
// 아씨 늙었나 머리회전이 안되네 arr을 한번 answer에 담고 이중포문으로 해당되는 위치마다 1씩 넣어주면 끝
//흐음.. 아 나도 구조분해 할당으로 할걸 이래야 안헷갈리는데 이거 좋다. 포이치 안에 와일문 돌리셨구먼
//깔끔하고 좋다.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// 뭐 그냥 문자열 배열 만들고 필터하는데 indices에 index번호가 있는지 확인하고 없는것들만 건져내서 join으로 합쳐서 끝
//뭐 원리는 같구먼
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
배열 만들기 5
// 배열 만들고 각 요소를 원하는 길이만큼 잘라주고 그 배열요소중에서 k보다 큰거 걸러주면 끝
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
빈 배열에 추가, 삭제하기
//해석하기 귀찮 ㅋ
//와 reduce 잘쓰는거 부럽네 pop쓰는게 아니라 slice로 자르는것도 좋네
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
문자열 뒤집기
//splice 오랜만에 쓸려니까 어색하네 뜯어 고치게 arr에 할당하고 필요한 만큼 뜯어내서 뒤집은 문자열 만들고
//본배열에 원하는 위치에 문자열 쑉 넣어주고 문자열로 만들면 완성
//substring 으로 뽑아내셨구먼 배열로 만들고 뒤집고 문자열로 만들고
//오호 replace썻구먼 이거 좋네 str 드러내고 거기다newStr을 넣는다 오호 좋다.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
특정 문자열로 끝나는 가장 긴 부분 문자열 찾기
// 문자열에서 pat 의 마지막 인덱스를 구해보고 이제 그 문자를 pat이 마지막 글자가 되도록 자르면 끝
//아하 그냥 마지막에 pat을 더해줘서 문자열 완성하면 끝이고만? 섭스트링으로 쪼개주고 오호
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//answer에 할당해 주고 쿼리스는 요소가 배열이니까 쓰기 편하게 구조분해 할당해주고
// 요소들 바꿔주고 리턴
//아이고 이것도 구조분해 할당하면 깔끔하구먼? ㅋㅋ 쓋
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
문자열이 몇 번 등장하는지 세기
//일단 쪼개질수 있는 숫자만큼 빈배열 만들어 주고 그 배열을 map돌려주고 pat의 길이에 해당하는 만큼 잘라서
//pat의 길이에 해당하는 경우의 수를 다 구해서 그배열 요소가 정확히 pat과 일치하는 요소의 개수구해주면 끝
// 흐음 정규식이구먼 g는 글로벌일테고 이제 pat과 일치하는 정규식을 만드는거 같은디? 그리고 문자열에서
//그 정규식에 일치하는 문자열을 배열로 뽑고 그 길이를 알아내고 호오 어렵네
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1로 만들기
// 넘리스트의 요소들로 계산을 해야하니까 포이치 돌리고 해당 아이템 num에 일단 할당해 놓고
짝수면 조래 계산 해주고 홀수면 조래 계산해주고 나눠주는만큼 횟수 추가해주고 끝 첨에 num===1 이렇게
조건해놔서 머지 왜이러지 했네 짜증
//엥? 와 찢었다. 2진법으로 바꾼것의 스트링길이에서 1뺀게 나눈횟수구나??? 지렸다. 그걸 다 더해주기만 하면 되고?
// 와 수학적 접근 지렸다. 감탄만 나오네
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
간단한 논리 연산
// 머그냥 && 하고 || 아는지 확인하는 문제고만
// 이거 재밌네 불리언 값을 넘버형으로 바꿔서 계산 결과 값을 리턴하네 ㅋㅋ
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// 일단 answer에 거듭 제곱들을 담는다. 그리고 arr의 길이가 거듭제곱중에 하나랑 같아 질때까지 와일문 돌리고
//arr에 0을 추가하면 길이를 증가시킨다.
// Math.log2라는게 있구나.... 저걸로 지수를 구하는 구나... 그걸 올림해서 도달할 길이를 구해주고
//오호 이제 새 배열을 0으로 가득찬애로 밀어주면 끝이구나 오후 좋다.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~