본문 바로가기

프로그래머스44

[Lv.1] 비밀지도 1. 문제 2. 전략 1) 지도1과 지도2 배열 각각 10진수를 2진수로 변경하여 spread연산자로 펼쳐서 0과 1로 된 배열 생성 2) 생성된 지도1배열과 지도2배열을 비교하여 1이 존재하는 좌표는"#", 두 좌표 모두 0인 경우 0으로 치환 3) 각각의 배열을 array.join('') 으로 연결하여 출력 function solution(n, arr1, arr2) { var answer = []; let a1 = []; let a2 = []; // 2진수의 a1 배열 생성 for(i in arr1){ //정사각형이므로 arr1, arr2 둘다 같은수 반복으로 사용가능 a1.push([...arr1[i].toString(2)]) a2.push([...arr2[i].toString(2)]) } //00.. 2023. 1. 31.
[Lv.1] 3진법 뒤집기 1. 문제 2. 풀이 function solution(n) { var answer = parseInt([...n.toString(3)].reverse().join(''),3) // n.toString(3) 은 10->3진법 변환 // 배열로 나눈 뒤 reverse()로 순서를 바꿔서 join으로 연결해준 뒤 // parseInt()로 3->10진법 변환 return answer; } 3. 알아야할 사항 1) 10진법 -> n진법 : num.toString(n) 2) n진법 -> 10진법 : parseInt(num,n) 2023. 1. 31.
[Lv.1] JS 최대공약수, 최소공배수 구하기 1. 문제 2. 풀이 function solution(n, m) { var answer = []; let 공약수 =[]; let 최대공약수; let 최소공배수; for(let i = 1; im?n:m); i++){ if(n % i ===0 && m % i ===0){ //i로 나눴을때 두 수 모두 나머지가 0인 수를 모두 공약수배열에 넣어버린다 공약수.push(i) } } 최대공약수 = Math.max(...공약수) //공약수 중에 가장 큰 수가 최대공약수 최소공배수 = (n/최대공약수 * m/최대공약수 * 최대공약수) //최소공배수 공식 : 초등학생 때 배운거다. answer = [최대공약수, 최소공배수] return answer; } 3. 알아야할 사항 1) 그냥 공약수 공배수는 가끔 쓸 것 같아서 .. 2023. 1. 31.
[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] 정복기념 레벨0 다풀었다.. 풀다가 안쓰던 메소드나 로직, 어려운거 포스팅 몇개 해보려고 했는데 어느새 다 풀었다. 다른 문제들은 올려놓은 포스팅 짬뽕이더라.. 레벨1도 풀면서 어려운 부분 기록하고 공유해야지! 오늘 공부 끝! 2023. 1. 30.
[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.