본문 바로가기

프로그래머스6

[프로그래머스] 최댓값과 최솟값 처리조건 더보기 https://programmers.co.kr/learn/courses/30/lessons/12939 풀이 공백으로 나눠져있으니 공백을 기준으로 split한다. 이후 map를 통해 각각 요소를 모두 number타입으로 바꾼뒤 Math.max~min을 사용해 최소와 최대값을 만들고 이를 템플릿 리터럴형으로 백틱에 담아 리턴시킨다. function solution(s) { s = s.split(" "); s = s.map((el) => { return Number(el); }); return `${Math.min(...s)} ${Math.max(...s)}`; } 2022. 5. 3.
[프로그래머스] 다음 큰 숫자 처리조건 더보기 https://programmers.co.kr/learn/courses/30/lessons/12911 풀이 n으로 입력받은 숫자를 toString으로 2진수 변환하고 2진수 자리마다 1의 갯수를 카운트한다. 이후 while문을 돌리면서 n을 1씩 올려주며 해당 n에서도 2진수변환후 1의 갯수를 카운트하고 앞전 1의 갯수와 같다면 break하고 현재 n을 리턴해주면 된다. 쉽다. function solution(n) { let standardV = n.toString(2); let standardC = 0; for (one of standardV) { if (one === "1") standardC++; } while (1) { n++; let standardV2 = n.toString(2.. 2022. 5. 3.
[프로그래머스] 스킬트리 처리조건 더보기 https://programmers.co.kr/learn/courses/30/lessons/49993 풀이 skill을 split하여 선행 스킬 순서를하나하나 쪼개어 배열로 만들어준다. 또한 skill_trees도 for문을 돌며 하나의 스킬트리 원소마다 올바른 순서인지 확인할 것이기 때문에 이것도 한 스킬트리원소를 순회할 때 마다 split으로 쪼개줄것이다. 배열의 교집합을 사용하면 편할 것 같다고 생각했다. 또한 조건도 잘봐야한다. 스킬은 중복해서 주어지지 않으며 선행스킬순서가 CBD라면 스킬트리요소는 BD로 C가없어도 순서대로 이어지니 문제없는 스킬트리요소이다. 스킬이 CBD이고 스킬트리요소가 BACDE일때 교집합을 스킬트리요소 기준으로 구하면 스킬트리요소에서 선행스킬 순서에 상관없.. 2022. 5. 1.
[프로그래머스] n^2 배열 자르기 처리조건 더보기 https://programmers.co.kr/learn/courses/30/lessons/87390 풀이 처음에는 주먹구구식방법으로 입력값 n만큼 일차원배열을 가진 이차원배열을 만들고 해당 일차원 배열마다 내부에 1~n만큼 가득채웠다. 그후 이중 for문을 돌면서 완전한 2차원배열을 만들고 1차원배열로 분해해 모두를 concat한 뒤 slice로 letf부터 right까지 짤라서 리턴하려고 했다. 이렇게 1~n까지 들어간 이차원 배열을 만들고 노란색부분만 아래처럼 for문을 돌려 바꿔준뒤 완전한 이차원 배열을 만들고자했다. function solution(n, left, right) { const answer = new Array(n).fill().map((_, index) => { r.. 2022. 4. 30.
[프로그래머스] 점프와 순간 이동 처리조건 더보기 https://programmers.co.kr/learn/courses/30/lessons/12980 풀이 우선 처리조건을 잘 이해하며 규칙성을 잘 찾아야한다. 1칸씩 이동할 때마다 1개의 배터리를 소모하고 x2씩 점프할 때는 배터리를 소모하지않으며 입력값과 정확히 같아져야한다. 입력값 5000을 기준으로 최소한의 건전지 사용을 구해보자 쉽게 생각해보면 1칸씩 이동할 때는 배터리를 소모하므로 최대한 이 1칸씩 이동하는 행위는 줄이고, 2칸씩 점프하는건 멀리이동할 수 있으면서 배터리소모가 없으니 최대한 많이 이 행위를 해야할 것이다. 그렇다면 5000을 어떻게 이 1칸이동을 최소화하고 2칸이동을 최대화할까? 5000을 2로 나눠가면서 홀수가 나오면 -1를 빼주며 부득이하게 1칸이동을 해주며.. 2022. 4. 29.
[프로그래머스] 이진 변환 반복하기 처리조건 더보기 https://programmers.co.kr/learn/courses/30/lessons/70129?language=javascript 풀이 처음 조건은 현재 s에 0이 있는지 확인 후 있다면 0을 모두 제거하고 제거한 0만큼 카운터를 쌓아준다. 그리고 남은 1들의 길이를 잰 다음 해당 길이를 다시 2진수로 바꾸면 1과0로 조합된 이진수형태가 될 것이다. 다시 여기서 처음 조건문부터 반복해주어야하며 길이가 1이 될 때 반복을 종료하면 된다. 우선 01110을 입력값 기준으로 생각해보자. 들어온 값에 0이 포함됐으므로 0을 제거해주어야한다. 제거한 0의 카운터를 +2해준다. 111만 남게 되고 111의 길이인 3을 이진형태로 바꾸면 11이 된다. 11은 0이 포함되어 있지 않다. 바로 길.. 2022. 4. 29.