본문 바로가기

코딩테스트 입문16

Lv.1 프로그래머스 코딩테스트 정복 기념. 0단계는 단순한 배열 넣고빼기 삭제하기 순회하기 정렬하기 필터링하기 등의 메소드 위주의 단계였다면, 1단계는 배열/객체 계산, 날짜계산 등 거대하지 않은 데이터덩어리를 시간복잡도를 고려하여 효율적으로 관리하는 것에 대한 이야기가 주를 이루었다. 뿌듯하다! 이제 2단계로 가자 바로. 2023. 2. 7.
[Lv.0] 문자열 내림차순 정렬하기 (array.sort(), array.reverse(), array.join(), Spread 연산자, 1. 문제 2. 풀이 function solution(s) { var answer; answer = [...s]; //spread연산자로 문자열 s를 분해하여 배열에 각각 넣는다 answer.sort() // 문자열을 오름차순한다 answer.reverse() // 순서를 바꿔버린다(!) answer = answer.join('') // 배열을 연결해서 합친다 return answer; } 3. 알아야할 사항 1) spread연산자 (...a) : a가 문자면 한글자씩 분해한다. 괄호를 벗긴다 2) .sort() : 파라미터가 없으면 유니코드 기준으로 오름차순한다. 3) .reverse() : 배열의 순서를 뒤집는다. 4) .join(a) : 배열을 구분자 a기준으로 연결하여 합친다. 2023. 1. 31.
[LV.1] 정수 제곱근 판별 (Math.sqrt(), Number.isInteger() 1. 문제 2. 풀이 function solution(n) { var answer = 0; if(Number.isInteger(Math.sqrt(n))){ // n의 제곱근이 정수라면 ? answer = (Math.sqrt(n)+1)*(Math.sqrt(n)+1); // (n의제곱근+1)^2 를 리턴 } else{ answer = -1 // 아니면 -1 } return answer; } 3. 알아야할 사항 1) Number.isInteger(a) : a가 정수이면 true, 아니면 false를 리턴해준다 2) Math.sqrt(n) : n의 제곱근을 구해준다. 2023. 1. 31.
[Lv.0] 안전지대 (2차원 배열과 경우의수) 1. 문제 2. 전략 1) 지뢰의 좌표를 찾는다. 2) 지뢰의 좌표로부터 상하좌우 8칸이 0이라면 'x'로 바꾼다 (지뢰가 여러개일수 있으므로 1이면 그대로 1로 둔다.) 3) 만약 지뢰가 좌상끝/좌끝/좌하끝/우상끝/우끝/우하끝/상끝/하끝 인 경우를 고려해야한다. 4) * 풀이 도중 board[삼항연산자][삼항연산자] 의 방법에 오류가 있어 별도의 함수를 만들어 풀었다. function solution(board) { var answer = 0; let n = board.length-1; // board는 어떤수x어떤수의 정사각형 형태이므로 // let n = board의 요소의 마지막index혹은 board의 마지막index let ifNeg = (a)=>{ // ifNeg는 파라미터 자신이 음수면 0.. 2023. 1. 30.
[Lv.0] 평행(복잡한 계산문제에서의 전략) 1. 문제 2. 전략 1) 두개의 점을 이은 선분의 기울기는 (x2-x1)/(y2-y1) 이다. 2) for 반복문을 이용해서 가능한 선분의 모든 기울기를 newArray에 push한다. 3) newArray에 중복값이 있으면 평행한 선분을 그을 수 있다. function solution(dots) { var answer = 0; let allArr = []; for(let i =0; i 2023. 1. 30.
[Lv.0] 외계어 사전 1. 문제 2. 전략 1) 일단 spell의 전체길이와 dic의 글자수가 다른 요소는 어차피 발음 못하므로 삭제한다. 2) dic의 각 글자에서 spell의 글자들과 비교하여 일치하는 경우 '' 으로 replace 시킨다. (중복된 원소가 없으므로 한번만 검사하면 된다) 3) 작업된 배열 중에서 글자가 모두 교체되어 ''가 된 요소가 1개 이상일 경우 spell의 알파벳을 한번만 사용한 단어가 dic에 존재하므로 answer =1 이다. function solution(spell, dic) { var answer = 2; let newDic = []; //중복되지 않으며, spell의 원소 모두를 사용해야하므로 dic의 요소 중에서 spell의 전체의 길이와 //같은 요소만을 필터해서 newDic에 모아.. 2023. 1. 30.
[Lv.0] 영어가 싫어요(.replaceAll()) 1. 문제 2. 풀이 function solution(numbers) { let numberEn = ['zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine'] let sum = numbers for(let i =0; i 2023. 1. 30.
[Lv.0] 7의 개수 1. 문제 2. 풀이 function solution(array) { let count = 0; for(let i =0; i< array.length; i++){ // 배열의 개수만큼 순회하며 아래 실행. let f = array[i].toString().indexOf('7'); //각 요소 중 7의 첫번째 인덱스를 반환 (indexOf()는 요소가 없으면 -1을 반환한다) while(f !=-1){ //7이 있으면 계속 실행하며 count를 올려 개수를 세준다. count++; f = array[i].toString().indexOf('7', f + 1) // indexOf의 두번째 파라미터(option)를 +1해주며 검색을 계속 진행 } } var answer = count; return answer.. 2023. 1. 30.