전체 글
-
[프로그래머스 / JS] Lv.1 체육복Algorithm/프로그래머스 2022. 12. 27. 20:10
문제 설명 점심시간에 도둑이 들어, 일부 학생이 체육복을 도난당했습니다. 다행히 여벌 체육복이 있는 학생이 이들에게 체육복을 빌려주려 합니다. 학생들의 번호는 체격 순으로 매겨져 있어, 바로 앞번호의 학생이나 바로 뒷번호의 학생에게만 체육복을 빌려줄 수 있습니다. 예를 들어, 4번 학생은 3번 학생이나 5번 학생에게만 체육복을 빌려줄 수 있습니다. 체육복이 없으면 수업을 들을 수 없기 때문에 체육복을 적절히 빌려 최대한 많은 학생이 체육수업을 들어야 합니다. 전체 학생의 수 n, 체육복을 도난당한 학생들의 번호가 담긴 배열 lost, 여벌의 체육복을 가져온 학생들의 번호가 담긴 배열 reserve가 매개변수로 주어질 때, 체육수업을 들을 수 있는 학생의 최댓값을 return 하도록 solution 함수를..
-
[프로그래머스 / JS] Lv.1 실패율Algorithm/프로그래머스 2022. 12. 27. 18:34
문제 설명 슈퍼 게임 개발자 오렐리는 큰 고민에 빠졌다. 그녀가 만든 프렌즈 오천성이 대성공을 거뒀지만, 요즘 신규 사용자의 수가 급감한 것이다. 원인은 신규 사용자와 기존 사용자 사이에 스테이지 차이가 너무 큰 것이 문제였다. 이 문제를 어떻게 할까 고민 한 그녀는 동적으로 게임 시간을 늘려서 난이도를 조절하기로 했다. 역시 슈퍼 개발자라 대부분의 로직은 쉽게 구현했지만, 실패율을 구하는 부분에서 위기에 빠지고 말았다. 오렐리를 위해 실패율을 구하는 코드를 완성하라. 실패율은 다음과 같이 정의한다. 스테이지에 도달했으나 아직 클리어하지 못한 플레이어의 수 / 스테이지에 도달한 플레이어 수 전체 스테이지의 개수 N, 게임을 이용하는 사용자가 현재 멈춰있는 스테이지의 번호가 담긴 배열 stages가 매개변..
-
[프로그래머스 / JS] Lv.1 크레인 인형뽑기 게임Algorithm/프로그래머스 2022. 12. 27. 18:26
문제 설명 게임개발자인 "죠르디"는 크레인 인형뽑기 기계를 모바일 게임으로 만들려고 합니다. "죠르디"는 게임의 재미를 높이기 위해 화면 구성과 규칙을 다음과 같이 게임 로직에 반영하려고 합니다. 게임 화면은 "1 x 1" 크기의 칸들로 이루어진 "N x N" 크기의 정사각 격자이며 위쪽에는 크레인이 있고 오른쪽에는 바구니가 있습니다. (위 그림은 "5 x 5" 크기의 예시입니다). 각 격자 칸에는 다양한 인형이 들어 있으며 인형이 없는 칸은 빈칸입니다. 모든 인형은 "1 x 1" 크기의 격자 한 칸을 차지하며 격자의 가장 아래 칸부터 차곡차곡 쌓여 있습니다. 게임 사용자는 크레인을 좌우로 움직여서 멈춘 위치에서 가장 위에 있는 인형을 집어 올릴 수 있습니다. 집어 올린 인형은 바구니에 쌓이게 되는 데,..
-
[프로그래머스 / JS] Lv.1 키패드 누르기Algorithm/프로그래머스 2022. 12. 27. 16:22
문제 설명 스마트폰 전화 키패드의 각 칸에 다음과 같이 숫자들이 적혀 있습니다. 이 전화 키패드에서 왼손과 오른손의 엄지손가락만을 이용해서 숫자만을 입력하려고 합니다. 맨 처음 왼손 엄지손가락은 * 키패드에 오른손 엄지손가락은 # 키패드 위치에서 시작하며, 엄지손가락을 사용하는 규칙은 다음과 같습니다. 엄지손가락은 상하좌우 4가지 방향으로만 이동할 수 있으며 키패드 이동 한 칸은 거리로 1에 해당합니다. 왼쪽 열의 3개의 숫자 1, 4, 7을 입력할 때는 왼손 엄지손가락을 사용합니다. 오른쪽 열의 3개의 숫자 3, 6, 9를 입력할 때는 오른손 엄지손가락을 사용합니다. 가운데 열의 4개의 숫자 2, 5, 8, 0을 입력할 때는 두 엄지손가락의 현재 키패드의 위치에서 더 가까운 엄지손가락을 사용합니다. 4..
-
[ 복잡도 ] 정렬 알고리즘의 복잡도Computer Science/자료 구조 2022. 12. 26. 21:43
정렬 알고리즘에 따른 복잡도 Algorithms space complexity time complexity 최악 최선 평균 최악 bubble O(1) O(n) O(n^2) O(n^2) heap O(1) O(n log n) O(n log n) O(log n) insertion O(1) O(n n) O(n^2) O(n^2) merge O(n) O(n log n) O(n log n) O(log n) quick O(log n) O(n log n) O(n log n) O(n^2) selection O(1) O(n^2) O(n^2) O(n^2) shell O(1) O(n) O(n^1.25) O(n^1.25) smooth O(1) O(n) O(n log n) O(n log n) 자료 구조 별 시간 복잡도 Big-O ..
-
[ 복잡도 ] 시간 복잡도와 공간 복잡도Computer Science/자료 구조 2022. 12. 26. 19:36
컴퓨터 과학에서 "복잡도"란, 문제를 풀거나 알고리즘을 푸는데 필요한 리소스를 나타낸다. 이러한 복잡도는 문제를 푸는데 걸리는 시간을 나타내는 "시간 복잡도"와 문제를 해결하는데 필요한 메모리/스토리지 양을 나타내는 "공간 복잡도" 이 두가지를 포함하여 다양한 측면에서 평가될 수 있다. 1. 시간 복잡도 시간 복잡도는 문제를 풀거나 알고리즘을 실행할 때 필요한 시간의 양을 나타내며, 일반적으로 입력 크기에 따라 측정된다. 이러한 시간 복잡도를 표기하기 위해 Big-O(상한 점근), Big-Ω(하한 점근), Big-θ(평균) 등의 표기법이 있는데, 주로 사용되는 것은 최악의 경우까지 고려할 수 있는 Big-O 표기법이다. big O notation : 빅-오 표기법에서는 복잡도는 입력 (n)에 따라 평가되..
-
[JS 메서드] 진법변환 - toString(), parseInt()Javascript/메서드 2022. 12. 26. 17:13
decimal.toString(radix) decimal을 radix진법으로 변환한 뒤 문자열로 반환한다. (1 < radix < 37, 자연수) BigInt()에도 적용 가능하다. 예시) let baseTenInt = 10; console.log(baseTenInt.toString(2)); // "1010"이 출력됩니다 let bigNum = BigInt(20); console.log(bigNum.toString(2)); // "10100"이 출력됩니다 parseInt(string, radix) radix 진법의 string을 10진수 정수로 반환한다. 예시) let string = "1010"; let result = parseInt(string, 2); console.log(result) // 10