공부 53

항해99 문제37번풀이 (소수 만들기 , 프로그래머스)

https://programmers.co.kr/learn/courses/30/lessons/12977 코딩테스트 연습 - 소수 만들기 주어진 숫자 중 3개의 수를 더했을 때 소수가 되는 경우의 개수를 구하려고 합니다. 숫자들이 들어있는 배열 nums가 매개변수로 주어질 때, nums에 있는 숫자들 중 서로 다른 3개를 골라 더했을 때 programmers.co.kr +6점 내가 푼식: 접근 완전 탐색, Brute Force 코드 풀이

항해99 문제31번풀이 (같은 숫자는 싫어,프로그래머스)

https://programmers.co.kr/learn/courses/30/lessons/12906 코딩테스트 연습 - 같은 숫자는 싫어 배열 arr가 주어집니다. 배열 arr의 각 원소는 숫자 0부터 9까지로 이루어져 있습니다. 이때, 배열 arr에서 연속적으로 나타나는 숫자는 하나만 남기고 전부 제거하려고 합니다. 단, 제거된 후 남은 programmers.co.kr 접근법 처음에 중복제거 메서드가 있는지 찾아보았고, filter, indexof,includes 등등 여러 방법이 있었다. 그중 filter 를 쓰기로 결정하였고, 인덱스마다 같은지 체크하여 같지 않은 값들만 새로운 배열에 추가하여 만들기로 함. filter기능과 파라미터로 받는 callback function, value, index..

항해99 문제30번풀이 (최소직사각형,프로그래머스)

https://programmers.co.kr/learn/courses/30/lessons/86491 코딩테스트 연습 - 최소직사각형 [[10, 7], [12, 3], [8, 15], [14, 7], [5, 15]] 120 [[14, 4], [19, 6], [6, 16], [18, 7], [7, 11]] 133 programmers.co.kr 내가푼 방식: 접근법 가로 세로중 가장 큰 수를 일단 찾고 그 max 값을 기준으로 잡고 max값을 가진 명함의 나머지 길이를 다른 명함들의 가로,세로 와 비교를 한다, 이때 각각의 명함들의 최소값인 것을 max명함의 나머지길이와 비교하여 다른 명함의 최소값이 크다면 그 길이만 max값을 가진 명함의 다른 길이에 교체한다. 왜 각각의 명함의 최소값과 max값을 가진..

항해99 문제28번풀이 (하샤드 수,프로그래머스)

https://programmers.co.kr/learn/courses/30/lessons/12947 코딩테스트 연습 - 하샤드 수 양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하 programmers.co.kr 내가푼 방법: 접근 두자리수의 각각 숫자를 더한값에 원래 값을 나눴을때 나머지가 있는지 없는지에 따라 true, false를 반환하는것을 생각 정수로 받기때문에, 각 숫자를 나누기위해서 string으로 만들어주고, 자릿수마다 들어간 값을 하나하나 더한것을 기존 숫자와 나눈것에서 반환값을 만듬, 제한을 체크 1이상 10000이하 풀이 2..

항해99 문제27번풀이 (콜라츠 추측,프로그래머스)

https://programmers.co.kr/learn/courses/30/lessons/12943 코딩테스트 연습 - 콜라츠 추측 1937년 Collatz란 사람에 의해 제기된 이 추측은, 주어진 수가 1이 될때까지 다음 작업을 반복하면, 모든 수를 1로 만들 수 있다는 추측입니다. 작업은 다음과 같습니다. 1-1. 입력된 수가 짝수라면 2 programmers.co.kr 내가 푼 방법: +6점 맞음 접근 이미 문제에서 콜라츠의 법칙을 설명해주었기때문에 그대로 실행하면 된다고 생각했다 if문을 통해 % 이용 짝수 홀수 나누고, 짝수면 /2 하고 count++, 홀수면 *3 +1 하고 count++ 그리고 만족하는 값이 나올때까지 while(1) 로 무한 반복하기로 정함 풀이 2줄. 몇번을 실행했는지 ..

항해99 문제33번풀이 (로또의 최고 순위와 최저 순위,프로그래머스)

