코딩테스트

코딩테스트

[JS] 귤 고르기

난이되: Lv.2 문제: https://school.programmers.co.kr/learn/courses/30/lessons/138476#qna 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 알고리즘 1. Map이나 Object로 무게별 귤 개수를 센다. 2. 개수를 기준으로 내림차순 정렬한다. 3. 한 상자에 담으려는 귤 개수인 k개가 될 때까지 2.의 맨 앞부터 더한다. 몇 번 더했는지가 귤 크기의 종류 수이므로 이 문제의 정답이 된다. 코드 Map으로 구현 function solution(k, tangerine) { var answer = 0; ..

코딩테스트

[JS] N개의 최소공배수

난이도: Lv.2 문제: https://school.programmers.co.kr/learn/courses/30/lessons/12953 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 알고리즘 바로 다음에 있는 수와 최소공배수를 구하는 과정을 배열의 끝에 도달할때까지 반복한다. 최소공배수는 소인수분해 하지않고 초등학생 시절 배웠던 것처럼 덧셈으로 구한다. 예시로 2와 3의 최소공배수를 구해보자. (2, 3) → (4, 3) → (4, 6) → (6, 6) 으로 최소공배수 6을 구한다. 두 수를 비교해서 더 작은 수만 더해준다. 코드 function so..

코딩테스트

[JS] 예상 대진표

알고리즘 a의 번호가 b의 번호보다 클 수도 있다. 그래서 뭐가 더 작고 큰지 알아야 한다. (주저리에서 더 자세히 쓴다.) 1. 다음 라운드에 진출할 경우 배정받는 번호는 (n + 1) / 2이다. 2. A, B 중 더 작은 번호를 배정받은 사람의 번호가 홀수이고, 더 큰 번호를 배정받은 사람의 번호가 더 작은 번호를 배정받은 사람의 번호 + 1이면 그 라운드에서 만난다. 코드 function solution(n, a, b) { var answer = 0; let less = Math.min(a, b); let greater = Math.max(a, b); while (true) { if (less % 2 === 1 && less + 1 === greater) { return answer + 1; } ..

코딩테스트

[JS] 구명보트

난이도: Lv.2 문제: https://school.programmers.co.kr/learn/courses/30/lessons/42885 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 알고리즘 최선의 상황은 2명씩 타는 보트가 최대한 많은 것이다. 한 보트에 두 명씩 태울 때 최선은 가장 가벼운 사람과 가장 무거운 사람을 같이 태우는 것이다. 먼저, 사람들의 몸무게를 담은 배열 people을 정렬한다. 다음으로, 가장 가벼운 사람과 가장 무거운 사람이 같이 탈 수 있는지 확인해야 한다. 둘 중 가벼운 사람의 인덱스는 i, 무거운 사람의 인덱스는 j라고 ..

코딩테스트

[JS] 점프와 순간이동

난이도: Lv.2 문제: https://school.programmers.co.kr/learn/courses/30/lessons/12980 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 알고리즘 결론부터 말하면 입력으로 주어진 N을 2진수로 변환했을 때의 1의 개수가 건전지 사용량과 동일하다. 순간이동을 하는 위치가 현재까지 온 거리의 두 배이기 때문이다. 두 가지 경우를 생각해 보자. (n은 짝수로 가정, n이 홀수면 상황이 반대) 1. n까지 가야하는데, n/2까지 왔을 때 → 순간이동 2. n+1까지 가야하는데, n/2까지 왔을 때 → 순간이동 후 ..

코딩테스트

[JS] 영어 끝말잇기

난이도: Lv.2 문제: https://school.programmers.co.kr/learn/courses/30/lessons/12981 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 알고리즘 이 문제에서는 검색이 빨라야할 것 같아서 해시 구조를 사용했다. 끝말잇기의 성공 조건은 두가지다. 1. 앞 단어의 마지막 문자와 말할 단어의 첫 문자가 일치해야한다. 2. 동일한 단어를 사용할 수 없다. 성공하면 해시맵에 (단어, 단어를 말한 사람)을 저장한다. 아무도 틀리지 않았을 경우 [0, 0]을 반환하고, 누군가 틀렸을 경우 틀린 사람의 번호와 몇 번째 차..

코딩테스트

[JS] 카펫

난이도: Lv.2 문제: https://school.programmers.co.kr/learn/courses/30/lessons/42842 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 알고리즘 카펫은 n x m 이므로 갈색 격자 수와 노란색 격자 수를 합치면 n x m이다. 따라서 전체 격자 수의 약수 중에서 정답이 존재한다. 갈색 격자의 수는 (n x 2) + (전체격자수 / n - 2) x 2 이다. 이때 전체격자수 / n이 m이다. 전체 격자 수의 약수 중에서 잘색 격자 수를 계산했을 때 일치하는 것이 정답이다. 문제에서 카펫의 가로 길이가 세로 ..

코딩테스트

[JS] 짝지어 제거하기

난이도: Lv.2 문제: https://school.programmers.co.kr/learn/courses/30/lessons/12973 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 알고리즘 스택 맨 위에 있는 문자와 현재 넣을 문자가 일치하면 스택 맨 위에 있는 문자를 삭제하고 현재 문자를 넣지 않는다. 문자열의 모든 문자에 대해 수행한 후 스택에 문자가 남아있으면 결과값이 0, 남아있지 않으면 결과값 1을 반환한다. 코드 function solution(s) { if (s.length % 2 === 1) { return 0; } const stac..

코딩테스트

[JS] 피보나치 수

난이도: Lv.2 문제: https://school.programmers.co.kr/learn/courses/30/lessons/12945 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 알고리즘 피보나치 수를 계산할 때 배열에 액세스하고 계산 결과를 1234567로 나머지 연산하여 push한다. 나머지 연산을 해서 push하는 이유는 n이 커지면 피보나치 수열의 결과값에 오버플로우가 발생하기 때문 코드 function solution(n) { const fiboArr = [0, 1]; for (let i = 2; i

코딩테스트

[JS] 다음 큰 숫자

난이도: Lv.2 문제: https://school.programmers.co.kr/learn/courses/30/lessons/12911 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 알고리즘 1의 개수를 카운팅 하는 방법 1. toString() 함수로 2진수 문자열로 변환 2. 1을 정규표현식을 사용하여 replace() 함수로 0 제거 3. 2의 길이 구하기 다음 큰 숫자 구하는 방법 n + 1인 자연수부터 2진수의 1의 개수를 카운팅하여 n을 2진수로 변환한 것의 1의 개수와 동일한지 확인 코드 function solution(n) { let a..

미안하다 강림이 좀 늦었다
'코딩테스트' 카테고리의 글 목록 (6 Page)