# Lv.1

510개의 포스트
post-thumbnail

[Javascript] LV.1 정수 내림차순으로 배치하기

문제 설명 함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. 예를들어 n이 118372면 873211을 리턴하면 됩니다. 제한 조건 n은 1이상 8000000000 이하인 자연수입니다. 입출력 예 | n | return | | --- | --- | | 118372 | 873211 | ✍ SOLUTION1 ✍ SOLUTION2 ![](https://velog.v

약 2시간 전
·
0개의 댓글
·

완주하지 못한 선수(수정 필요)

해시 내가 작성한 답 다른 답 해석 수정 필요

2일 전
·
0개의 댓글
·

[1차] 다트 게임

내가 작성한 답 다른 답 해석 숫자만 따로 빼서 배열을 생각 안해본건 아닌데... 너무 생각을 많이 했나보다...

2일 전
·
0개의 댓글
·

실패율

내가 작성한 답 다른 답 해석 나는 우선 filter를 통해 각 스테이지에 도달한 사람을 구했다. 그 이후 stage와 실패한 사람을 따로 구한 후 test 배열에 추가했다. 실패율대로 정리 한 후 answer에 stage를 추가했다. 다른 답은 x가 스테이지보다 클 경우의 숫자와 각 스테이지의 수를 구한 후 해당 값을 구했다.

2일 전
·
0개의 댓글
·

기사 단원의 무기

내가 작성한 답 다른 답 해석 처음에는 하나의 함수에서 진행했더니 시간이 너무 오래 걸렸다. 그래서 따로 구분해서 만들었다. divisors 에서 제곱근까지 i로 나눴을 때 0이 나오면 약수는 대칭적이기 때문에 count에 2를 계속 더했다. 그 이후 제곱 수 일 경우에는 중복으로 더해졌기 때문에 1을 뺐다. 원래 함수로 돌아와서 for문을 통해 number까지 반복하고 약수의 개수가 limit를 안넘을 경우에는 그대로 answer에 추가하고 넘을 경우에는 power를 추가해서 reduce 함수를 통해 모두 더했다. 시간 소요는 확실히 이게 더 빠르다.

3일 전
·
0개의 댓글
·

소수 찾기

내가 작성한 답 다른 답 해석 소수 만들기에 이어서 바로 소수 찾기가 있었다. 그래서 이전에 사용했던 에라토스테네스의 체를 사용했다. 근데 Set 함수를 이용해서 푸는 방법도 있었다. 다른 답을 해석하면 우선 Set 함수를 사용해서 중복된 값을 없애고 s에 1부터 n까지 홀수를 추가했다. 그 이후 1은 소수가 아니기에 삭제하고 2는 소수이기에 추가했다. 3부터 n의 제곱근까지 1씩 더하고 s에 j가 있을 경우 n이랑 같을 때까지 k를 2씩 곱했다. 그리고 k를 j 만큼 증가시키면서 반복했다. 그 이후 해당 숫자가 있을 경우 s에서 삭제했다. 이렇게 될 경우 2부터 n까지 소수만 남게되는데 해당 사이즈를 리턴하여 출력했다. 효율로 따지면 Set함수가 더 좋다! 대단하다 !

4일 전
·
0개의 댓글
·

소수 만들기

내가 작성한 답 다른 답 해석 다른 답과 내 답의 차이점은 Math.sqrt와 에라토스테네스의 체 사용 유무이다. 에라토스테네스의 체는 주어진 범위 내의 모든 소수를 찾기 위한 알고리즘이다. 근데 가독성은 다른 답이 좋다... 내가 쓴 답을 해석하자면 이 부분이 왜 쓰였는지가 가장 의문일 것 같다. 한 줄씩 설명하자면 우선 2와 3으로 나눠지면 소수가 아니다. 반복문을 통해서 소수인지 아닌지를 판별했는데 5부터 시작인 이유는 2,3 다음 소수는 5이기 때문이다. i * i <= number 이부분은 number가 제곱근보다 큰 약수를 찾을 필요가 없기 때문이다 이걸 다르게 작성하면 i <= Math.sqrt(number) 가 된다. i에 6씩 더하는 이유는 6의 배수는 2, 3으로 나누어 떨어지기 때문에 소수가 아닌 수로 판명할 수 있다. if문에서 i+2를 하는 이유는 에라토스테네스의 체에서는 6n-1와 6n+1의 숫자를 확인해야하기

4일 전
·
0개의 댓글
·

모의고사

내가 작성한 답 다른 답 해석

4일 전
·
0개의 댓글
·
post-thumbnail

[Javascript] LV.1 x만큼 간격이 있는 n개의 숫자

문제 설명 함수 solution은 정수 x와 자연수 n을 입력 받아, x부터 시작해 x씩 증가하는 숫자를 n개 지니는 리스트를 리턴해야 합니다. 다음 제한 조건을 보고, 조건을 만족하는 함수, solution을 완성해주세요. 제한 조건 x는 -10000000 이상, 10000000 이하인 정수입니다. n은 1000 이하인 자연수입니다. 입출력 예 | x | n | answer | | --- | --- | --- | | 2 | 5 | [2,4,6,8,10] | | 4 | 3 | [4,8,12] | | -4 | 2 | [-4, -8] | ✍ SOLUTION1 ✍ SOLUTION2 ✍ SOLUTION3 출처 : 프로그래머스 스쿨 | 코딩테스트 연습

4일 전
·
0개의 댓글
·

과일 장수

내가 작성한 답 다른 답 해석 1차로 작성한 답은 시간이 너무 많이 소요됐다. 그 이후 다른 방법을 통해 한 결과 1차로 작성한 함수보다 시간을 줄일 수 있었다. 소요 시간 차이가 왜 나는지 찾아본 결과 for 루프를 통해 배열 반복, slice와 splice를 사용하는데 이때마다 배열의 내용을 조작하고 나누는 작업이 상대적으로 오래 걸리기 때문이다. 2차로 작성한 답은 map() 메서드를 사용해서 조작과 복사가 없고 할당 후 계산만 이루어지기 때문에 성능이 더 좋았다. 다른 답은 내림차순 정렬 후 최솟값만 곱해서 더했다.

4일 전
·
0개의 댓글
·

폰켓몬

내가 작성한 답 다른 답 해석 진짜 1차원적으로 풀었다... Set 함수를 통해서 중복 요소 제거, 요소 순서 유지 등을 할 수 있는데... 굳이...

5일 전
·
0개의 댓글
·

명예의 전당 (1)

내가 작성한 답 다른 답 해석 나는 k 만큼 배열이 생성되지 않으면 push하고 내림차순하고 생성되어 있으면 최소값과 score값을 비교하여 맨 앞의 값을 삭제할 지 안할 지 정했다. 다른 답은 값을 push하고 내림차순으로 정리한 다음에 0번째부터 k번째까지 잘랐다. 와우....

5일 전
·
0개의 댓글
·

추억 점수

내가 작성한 답 다른 답 해석 나는 새로 스코어를 만들고 거기에 배정을 한 다음 이름이 있을 경우에 점수를 더하고 없을 경우에는 0을 더해서 answer 배열에 추가했다. 다른 답을 보면 yearning에서 name.indexOf(c)를 통해 해당 숫자를 가져오고 그 숫자가 없다면 undefined가 반환된다. 하지만 ?? 연산자를 통해 null 또는 undefined일 경우 0을 반환한다. 이렇게 원하는 결과값을 배열로 받을 수 있다.

5일 전
·
0개의 댓글
·

콜라 문제

내가 작성한 답 다른 답 해석 예를 들어 a,b,n이 5,2,20일 때 5병씩 4번을 가져가면 각각 2병씩 8병이 된다. 따라서, 반납했을 때의 가치는 Math.floor(n/a) * b가 된다. 다른 답과 시간 차이가 엄청 난다 아이고... 와... 진짜 머리 좋다...

5일 전
·
0개의 댓글
·

푸드 파이트 대회

내가 작성한 답 다른 답 해석 나는 너무 1차원적으로 생각했다. repeat함수로 채우고 reverse와 join으로 할 수 있는 방법이 있었는데... 조금 더 생각해봐야겠다.

6일 전
·
0개의 댓글
·
post-thumbnail

[Javascript] LV1. 정수 제곱근 판별

문제 설명 임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다. n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함수를 완성하세요. 제한 사항 n은 1이상, 50000000000000 이하인 양의 정수입니다. 입출력 예 | n | return | | --- | --- | | 121 | 144 | | 3 | -1 | 입출력 예 설명 입출력 예#1 121은 양의 정수 11의 제곱이므로, (11+1)를 제곱한 144를 리턴합니다. 입출력 예#2 3은 양의 정수의 제곱이 아니므로, -1을 리턴합니다. ✍ SOLUTION1 ✍ SOLUTION2 [출처 : 프로그래머스 스쿨 | 코딩테스트 연습](https://school.programmers.co.kr/learn/co

6일 전
·
0개의 댓글
·

두 개 뽑아서 더하기

내가 작성한 답 다른 답 해석 나는 for문과 if 문을 통해서만 풀었다. 근데 if문을 굳이 사용할 필요 없이 빈 배열을 하나 추가하고 마지막에 Set을 쓰면 됐었다. Set을 생각하지 않은건 아니다. 퍼포먼스의 차이가 생각보다 컸다.

6일 전
·
0개의 댓글
·

K 번째 수

(정렬) 내가 작성한 답 다른 답 해석 나는 배열을 자르고 난 후 정렬하여 해당 숫자를 answer 배열에 추가했다. 다른 답은 map 함수를 통해 command에 시작 위치, 종료 위치, 반환할 위치를 구조 분해하여 변수로 추출한다. 그 후 배로운 배열에 필터를 적용하여 조건에 맞는 요소만 선택하고, sort를 통해 정렬한다. 그 이후 원하는 값을 return 했다.

6일 전
·
0개의 댓글
·

문자열 내 마음대로 정렬하기

내가 작성한 답 다른 답 해석 나는 sort를 사용해서 비교 대상의 n 번째 인덱스가 같지 않을 경우에 a의 n번째 인덱스의 글자가 클 경우 양수인 1을 지정해서 순서를 바꾸고 작을 경우 순서를 유지하는 것을 사용했다. 다른 답은 localeCompare() 메서드를 사용했다. sort를 먼저 사용한 후 비교 대상의 n번째 인덱스가 같을 경우에는 비교 대상 자체를 localeCompare()을 사용해서 비교한 후 정렬 순서를 변경했고 같지 않을 경우에는 n 번째 인덱스 끼리 비교하여 정렬했다.

6일 전
·
0개의 댓글
·
post-thumbnail

[프로그래머스] 같은 숫자는 싫어

문제 >배열 arr가 주어집니다. 배열 arr의 각 원소는 숫자 0부터 9까지로 이루어져 있습니다. 이때, 배열 arr에서 연속적으로 나타나는 숫자는 하나만 남기고 전부 제거하려고 합니다. 단, 제거된 후 남은 수들을 반환할 때는 배열 arr의 원소들의 순서를 유지해야 합니다. 예를 들면, arr = [1, 1, 3, 3, 0, 1, 1] 이면 [1, 3, 0, 1] 을 return 합니다. arr = [4, 4, 4, 3, 3] 이면 [4, 3] 을 return 합니다. 배열 arr에서 연속적으로 나타나는 숫자는 제거하고 남은 수들을 return 하는 solution 함수를 완성해 주세요. 제한조건 > phone_number는 길이 4 이상, 20이하인 문자열입니다. 입출력 예시 > --

2023년 9월 23일
·
0개의 댓글
·