오늘은 하루종일 알고리즘 문풀
다 끝내고 싶었는데 아직 다섯 문제 남아따
문자열 내 p와 y의 개수
function solution1(s){ let answer = '' let lowy = s.toLowerCase().split('y').length-1 let lowp = s.toLowerCase().split('p').length-1 if (lowp == lowy) { answer = true } else { answer = false } return answer }
let 작작 붙이고, = 랑 == 도 좀 제발 구분하기🤦♀️
문자열 내 p와 y의 개수
function solution2(s) { let answer = ''; if (s.length == 4) { answer = /^(\s|\d)+$/.test(s) } else if (s.length == 6) { answer = /^(\s|\d)+$/.test(s) } else { answer = false } return answer }
- https://jex.im/regulex 정규식해석사이트
코드는 유치한 수준이고 정규식은 복붙해왔다ㅎㅎ..
서울에서 김서방 찾기
function solution3(seoul) { let arr = seoul.indexOf("Kim"); return '김서방은 ' + arr + '에 있다'; }
- indexOF
배열에서 지정된 요소를 찾을 수 있는 첫 번째 인덱스를 반환하고 존재하지 않으면 -1을 반환. 엄격한 동등성(===)을 사용.
arr.indexOf(searchElement[, fromIndex]) arr.indexOf(찾을 요소[, 검색을 시작할 색인])
진짜 오래 붙잡고 있었는데 fail ~~_(오늘 문풀 전멸 수준)_~~
행렬의 덧셈
function solution4(arr1, arr2) { let answer = Array() for (let i=0; i<arr1.length; i++){ answer[i] = [] for (let j=0; j<arr1[0].length; j++){ answer[i][j] = arr1[i][j] + arr2[i][j] } } return answer }
- 배열이 중첩된 만큼 for문을 돌려서 안에 있는 index를 다룸
- 바깥 for문([i])이 1번 돌 때, 안쪽 for문([j])은 총 3번 도는 중.
멘토링 기똥차게 받았다... 감삼다 매니저님🤓
x만큼 각격이 있는 n개의 숫자
function solution5(x, n) { let answer = Array() for (let i=1; i<=n; i++) { answer[i-1] = x*[i] } return answer }
등차수열이 나온다는 스포를 들어서 나름 쉽게 푼 문제. 코드는 여전히 유치뽕짝
부족한 금액 계산하기
function solution6(price, money, count) { let tot = 0 let answer = 0 for (let i=1; i<=count; i++) { tot += price*[i] } if (tot<=money){ answer = 0 } else { answer = tot-money } return answer }
알고리즘 스터디 발표 때 다른 분 풀이를 봤는데, 훨씬 깔끔하게 정리할 수 있었다. 그래도 정답 안 보고 풀었으니 만족해 보자...
2016년
function solution7(a, b) { const dayOfWeek = new Date(`2016-${a}-${b}`).toString() return dayOfWeek.slice(0,3).toUpperCase() }
이건 진짜 너무하다 생각했는데 막상 다시보니 쉬운 문제였네...? date 를 알게된 걸로~
나누어 떨어지는 숫자 배열
function solution8(arr, divisor) { let nums = arr.filter((div) => div % divisor == 0) if (nums == ''){ return [-1] } else { return nums.sort((a,b) => a-b) } } console.log(solution8([3,2,6],10))
- arr.sort()
배열의 순서를 변경하는데 조건이 없으면 유니코드 순서로 정렬.
index가 숫자인 경우[1, 2, 34, 4]
이런 식으로 나오기 때문에,
arr.sort((a,b) => a-b)
로 정렬해야 함- arr.filter()
배열을 조건에 맞게 거름.arr.filter((요소값, index, 대상) => {})
이런 식으로 작성을 하는데, 조건 설정을 예제로 복습하기
(+) 화살표함수를 이용해 한 줄로 코드를 짜면 return을 안 써도 됨!
와 이것도 진짜 ㅎㅊㅎ매니저님이 죽어가는 나를 살려줬다. filter... 두고 보자
나누어 떨어지는 숫자 배열
function solution8(arr, divisor) { let nums = arr.filter((div) => div % divisor == 0) if (nums == ''){ return [-1] } else { return nums.sort((a,b) => a-b) } } console.log(solution8([3,2,6],10))
- arr.sort()
배열의 순서를 변경하는데 조건이 없으면 유니코드 순서로 정렬.
index가 숫자인 경우[1, 2, 34, 4]
이런 식으로 나오기 때문에,
arr.sort((a,b) => a-b)
로 정렬해야 함- arr.filter()
배열을 조건에 맞게 거름.arr.filter((요소값, index, 대상) => {})
이런 식으로 작성을 하는데, 조건 설정을 예제로 복습하기
(+) 화살표함수를 이용해 한 줄로 코드를 짜면 return을 안 써도 됨!
와 이것도 진짜 ㅎㅊㅎ매니저님이 죽어가는 나를 살려준 문제다 filter... 두고 보자
내적
function solution9(a, b) { let answer = 0 for(let i=0; i<a.length; i++){ answer += a[i]*b[i] } return answer }
내적이 뭔가요... 아직도 모르지만 문제에서 잘 설명이 나와서 어찌저찌 풀었다. index 끼리 함수를 짜는게 아직 어색해서 간단하지만 시간이 맣이 걸렸다. 쫄지말자╰(‵□′)╯
와.... 글쓴 거 다 날아갈 뻔 벨로그 장난하냐 진짜 싸우자
마지막으로 오늘 예제풀이에서 약간의 착오가 있었던
논리연산자
정리하면서 마무으리
&&
: true+true => true //and
와 같다.||
: true+false => true //or
와 같다.!
: false => true //not
과 같다.