https://programmers.co.kr/learn/courses/30/lessons/77484 코딩테스트 연습 - 로또의 최고 순위와 최저 순위 로또 6/45(이하 '로또'로 표기)는 1부터 45까지의 숫자 중 6개를 찍어서 맞히는 대표적인 복권입니다. 아래는 로또의 순위를 정하는 방식입니다. 1 순위 당첨 내용 1 6개 번호가 모두 일치 2 5개 번호 programmers.co.kr +6점 얻음. 내가 푼 방법: 접근법 미리 알고리즘과 원하는 기능이나 예외등을 구상하기로함 1. 각각 입력받은 lottos 의 배열과 win_nums 배열중 일치하는 개 몇개 인지 체크 (includes 사용) 2. 비교후 나온 일치갯수가 최소 0에서 최대 6개 인것을 일치할때마다 cnt++ 카운트해주었다. 없으면..

항해99 문제26번풀이 (제일 작은수 제거하기,프로그래머스)

https://programmers.co.kr/learn/courses/30/lessons/12935 코딩테스트 연습 - 제일 작은 수 제거하기 정수를 저장한 배열, arr 에서 가장 작은 수를 제거한 배열을 리턴하는 함수, solution을 완성해주세요. 단, 리턴하려는 배열이 빈 배열인 경우엔 배열에 -1을 채워 리턴하세요. 예를들어 arr이 [4,3,2,1 programmers.co.kr 참고하고 푼것: 접근법 숫자가 들어있는 배열이 들어갔을때 최소값을 찾는것과 어떻게하면 그 최소값을 배열에서 뺄수있을까 먼저 생각하였다. 이때 그전까지 써보지 않았던 reduce 메서드를 사용하여 입력한 배열의 인덱스 값들을 차례대로 검사하며 min 이라는 곳에 조건에 따른 값을 넣을려고 했다. 이떄 최소값을 넣어야..

항해99 문제24번풀이 (정수 내림차순으로 배치하기,프로그래머스)

https://programmers.co.kr/learn/courses/30/lessons/12933 코딩테스트 연습 - 정수 내림차순으로 배치하기 함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. 예를들어 n이 118372면 873211을 리턴하면 됩니다. 제한 조건 n은 1이 programmers.co.kr 내가 푼식: 접근법 문제를 봤을때 메서드를 활용하면 되겠다 생각했다. 숫자를 문자열로 바꾸는 방법이 많은데 이땐 메서드 보단 순수 자바스크립트 동적 타입 특성을 이용하기로했고, 그다음부턴 split,sort,join 을 사용한후 string 상태를 toString 이 아닌 + 를 이용하여 숫자 타입으로 바꾸기로 생..

항해99 문제22번풀이 (자릿수 더하기,프로그래머스)

https://programmers.co.kr/learn/courses/30/lessons/12931 코딩테스트 연습 - 자릿수 더하기 자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요. 예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다. 제한사항 N의 범위 : 100,000,000 이하의 자연수 입출 programmers.co.kr 내가 푼방식: 접근 입력한 숫자의 각 자리수마다 더해야 하기때문에 split 을 이용하여 분리해야겠다고 생각이 들었고 분리 하기위해서는 number 형에서 string 타입으로 바꿔줘야하기때문에 toString을 쓰기로 생각했다. split을 사용하여 나눌때는 ''으로 한개의 문자열로 쪼..

항해99 문제20번풀이 (완주하지 못한 선수,프로그래머스)

1차 실패 일단 원하는 구현은 했지만 효율성에서 실패가 떴다. 효율성 테스트가 실패 한 원인은 시간 초과 라고 뜨는데, 검색해보고 찾아보고 했을때 내린 결론은 1. 메서드를 많이 쓰면 구동시간이 오래걸린다는점. 2. 시간복잡도와 공간복잡도가 있는데 이때 2중 for문 (처음 for문과 includes 로 확인하므로 2중)으로 Big O 에서 n^2 에 해당하기 때문에 Quadratic Time 에 해당하게 된다고 생각한다. 3. 따라서 queue, stack, tree, 시간 복잡도, 공간 복잡도 등등 개념을 잡고 다시 코딩 해야한다. 아래는 팀원 분의 코딩으로 실현되는 것중 하나이다 https://jann2codingdiary.tistory.com/14 항해99 2주차 알고리즘풀이 5 완주하지 못한 선..