꾸준한 개발자

계속적인 성장을 추구하는 개발자입니다. 꾸준함을 추구합니다.

계속 쓰는 개발 노트

알고리즘 31

자바스크립트 '수박수박수박수박수박수?'

waterMelon 함수는 정수를 인수로 전달받는다. 길이가 n이고, 수박수박수…와 같은 패턴을 유지하는 문자열을 리턴하도록 함수를 완성하라. 예를 들어 n이 4이면 ‘수박수박’을 리턴하고 3이라면 ‘수박수’를 리턴한다. function waterMelon(n) { } console.log('n이 3인 경우: '+ waterMelon(3)); console.log('n이 4인 경우: '+ waterMelon(4)); 풀이 function waterMelon(n) { let result = ''; for (let i = 1; i

자바스크립트 '문자열을 숫자로 바꾸기'

strToInt 메서드는 문자열을 인수로 전달받는다. 전달받은 문자열 인수를 숫자로 변환한 결과를 반환하도록 strToInt를 작성하라. 예를 들어 str이 ‘1234’이면 1234를 반환하고, ‘-1234’이면 -1234를 반환한다. str은 부호(+,-)와 숫자로만 구성되어 있고, 잘못된 값이 입력되는 경우는 없다. function strToInt(str) { } console.log(strToInt('1234')); // 1234 console.log(strToInt('-1234')); // -1234 풀이 function strToInt(str) { return +str; } console.log(strToInt('1234')); // 1234 console.log(strToInt('-1234')..

자바스크립트 '핸드폰번호 가리기'

핸드폰 요금 고지서에 표시할 전화번호는 개인정보 보호를 위해 맨 뒷자리 4자리를 제외한 나머지를 *으로 바꿔야 한다. 전화번호를 나타내는 문자열 str을 입력받는 hideNumbers 함수를 완성하라 예를 들어 s가 ‘01033334444’면 *******4444를 리턴하고, ‘027778888’인 경우는 *****8888을 리턴한다. function hideNumbers(str) { } console.log(hideNumbers('01033334444')); // *******4444 console.log(hideNumbers('027778888')); // *****8888 풀이 function hideNumbers(str) { return '*'.repeat(str.length - 4) + str...

자바스크립트 '이상한 문자 만들기'

toWeirdCase함수는 문자열을 인수로 전달받는다. 문자열 s에 각 단어의 짝수번째 인덱스 문자는 대문자로, 홀수번째 인덱스 문자는 소문자로 바꾼 문자열을 리턴하도록 함수를 완성하라. 예를 들어 s가 ‘hello world’라면 첫 번째 단어는 ‘HeLlO’, 두 번째 단어는 ‘WoRlD’로 바꿔 ‘HeLlO WoRlD’를 리턴한다. 주의) 문자열 전체의 짝/홀수 인덱스가 아니라 단어(공백을 기준)별로 짝/홀수 인덱스를 판단한다. function toWeirdCase(s) { } console.log(toWeirdCase('hello world')); // 'HeLlO WoRlD' console.log(toWeirdCase('my name is lee')); // 'My NaMe Is LeE' 풀이 ..

자바스크립트 '문자열 내 p와 y의 개수'

numPY함수는 대문자와 소문자가 섞여있는 문자열 s를 인수로 전달받는다. s에 존재하는 ‘p’의 개수와 ‘y’의 개수를 비교해 같으면 true, 다르면 false를 리턴하도록 함수를 완성하라. 대소문자를 구별하지 않으며 ‘p’, ‘y’ 모두 하나도 없는 경우는 항상 true를 리턴한다. 예를 들어 s가 ‘pPoooyY’면 true를 리턴하고 ‘Pyy’라면 false를 리턴한다. function numPY(s) { } console.log(numPY('pPoooyY')); // true console.log(numPY('Pyy')); // false console.log(numPY('ab')); // true console.log(numPY('')); // true console.log(numPY());..

자바스크립트 '문자열 다루기'

alphaString46 함수는 문자열 s를 매개변수로 입력받는다. s의 길이가 4 ~ 6이고, 숫자로만 구성되어 있는지 확인하는 alphaString46 함수를 완성하라. 예를 들어 s가 ‘a234’이면 false를 리턴하고 ‘1234’라면 true를 리턴한다. function alphaString46(s) { } console.log(alphaString46('1234')); // true console.log(alphaString46('9014')); // true console.log(alphaString46('723')); // false console.log(alphaString46('a234')); // false console.log(alphaString46('')); // false co..

자바스크립트 '1 ~ 10,000의 숫자 중 8이 등장하는 횟수 구하기 (Google)'

1부터 10,000까지 8이라는 숫자가 총 몇 번 나오는가? 이를 구하는 함수를 완성하라. 단, 8이 포함되어 있는 숫자의 갯수를 카운팅 하는 것이 아니라 8이라는 숫자를 모두 카운팅 해야 한다. 예를 들어 8808은 3, 8888은 4로 카운팅 해야 한다. (hint) 문자열 중 n번째에 있는 문자 : str.charAt(n) or str[n] function getCount8 () { } console.log(getCount8()); // 4000 풀이 function getCount8() { let str = ''; let num = 0; for (let i = 0; i

자바스크립트 '짝수와 홀수'

evenOrOdd 함수는 정수 num을 매개변수로 받는다. num은 1 이상의 정수이며, num이 음수인 경우는 없다. num이 짝수일 경우 ‘Even’을 반환하고 홀수인 경우 ‘Odd’를 반환하도록 evenOrOdd 함수를 완성하라. 단, if문을 사용한 답과 삼항 조건 연산자를 사용한 답 두가지를 제시하여야 한다. // if문 function evenOrOdd(num) { } console.log(evenOrOdd(2)); // Even console.log(evenOrOdd(3)); // Odd console.log(evenOrOdd(1000)); // Even // 3항 연산자 function evenOrOdd(num) { } console.log(evenOrOdd(2)); // Even cons..

자료구조와 알고리즘 (정렬) (2)

1.3 선택 정렬 선택 정렬(selection sort)은 배열의 최소값을 검색하여 배열의 왼쪽부터 순차적으로 정렬을 반복하는 정렬 알고리즘입니다. 배열이 미정렬 상태이므로 최솟값 검색에는 이진 검색이 아닌 선형 검색 알고리즘을 사용합니다. 선택 정렬은 버블 정렬보다 빠릅니다. 시간 복잡도: O(n^2) 문제 선택 정렬을 통해 주어진 배열(array)을 정렬하는 함수를 구현하라. 단, 어떠한 빌트인 함수도 사용하지 않고 for 문을 사용하여 구현하여야 한다. function selectionSort(array) { for (let i = 0; i < array.length - 1; i++) { let minIdx = i; for (let j = i + 1; j < array.length; j++) { i..