개발 공부/알고리즘 35

220623 [알고리즘] codility _ OddOccurrencesInArray (배열의 홀수 발생) / JavaScript

1. 문제 (영문) A non-empty array A consisting of N integers is given. The array contains an odd number of elements, and each element of the array can be paired with another element that has the same value, except for one element that is left unpaired. For example, in array A such that: A[0] = 9 A[1] = 3 A[2] = 9 A[3] = 3 A[4] = 9 A[5] = 7 A[6] = 9 the elements at indexes 0 and 2 have value 9, the el..

220622 [알고리즘] codility _ BinaryGap (2진수) / JavaScript

1. 문제 (영문) A binary gap within a positive integer N is any maximal sequence of consecutive zeros that is surrounded by ones at both ends in the binary representation of N. For example, number 9 has binary representation 1001 and contains a binary gap of length 2. The number 529 has binary representation 1000010001 and contains two binary gaps: one of length 4 and one of length 3. The number 20 h..

220621 [알고리즘] codility _ CyclicRotation(배열 돌리기) / JavaScript / unshift, pop 활용

1.문제 (영문) An array A consisting of N integers is given. Rotation of the array means that each element is shifted right by one index, and the last element of the array is moved to the first place. For example, the rotation of array A = [3, 8, 9, 7, 6] is [6, 3, 8, 9, 7] (elements are shifted right by one index and 6 is moved to the first place). The goal is to rotate array A K times; that is, eac..

220620 [알고리즘] 백준, 프로그래머스 깃허브 연동 / 백준허브 사용

알고리즘은 프로그래머스를 통해 약 30개정도 레벨1 단계를 풀었지만.. 잠시만 손을 놓으니 금새 어색해지게 되었다. 찾아보니 깃허브와 연동을 해서 문제를 풀 때마다 자동으로 푸쉬를 해주어 잔디를 심어주는!! 크롬 확장팩이 있었다. 확장 프로그램 이름은 백준 허브로 백준과 더불어 프로그래머스 둘다 연동이 가능하다. 1. 설치 링크 크롬 확장으로 설치를 해준다. https://chrome.google.com/webstore/detail/%EB%B0%B1%EC%A4%80%ED%97%88%EB%B8%8Cbaekjoonhub/ccammcjdkpgjmcpijpahlehmapgmphmk 백준허브(BaekjoonHub) Automatically integrate your BOJ submissions to GitHub ..

[항해 99 알고리즘 테스트] "2번. 몇 시간 몇 분 했더라?" JavaScript / Math.floor()

