Programmers 36

짝지어 제거하기 ( Level 2, JavaScript, 2017 팁스타운 )

짝지어 제거하기 ( Level 2 ) Programmers 2017 팁스타운 ( JavaScript ) 문제 링크 나의 풀이 function solution(s) { const stack = [] for ( let i = 0; i < s.length; i++ ) { s[i] === stack[stack.length-1] ? stack.pop() : stack.push(s[i]) } return stack.length ? 0 : 1 } 문자열 s에서 하나씩 체크하며 stack의 마지막 요소와 같다면 제거한다 다르다면 스택에 추가 스택의 길이 여부로 전부 제거됐는지 확인

예상 대진표 ( Level 2, JavaScript, 2017 팁스타운 )

예상 대진표 ( Level 2 ) Programmers 2017 팁스타운 ( JavaScript ) 문제 링크 나의 풀이 function solution(n,a,b) { let count = 0, temp = a; if ( b < a ) { a = b b = temp } while ( true ) { if ( a % 2 && Math.abs(b-a) === 1 ) return count+1 a = a % 2 ? (a + 1)/2 : a/2 b = b % 2 ? (b + 1)/2 : b/2 count += 1 } } a,b 대소 비교 후 작은것을 a 에 넣어준다. 반복문을 통해 a와 b를 홀수, 짝수를 판별해 값을 줄여주고 이 때 반복 횟수를 count 를 통해 저장한다 a,b가 1이 차이나면서 a가 대진..

Programmers Level 2 연습문제모음 ( JavaScript )

Level 2 연습문제 ( JavaScript ) 작성한 코드보다 더 좋은 코드가 있음을 미리 알려드리며, 코드의 해설이 필요하신 분은, 댓글 남겨주시면 적어놓겠습니다. 목차 N개의 최소공배수 JadenCase 문자열 만들기 행렬의 곱셈 피보나치 수 최솟값 만들기 최댓값과 최솟값 숫자의 표현 땅따먹기 다음 큰 숫자 올바른 괄호 124 나라의 숫자 풀이 1. N개의 최소공배수 function solution(arr) { const gcd = (a, b) => b ? gcd(b, a % b) : a return arr.reduce((a, b) => a * b / gcd(a, b)) } 2. JadenCase 문자열 만들기 function solution(s) { return s.split(' ').map(a..

모의고사 ( Level 1, brute force, JavaScript )

모의고사 문제 링크 문제 설명 수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 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 하도록 sol..

H-Index ( Level 2, sort, JavaScript )

H-Index 문제 링크 문제 설명 H-Index는 과학자의 생산성과 영향력을 나타내는 지표입니다. 어느 과학자의 H-Index를 나타내는 값인 h를 구하려고 합니다. 위키백과1에 따르면, H-Index는 다음과 같이 구합니다. 어떤 과학자가 발표한 논문 n편 중, h번 이상 인용된 논문이 h편 이상이고 나머지 논문이 h번 이하 인용되었다면 h의 최댓값이 이 과학자의 H-Index입니다. 어떤 과학자가 발표한 논문의 인용 횟수를 담은 배열 citations가 매개변수로 주어질 때, 이 과학자의 H-Index를 return 하도록 solution 함수를 작성해주세요. 제한사항 과학자가 발표한 논문의 수는 1편 이상 1,000편 이하입니다. 논문별 인용 횟수는 0회 이상 10,000회 이하입니다. 입출력 예..

가장 큰 수 ( Level 2, sort, JavaScript )

가장 큰 수 문제 링크 문제 설명 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 수는 6210입니다. 0 또는 양의 정수가 담긴 배열 numbers가 매개변수로 주어질 때, 순서를 재배치하여 만들 수 있는 가장 큰 수를 문자열로 바꾸어 return 하도록 solution 함수를 작성해주세요. 제한 사항 numbers의 길이는 1 이상 100,000 이하입니다. numbers의 원소는 0 이상 1,000 이하입니다. 정답이 너무 클 수 있으니 문자열로 바꾸어 return 합니다. 입출력 예 numbers re..

K번째수 ( Level 1, sort, JavaScript )

K번째수 문제 링크 문제 설명 배열 array의 i번째 숫자부터 j번째 숫자까지 자르고 정렬했을 때, k번째에 있는 수를 구하려 합니다. 예를 들어 array가 [1, 5, 2, 6, 3, 7, 4], i = 2, j = 5, k = 3이라면 array의 2번째부터 5번째까지 자르면 [5, 2, 6, 3]입니다. 1에서 나온 배열을 정렬하면 [2, 3, 5, 6]입니다. 2에서 나온 배열의 3번째 숫자는 5입니다. 배열 array, [i, j, k]를 원소로 가진 2차원 배열 commands가 매개변수로 주어질 때, commands의 모든 원소에 대해 앞서 설명한 연산을 적용했을 때 나온 결과를 배열에 담아 return 하도록 solution 함수를 작성해주세요. 제한사항 array의 길이는 1 이상 1..

Programmers Level 1 연습문제모음 ( JavaScript )

Level 1 연습문제 ( JavaScript ) 작성한 코드보다 더 좋은 코드가 있음을 미리 알려드리며, 코드의 해설이 필요하신 분은, 댓글 남겨주시면 적어놓겠습니다. 목차 직사각형 별찍기 x만큼 간격이 있는 n개의 숫자 행렬의 덧셈 핸드폰 번호 가리기 하샤드 수 평균 구하기 콜라츠 추측 최대공약수와 최소공배수 짝수와 홀수 제일 작은 수 제거하기 정수 제곱근 판별 정수 내림차순으로 배치하기 자연수 뒤집어 배열로 만들기 자릿수 더하기 이상한 문자 만들기 약수의 합 시저 암호 문자열을 정수로 바꾸기 수박수박수박수박수박수? 소수 찾기 서울에서 김서방 찾기 문자열 다루기 기본 문자열 내림차순으로 배치하기 문자열 내 p와 y의 개수 문자열 내 마음대로 정렬하기 두 정수 사이의 합 나누어 떨어지는 숫자 배열 같은..

이중우선순위큐 ( Level 3, heap, JavaScript )

이중우선순위큐 문제 링크 문제 설명 이중 우선순위 큐는 다음 연산을 할 수 있는 자료구조를 말합니다. 명령어 수신 탑(높이) I 숫자 큐에 주어진 숫자를 삽입합니다. D 1 큐에서 최댓값을 삭제합니다. D -1 큐에서 최솟값을 삭제합니다. 이중 우선순위 큐가 할 연산 operations가 매개변수로 주어질 때, 모든 연산을 처리한 후 큐가 비어있으면 [0,0] 비어있지 않으면 [최댓값, 최솟값]을 return 하도록 solution 함수를 구현해주세요. 제한사항 operations는 길이가 1 이상 1,000,000 이하인 문자열 배열입니다. operations의 원소는 큐가 수행할 연산을 나타냅니다. 원소는 “명령어 데이터” 형식으로 주어집니다.- 최댓값/최솟값을 삭제하는 연산에서 최댓값/최솟값이 둘 ..