본문 바로가기

ComputerScience/알고리즘, 프로그래머스54

[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.
[Lv.0] 합성수 찾기 1. 문제 2. 풀이 function solution(n) { var answer = 0; let count = []; for(i= 2; i set -> array의 과정을 거치며 중복값을 제거하는 용도로도 사용 가능하다. 3) 축약형으로 : - let b = [...new Set(a)] ; 로 축약하여 중복값을 제거할 수 있다. 2023. 1. 30.
[Lv.0] 가장 큰 수 찾기 (Math.max(), findIndex()) 1. 문제 2. 풀이 function solution(array) { let max = Math.max(...array); //Math객체의 max메소드를 이용해 array의 요소 중 최대값을 구한다. let index = array.findIndex(e => e === max); //array중에서 max의 값과 같은 요소의 index를 알아낸다. let answer = [max, index] //answer에 입력 return answer; } 3. 알아야할 사항 1) Math.max(a,b,c) : - a,b,c 중 최대값을 리턴한다. 2) array.findIndex( (a) => 조건문 ) : - 조건문에 해당하는 값을 리턴한다. a는 각각의 요소이다. 2023. 1. 30.
[Lv.0] 중앙값 구하기(sort(), 불안정정렬, 안정정렬) 1. 문제 2. 풀이 function solution(array) { var answer = 0; array.sort((a,b) => b-a) //배열을 정렬한다. answer = array[Math.floor(array.length/2)] //배열의길이를 2로 나눈값을 버림하면 중앙값의 index이다. return answer; } 3. 알아야할 사항 1) array.sort((a,b)=>a-b): - 콜백함수가 (a,b) => a-b 일 경우 오름차순 정렬 - 콜백함수가 (a,b) => b-a 일 경우 내림차순 정렬 - Stable Sort 란 ? : 배열의 요소 중 같은 값이 있을 경우 기존의 순서가 보장되어 정렬되는 정렬 알고리즘의 경우 안정정렬(Stable Sort)이다. : 반대로 순서가 보장.. 2023. 1. 30.