1. 문제 설명 현아는 항해에서 한 주 동안 몇 시간 동안 공부했는 지 기록할 수 있는 알고리즘을 만드는데 성공했다. 공부시간을 꼼꼼하게 관리하는 현아는 이번에 분 단위까지 계산할 수 있는 알고리즘을 만들기로 마음을 먹었다. 항해의 체크인 페이지에는 몇가지 조건이 있는데 이를 만족하는 알고리즘을 만들어보자. 체크아웃을 할 때 익일 시간은 24+a 로 계산한다. 즉 새벽 2시는 24+2 인 26으로 표기한다. 체크인 페이지는 새벽 5시까지 체크아웃이 되어 있지 않으면 체크아웃을 깜빡한 것으로 간주한다. 따라서 체크인 시스템은 새벽 5시 정각이나, 새벽 5시를 넘겨서 체크아웃을 하게 되면 자동으로 체크아웃을 오후 9시(21:00)로 한 것으로 처리한다. 2. 제한 조건 체크인(checkin)과 체크아웃(ch..

[항해 99 알고리즘 테스트] "1번. 전화번호 양식" JavaScript / .slice()

1. 문제 설명 CS 스터디 팀장이 된 지용이는 팀원들의 연락처를 수집하여 정리하는 도중 문제 하나를 발견했다. 지용이는 팀원들에게 전화번호를 ‘010-1234-4567’ 양식으로 제출하기를 부탁했지만 ‘01012345678’과 같이 ‘-’ 구분 없이 붙여서 제출한 사람들의 전화번호가 엑셀에서 앞에 0이 사라진 ‘1012345678’로 보이는 것이다. 지용이는 ‘1012345678’로 저장된 전화번호를 다시 ‘010-1234-5678’ 형식으로 바꾸려고 한다. 지용이를 도와줄 수 있는 알고리즘을 만들어 보자 2. 제한 조건 phone은 length는 10으로 고정됩니다. 3. 예시 입력/출력 4. 풀이 [slice 활용] 앞자리에 문자열 0을 더해주고 들어오는 문자열 번호에서 slice를 통해 0번째부터..

[프로그래머스 알고리즘] "콜라츠 추측" JavaScript / while, for

1. 문제 설명 1937년 Collatz란 사람에 의해 제기된 이 추측은, 주어진 수가 1이 될때까지 다음 작업을 반복하면, 모든 수를 1로 만들 수 있다는 추측입니다. 작업은 다음과 같습니다. 1-1. 입력된 수가 짝수라면 2로 나눕니다. 1-2. 입력된 수가 홀수라면 3을 곱하고 1을 더합니다. 2. 결과로 나온 수에 같은 작업을 1이 될 때까지 반복합니다. 예를 들어, 입력된 수가 6이라면 6→3→10→5→16→8→4→2→1 이 되어 총 8번 만에 1이 됩니다. 위 작업을 몇 번이나 반복해야하는지 반환하는 함수, solution을 완성해 주세요. 단, 작업을 500번을 반복해도 1이 되지 않는다면 –1을 반환해 주세요. 2. 제한 조건 입력된 수, num은 1 이상 8000000 미만인 정수입니다...

[프로그래머스 알고리즘] "정수 제곱근 판별" JavaScript / Math.sqrt (), Math.pow()

1. 문제 설명 임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다. n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함수를 완성하세요. 2. 제한 조건 n은 1이상, 50000000000000 이하인 양의 정수입니다. 3. 예시 입력/출력 4. 풀이 [Math.sqrt / Math.pow 활용] 만약에 n의 제곱근을 1로 나눈 나머지가 0이라면 => 정수라면 n의 제곱근에 1을 더한 값의 제곱값을 저장 그게 아니라면 -1을 저장 //Math에 두가지 메쏘드가 있는걸 알고있어서 검색해서 풀기! function solution(n) { var answer = 0; if (Math.sqrt(n) % 1 ==..

[프로그래머스 알고리즘] "하샤드 수" JavaScript / toString, split, reduce

1. 문제 설명 양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하샤드 수인지 아닌지 검사하는 함수, solution을 완성해주세요. 2. 제한 조건 x는 1 이상, 10000 이하인 정수입니다. 3. 예시 입력/출력 4. 풀이 [toString / split / reduce] x를 문자로 바꿔준다. toString ex. 10 -> '10' 배열로 바꿔준다. split("") ex '10' -> ['1','0'] reduce 메쏘드를 활용해 각 배열을 합산해 준다. 합산 할 때는 문자열로 반환하지 않게 초기값 0(숫자)으로 설정하고 더해지는 숫자..

[프로그래머스 알고리즘] "제일 작은 수 제거하기" JavaScript /Math.min(), ES6/ES2015, ES6/ES2016, .splice(), indexOf()

1. 문제 설명 정수를 저장한 배열, arr 에서 가장 작은 수를 제거한 배열을 리턴하는 함수, solution을 완성해주세요. 단, 리턴하려는 배열이 빈 배열인 경우엔 배열에 -1을 채워 리턴하세요. 예를들어 arr이 [4,3,2,1]인 경우는 [4,3,2]를 리턴 하고, [10]면 [-1]을 리턴 합니다. 2. 제한 조건 arr은 길이 1 이상인 배열입니다. 인덱스 i, j에 대해 i ≠ j이면 arr[i] ≠ arr[j] 입니다. 3. 예시 입력/출력 4. 풀이 [splice / indexOf / Math.min / if..else] 배열의 길이가 1보다 크면 배열의 값 중 최소값이 존재하는 경우 배열에서 splice (a,b) 는 a번째 부터 b만큼 삭제 라는 의미 indexOf는 해당되는 값의 ..