본문 바로가기
728x90
728x90

문제풀이35

[프로그래머스] 최소직사각형 잠이 안와서 간만에 하나 풀어봄 1. 문제설명 https://programmers.co.kr/learn/courses/30/lessons/86491 코딩테스트 연습 - 최소직사각형 [[10, 7], [12, 3], [8, 15], [14, 7], [5, 15]] 120 [[14, 4], [19, 6], [6, 16], [18, 7], [7, 11]] 133 programmers.co.kr 2. 접근방법 음 뭐 별 고민 없이 풀긴했다. 명함을 가로로 돌릴수 있다는 게 흥미로웠음 결국 그냥 배열안의 두수를 비교해서 큰거는 index: 0 에 다가 작은거는 index: 1 에다가 박아두고, for문으로 index: 0 에있는 애들중에 제일 큰애 index: 1 에 있는 애들 중에 제일 큰애 두개 구해서 곱해주.. 2022. 2. 14.
[Javascript] 3진법 뒤집기 문제설명 자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요. 제한사항 n은 1 이상 100,000,000 이하인 자연수입니다. 입출력 예 nresult 45 7 125 229 입출력 예 설명 입출력 예 #1 답을 도출하는 과정은 다음과 같습니다. n (10진법)n (3진법)앞뒤 반전(3진법)10진법으로 표현 45 1200 0021 7 따라서 7을 return 해야 합니다. 입출력 예 #2 답을 도출하는 과정은 다음과 같습니다. n (10진법)n (3진법)앞뒤 반전(3진법)10진법으로 표현 125 11122 22111 229 따라서 229를 return 해야 합니다. 접근방법 이건 뭐 메서드.. 2022. 1. 4.
[Javascript] 예산 https://programmers.co.kr/learn/courses/30/lessons/12982 코딩테스트 연습 - 예산 S사에서는 각 부서에 필요한 물품을 지원해 주기 위해 부서별로 물품을 구매하는데 필요한 금액을 조사했습니다. 그러나, 전체 예산이 정해져 있기 때문에 모든 부서의 물품을 구매해 줄 수는 programmers.co.kr 문제설명 S사에서는 각 부서에 필요한 물품을 지원해 주기 위해 부서별로 물품을 구매하는데 필요한 금액을 조사했습니다. 그러나, 전체 예산이 정해져 있기 때문에 모든 부서의 물품을 구매해 줄 수는 없습니다. 그래서 최대한 많은 부서의 물품을 구매해 줄 수 있도록 하려고 합니다. 물품을 구매해 줄 때는 각 부서가 신청한 금액만큼을 모두 지원해 줘야 합니다. 예를 들어 .. 2022. 1. 4.
[Javascript]크레인 인형뽑기 게임 https://programmers.co.kr/learn/courses/30/lessons/64061 코딩테스트 연습 - 크레인 인형뽑기 게임 [[0,0,0,0,0],[0,0,1,0,3],[0,2,5,0,1],[4,2,4,4,2],[3,5,1,3,1]] [1,5,3,5,1,2,1,4] 4 programmers.co.kr 문제설명 게임개발자인 "죠르디"는 크레인 인형뽑기 기계를 모바일 게임으로 만들려고 합니다. "죠르디"는 게임의 재미를 높이기 위해 화면 구성과 규칙을 다음과 같이 게임 로직에 반영하려고 합니다. 게임 화면은 "1 x 1" 크기의 칸들로 이루어진 "N x N" 크기의 정사각 격자이며 위쪽에는 크레인이 있고 오른쪽에는 바구니가 있습니다. (위 그림은 "5 x 5" 크기의 예시입니다). 각 격.. 2022. 1. 4.
[Javascript] 폰켓몬 문제설명 당신은 폰켓몬을 잡기 위한 오랜 여행 끝에, 홍 박사님의 연구실에 도착했습니다. 홍 박사님은 당신에게 자신의 연구실에 있는 총 N 마리의 폰켓몬 중에서 N/2마리를 가져가도 좋다고 했습니다. 홍 박사님 연구실의 폰켓몬은 종류에 따라 번호를 붙여 구분합니다. 따라서 같은 종류의 폰켓몬은 같은 번호를 가지고 있습니다. 예를 들어 연구실에 총 4마리의 폰켓몬이 있고, 각 폰켓몬의 종류 번호가 [3번, 1번, 2번, 3번]이라면 이는 3번 폰켓몬 두 마리, 1번 폰켓몬 한 마리, 2번 폰켓몬 한 마리가 있음을 나타냅니다. 이때, 4마리의 폰켓몬 중 2마리를 고르는 방법은 다음과 같이 6가지가 있습니다. 첫 번째(3번), 두 번째(1번) 폰켓몬을 선택 첫 번째(3번), 세 번째(2번) 폰켓몬을 선택 첫 .. 2022. 1. 4.
모의고사 문제 설명 수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는 방식: 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, ... 2번 수포자가 찍는 방식: 2, 1, 2, 3, 2, 4, 2, 5, 2, 1, 2, 3, 2, 4, 2, 5, ... 3번 수포자가 찍는 방식: 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, ... 1번 문제부터 마지막 문제까지의 정답이 순서대로 들은 배열 answers가 주어졌을 때, 가장 많은 문제를 맞힌 사람이 누구인지 배열에 담아 return 하도록 solution 함수를 작.. 2021. 12. 28.
소수 만들기 https://programmers.co.kr/learn/courses/30/lessons/12977/solution_groups?language=javascript&type=my 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 자바스크립트 마려워서 쉬운거 하나 풀어봄 문제 설명 주어진 숫자 중 3개의 수를 더했을 때 소수가 되는 경우의 개수를 구하려고 합니다. 숫자들이 들어있는 배열 nums가 매개변수로 주어질 때, nums에 있는 숫자들 중 서로 다른 3개를 골라 더했을 때 소수가 되는 경우의 개수를 return 하도록 solution 함수를 완성해주세.. 2021. 12. 23.
4-5 k번째 큰수 문제설명 중복된 숫자가 있을수도 있는 N장의 카드에서 무작위로 3장을 뽑아 더한 모든 경우의 값을 구하고 그중에서 k번째로 큰 수를 구해라. 예를 들어 k 가 3이고, 3장을 더한 모든 경우의 값이 [10, 10, 11, 11, 12, 12, 13] 인 경우 k번째로 큰 수는 12 이다. const numList = [13, 15, 34, 23, 45, 65, 33, 11, 26, 42]; const k = 3; numList는 카드의 목록이다. 접근방법 4챕터 막문제라 엄청 어려울줄 알았는데 생각보다 쉽게 풀었다. 3중 for문 돌리면서, 중복되는 경우 제외 해주면서 싹다 더해준 뒤에 배열하나에 중복되는 값 거르면서 때려넣고, 내림차순 정리한다음에 k-1번 index의 값을 출력하면 된다. functi.. 2021. 12. 20.
4-4 졸업선물 문제설명 학생들에게 졸업선물을 해주기 위해 갖고 학생들에게 직접 갖고 싶은물건의 가격과 배송비를 알아오라고 했다. 선생님에겐 한정된 예산과, 물건값의 50%를 할인해주는 쿠폰이 있다. 단, 50% 할인 쿠폰은 물건값만 할인되고, 배송비는 할인 되지 않는다. 선생님의 한정된 예산으로 졸업선물을 사줄 수 있는 최대학생수를 구해라. const budget = 28; const arr = [ [6, 6], [2, 2], [4, 3], [4, 5], [10, 3], ]; budget 은 예산을 나타내고 학생수는 arr.length 이다. arr[n][0]은 물건의 가격을 arr[n][1]은 물건의 배송비를 나타낸다. 접근방법 30분동안 그림도 그리고 손코딩도 해보고 이거저거 다해봤는데 감이 안잡혀서, 결국 풀이 .. 2021. 12. 20.
4-3 멘토링 문제설명 n번의 테스틀 거쳐서, 멘토와 멘티를 정하려고 한다. 멘토는 모든 시험에서 멘티보다 등수가 높아야한다. n번의 테스트결과가 주어지면 멘토와 멘티가 정해지는 경우는 몇 가지 인지 출력해라. const arr = [ [3, 4, 1, 2], [4, 3, 2, 1], [3, 1, 4, 2], ]; console.log(solution(arr)) 위의 경우에서 첫번째 테스트 결과는 3번학생이 1등, 4번학생이 2등, 1번학생이 3등, 2번학생이 4등이다. 접근방법 for문을 여러번 돌려야 겠다는 건 대충 직감적으로 왔다. 하나하나 다 비교를 하기 위해, 무려 4중 for문을 이용해 i번 학생과 j번 학생을 지정하고 i의 k번째 테스트의 등수(s)를 grade1 에 할당하고 j의 k번째 테스트의 등수(s.. 2021. 12. 20.
4-2 뒤집은 소수 숫자들이 담긴 배열이 입력되면 각 숫자들을 뒤집고, 뒤집은 숫자가 소수인지 확인한 후 소수이면 출력한다. 단 예를 들어 200 뒤집어서 002 가 되는 경우 2로 출력한다. const arr = [32, 55, 62, 20, 250, 370, 200, 30, 100]; console.log(solution(arr)); 예제를 보면 이해가 쉽다 32를 뒤집어서 23 23은 소수이므로 23 출력 이 예제가 입력되면 출력되는 수는 23, 2, 73, 2, 3 이다. function solution(arr) { const answer = []; for (const num of arr) { let cnt = 0; const changedNum = Number(num.toString().split('').rever.. 2021. 12. 14.
4-1 자릿수의 합 배열에 숫자들이 담겨서 입력되면, 숫자들의 각 자릿수를 더한 값이 가장 큰 값을 출력한다. 근데 자릿수를 더한 값이 같은 숫자의 경우는 배열에 담겨서 입력된 숫자가 큰 값이 출력된다. const arr = [128, 460, 603, 40, 521, 137, 123, 11261]; 예제없이 보면 문제가 조금 애매한거 같은데 예제를 보면 쉽다. 128의 자릿수의 합은 11 그다음은 10, 9 ,4,8,11,6,11 이다. 가장 큰 합이 11 인데 11이 3개다 이런 경우에는 128, 137, 11261을 비교해서 가장 큰 수를 출력한다. 그러니 출력되는 값은 11261이다. function solution(arr) { let answer = 0; const sums = []; let biggest = 0;.. 2021. 12. 14.
격자판 최대합 문제설명 N*N크기의 표가 숫자로 채워져있다. 각 행의 합 각 열의 합 좌상우하 대각선 합 우상좌하 대각선 합 중 가장 큰 합을 구하라. 10 13 10 12 15 12 30 30 23 11 11 25 50 53 15 19 27 29 37 27 19 13 30 13 19 접근방법 다행히 2차배열로 만들어서 입력해주더라.. 배열 부터 만들었으면 귀찮았을거 같다. 좋은 방법이 있을까 고민을 해봤는데, 그냥 각 행의 합, 각 열의 합, 대각선 합 두개 총 12개의 숫자 다 한 배열에 때려 넣고 Math.max 돌리면 되는 거 아닌가.. function getBiggestSum(arr) { //모든 합이 들어가는 배열 const sum = []; //가로열 합 for (let i = 0; i < arr.leng.. 2021. 12. 10.
아일랜드 (BFS) https://kong-dev.tistory.com/58 아일랜드(DFS) 문제설명 [1, 1, 0, 0, 0, 1, 0], [0, 1, 1, 0, 1, 1, 0], [0, 1, 0, 0, 0, 0, 0], [0, 0, 0, 1, 0, 1, 1], [1, 1, 0, 1, 1, 0, 0], [1, 0, 0, 0, 1, 0, 0], [1, 0, 1, 0, 1, 0, 0], 1은 섬이고 0은 바다다. 섬은.. kong-dev.tistory.com 같은 문제다. 이번엔 BFS로 풀어야 한다. DFS로 하는건 못맞췄는데, BFS는 맞췄다. function solution(board) { let island = 0; const xmoving = [0, 1, 1, 1, 0, -1, -1, -1]; const ymov.. 2021. 12. 5.
아일랜드(DFS) 문제설명 [1, 1, 0, 0, 0, 1, 0], [0, 1, 1, 0, 1, 1, 0], [0, 1, 0, 0, 0, 0, 0], [0, 0, 0, 1, 0, 1, 1], [1, 1, 0, 1, 1, 0, 0], [1, 0, 0, 0, 1, 0, 0], [1, 0, 1, 0, 1, 0, 0], 1은 섬이고 0은 바다다. 섬은 상하좌우 그리고 대각선으로도 연결 돼 있고 이어진 섬은 하나로 친다. 섬의 갯수를 구하라 접근방법 설명이 너무 대충인가. DFS를 이용해서 풀어야 한다. 우선 이중for 문을 이용해서 1을 찾는다. 1을 찾으면 카운트를 하고, DFS함수를 호출한다. DFS함수 내부는 1을 만난 지점을 0으로 바꾸고 팔방으로 1이 있는지 확인한다. 1이 발견되면 그곳으로 이동해서 반복 functio.. 2021. 12. 5.
송아지 찾기!(BFS) 문제설명 철수가 강아지를 잃어버렸다. 현수는 스카이콩콩(...)을 타고 송아지를 찾으러 갈건데 점프 한번에 뒤로한칸 또는 앞으로 한칸 또는 앞으로 5칸을 갈 수 있다. 현수의 위치를 h칸 송아지의 위치를 c칸 라고 했을 때 h칸에서 c칸으로 가기 위한 최소 점프 횟수를 구하는 함수를 완성해라. 단, h 와 c는 1과 10000사이의 정수 이다. ex)h=5 c=14 result=3 접근방법 ㅎ 문제 한번 괴랄하네 스카이콩콩이라니 ㅎㅎ 일단 트리를 만들어서 어떻게 코드를 짤지 생각을 해봤다. ㅎ...그림이 중요한게 아니니까...ㅎ 대충 이런 식으로 생긴 트리다 루트노드 h 인 5로 시작하고 -1, +1, +5 세가지 경우로 자식노드 생기고 14를 찾을 때 까지 반복 한다는 거다. 최단 거리를 찾는 문제니까.. 2021. 12. 3.
미로탐색 문제설명 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 1 0 0 0 1 1 0 1 0 1 1 1 1 0 0 0 0 1 1 1 0 1 1 0 0 1 0 0 0 0 0 0 0은 지나 갈 수 있는 통로. 1은 지나 갈 수 없는 벽. 0,0 부터 시작해서 7,7로 도착하는 경우의 수를 구하는 함수를 완성하세요. function solution(board) { return answer; } let arr = [ [0, 0, 0, 0, 0, 0, 0], [0, 1, 1, 1, 1, 1, 0], [0, 0, 0, 1, 0, 0, 0], [1, 1, 0, 1, 0, 1, 1], [1, 1, 0, 0, 0, 0, 1], [1, 1, 0, 1, 1, 0, 0], [1, 0, 0, 0, 0, 0, 0], ].. 2021. 12. 3.
preorder/ inorder/ postorder 구현 어디 나와있는 건 아니고 어제 우리집 시니어랑 preorder랑 inorder랑 postorder 코드로 구현해보기했다. 헿 맴에드는 그림이 없어서 직접그림 노드안에 저렇게 값이 할당 되어 있을 때, 저 순서대로 순회 하는거다. function solution(tree) { const answer = []; function pre(index) { answer.push(tree[index]); const leftIndex = 2 * index; const rightIndex = 2 * index + 1; if (leftIndex < tree.length) pre(leftIndex); if (rightIndex < tree.length) pre(rightIndex); } pre(1); return answe.. 2021. 12. 1.
프린터 https://programmers.co.kr/learn/courses/30/lessons/42587 코딩테스트 연습 - 프린터 일반적인 프린터는 인쇄 요청이 들어온 순서대로 인쇄합니다. 그렇기 때문에 중요한 문서가 나중에 인쇄될 수 있습니다. 이런 문제를 보완하기 위해 중요도가 높은 문서를 먼저 인쇄하는 프린 programmers.co.kr 문제 설명 일반적인 프린터는 인쇄 요청이 들어온 순서대로 인쇄합니다. 그렇기 때문에 중요한 문서가 나중에 인쇄될 수 있습니다. 이런 문제를 보완하기 위해 중요도가 높은 문서를 먼저 인쇄하는 프린터를 개발했습니다. 이 새롭게 개발한 프린터는 아래와 같은 방식으로 인쇄 작업을 수행합니다. 1. 인쇄 대기목록의 가장 앞에 있는 문서(J)를 대기목록에서 꺼냅니다. 2. 나.. 2021. 11. 29.
기능개발 https://programmers.co.kr/learn/courses/30/lessons/42586 코딩테스트 연습 - 기능개발 프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 programmers.co.kr 문제 설명 프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 기능보다 먼저 개발될 수 있고, 이때 뒤에 있는 기능은 앞에 있는 기능이 배포될 때 함께 배포됩니다. 먼저 배포되어야 하는 순서대로 작업의 진도가 적힌 .. 2021. 11. 27.
728x90
728x90