공부/알고리즘&자료구조 35

항해99 알고리즘 테스트 2주차 마지막

시험문제는 총3개 중 1개를 선택하여 푸는것이였고, 2주차동안 풀었던 문제들을 혼합하여 응용한 문제였다. 그동안 알고리즘문제를 풀며 쌓인 내공으로 해당 메서드들을 써가며 문제를 풀었다. 대략적인 문제는 자연수를 입력값을 받아 각자리를 뒤집어서 위치시킨후 그 각자리수를 하나하나 더한값들을 string 형식으로 출력하는거였다. 처음엔 그냥 정수를 reverse를 써서 다 더하고 끝나는 문제가 했는데, 그게아니라 718253 이라는 숫자를 넣었다면 출력값이 '3+5+2+8+1+7=26' 와 같이 뽑아주어야했다. 문제 푸는데 30분정도 걸렸고, 검토하는데 20분정도, 영상 찍는데 20분, 올리는대 10분 정도 걸려서 총 1시간 반정도 걸린거 같다. 영상도 찍고 해설도 해야하는 과정도 있었기도했고 요번주차를 통해..

항해99 문제40번풀이 (신규 아이디 추천,프로그래머스, 카카오 blind Recruitment )

https://programmers.co.kr/learn/courses/30/lessons/72410 코딩테스트 연습 - 신규 아이디 추천 카카오에 입사한 신입 개발자 네오는 "카카오계정개발팀"에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. "네오"에게 주어진 첫 업무는 새로 programmers.co.kr 접근법 추후업데이트 코드 해석 추후업데이트 다른사람이 푼것 더보기

항해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 이 아닌 + 를 이용하여 숫자 타입으로 바꾸기로 생..