본문 바로가기

programmers

(6)
[프로그래머스] Lv1. 키패드 누르기 키배드를 누른 손가락이 왼손 엄지인지 오른손 엄지인지 순서대로 나열하기제한사항numbers 배열의 크기는 1 이상 1,000 이하입니다.numbers 배열 원소의 값은 0 이상 9 이하인 정수입니다.hand는 "left" 또는 "right" 입니다."left"는 왼손잡이, "right"는 오른손잡이를 의미합니다.왼손 엄지손가락을 사용한 경우는 L, 오른손 엄지손가락을 사용한 경우는 R을 순서대로 이어붙여 문자열 형태로 return 해주세요.나의 풀이고정되어있는 키패드 위치 분리하여 처리 (147, 369)그 외 2580의 경우 1차원의 인덱스차를 2차원상의 위치차의 계산으로 변환하여 더 가까운 값으로 처리x, y 상대좌표 없는 계산식을 활용하여 누를 키패드인덱스와 현재 엄지손가락의 위치들의 거리값을 활..
[프로그래머스] Lv2. 카펫 (javascript) 노란 바탕에 갈색 테두리를 가진 카펫의 사이즈(격자수) 구하기 규칙 중앙에는 노란색으로 칠해져 있고, 테두리 1줄은 갈색으로 칠해져있는 격자모양 카펫 제한사항 갈색 격자의 수 brown은 8 이상 5,000 이하인 자연수입니다. 노란색 격자의 수 yellow는 1 이상 2,000,000 이하인 자연수입니다. 카펫의 가로 길이는 세로 길이와 같거나, 세로 길이보다 깁니다. 나의 풀이 노란색 카펫의 사이즈만 결정되면, 갈색사이즈는 쉽게 구할 수 있음 노란색 카펫의 격자수(x, y) -> 갈색 테두리 (x*2 + y*2 + 4; 여기서 4=모서리값) x(가로)를 1부터 하나씩 증가시키며 yellow/x (y;세로) 값과 비교 가로길이가 세로길이와 같거나 큰 경우, 예상되는 갈색테두리 사이즈(tmp)를 계산 ..
[프로그래머스] Lv1. 최소직사각형 (javascript) 다양한 사이즈의 명함을 넣을 수 있는 최소 직사각형의 크기 구하기 제한사항 sizes의 길이는 1 이상 10,000 이하입니다. sizes의 원소는 [w, h] 형식입니다. w는 명함의 가로 길이를 나타냅니다. h는 명함의 세로 길이를 나타냅니다. w와 h는 1 이상 1,000 이하인 자연수입니다. 나의 풀이 각 명함의 사이즈(sizes)들 중 큰 값을 w, 작은 값을 h 로 각각 저장 w와 h의 최댓값을 구하여 곱함 function solution(sizes) { const {w, h} = sizes.reduce((a, b) => { b.sort((a, b) => +a > +b ? -1 : 0); a['w'].push(+b[0]); a['h'].push(+b[1]); return a; }, {w: [..
[프로그래머스] Lv2. 두 큐 합 같게 만들기 (javascript) 두개의 큐(queue1, queue2)합이 같아지기위한 이동횟수를 구하라 큐는 FIFO(first-in, first-out) 방식으로 처리 시간초과가 발생하여 해법 검색 후 수행 -> 투포인터 알고리즘 활용 조건 길이가 같은 두 개의 큐를 나타내는 정수배열 queue1, queue2가 매개변수로 주어짐 각 큐의 원소의 합을 같게 만들기 위해 필요한 작업의 최소횟수를 반환 단, 어떤 방법으로도 각 큐의 원소 합을 같게 만들 수 없는 경우 -1 반환 제한사항 1 ≤ queue1의 길이 = queue2의 길이 ≤ 300,000 1 ≤ queue1의 원소, queue2의 원소 ≤ 109 주의: 언어에 따라 합 계산 과정 중 산술 오버플로우 발생 가능성이 있으므로 long type 고려가 필요합니다. 나의 풀이 ..
[프로그래머스]Lv1. 신규 아이디 추천 (javascript) 입력된 아이디로부터 규칙에 맞는 아이디 추천 규칙 1단계 new_id의 모든 대문자를 대응되는 소문자로 치환합니다. 2단계 new_id에서 알파벳 소문자, 숫자, 빼기(-), 밑줄(_), 마침표(.)를 제외한 모든 문자를 제거합니다. 3단계 new_id에서 마침표(.)가 2번 이상 연속된 부분을 하나의 마침표(.)로 치환합니다. 4단계 new_id에서 마침표(.)가 처음이나 끝에 위치한다면 제거합니다. 5단계 new_id가 빈 문자열이라면, new_id에 "a"를 대입합니다. 6단계 new_id의 길이가 16자 이상이면, new_id의 첫 15개의 문자를 제외한 나머지 문자들을 모두 제거합니다. 만약 제거 후 마침표(.)가 new_id의 끝에 위치한다면 끝에 위치한 마침표(.) 문자를 제거합니다. 7단계..
[프로그래머스]Lv1. 로또의 최고 순위와 최저 순위 (javascript) 6자리의 로또의 번호 중 일부를 알아볼 수 없을 때, 최고순위 최저순위 구하기 등수 순위당첨 내용 1 6개 번호가 모두 일치 2 5개 번호가 일치 3 4개 번호가 일치 4 3개 번호가 일치 5 2개 번호가 일치 6(낙첨) 그 외 제한사항 lottos는 길이 6인 정수 배열입니다. lottos의 모든 원소는 0 이상 45 이하인 정수입니다. 0은 알아볼 수 없는 숫자를 의미합니다. 0을 제외한 다른 숫자들은 lottos에 2개 이상 담겨있지 않습니다. lottos의 원소들은 정렬되어 있지 않을 수도 있습니다. win_nums은 길이 6인 정수 배열입니다. win_nums의 모든 원소는 1 이상 45 이하인 정수입니다. win_nums에는 같은 숫자가 2개 이상 담겨있지 않습니다. win_nums의 원소들은..