한번씩 읽고 가세요.
“ 지연되는 프로젝트에 인력을 더 투입하면 오히려 더 늦어진다. ”
- Frederick Philips Brooks
Mythical Man-Month 저자
728x90
1.
n개의 정수를 가진 배열이 있다. 이 배열은 양의정수와 음의 정수를 모두 가지고 있다. 이제 당신은 이 배열을 좀 특별한 방법으로 정렬해야 한다.
정렬이 되고 난 후, 음의 정수는 앞쪽에 양의정수는 뒷쪽에 있어야 한다. 또한 양의정수와 음의정수의 순서에는 변함이 없어야 한다.
예. -1 1 3 -2 2 ans: -1 -2 1 3 2.
풀이
function solution(value){
return [...value.filter(v => v < 0), ...value.filter(v => v >= 0)]
}
solution([-1, 1, 3, -2, 2])
- solution 함수는 value라는 매개변수를 받습니다.
- 함수 내부에서는 배열의 filter 메서드를 사용하여 음수 값(v < 0)을 필터링한 결과와 양수 값(v >= 0)을 필터링한 결과를 결합합니다.
- filter 메서드는 주어진 조건에 맞는 요소들로 새로운 배열을 생성합니다.
- 배열의 스프레드 문법([...])을 사용하여 음수 값 배열과 양수 값 배열을 하나로 결합합니다.
- 결합된 배열을 반환합니다.
따라서, solution([-1, 1, 3, -2, 2])는 음수 값인 [-1, -2]를 먼저, 그 다음에 양수 값인 [1, 3, 2]를 유지한 상태로 재정렬한 결과인 [-1, -2, 1, 3, 2]를 반환합니다.
2. 숫자 출력하기
20150111을 출력합니다.
4가지 기준만 만족하면 됩니다.
- 코드 내에 숫자가 없어야 합니다.
- 파일 이름이나 경로를 사용해서는 안됩니다.
- 시간, 날짜 함수를 사용해서는 안됩니다.
- 에러 번호 출력을 이용해서는 안됩니다.
let number = 20150111;
let b = number.toString(2); // 2진수로
let o = number.toString(8); // 8진수로
let h = number.toString(16); // 16진수로
number.toString(33);
parseInt('gwnae', 33)
' '.charCodeAt()
'!'.charCodeAt()
console.log(parseInt('gwnae', '!'.charCodeAt()))
풀이
number 변수를 다양한 진수로 변환하고, 문자열을 특정 진수로 파싱하는 예제입니다.
- number 변수는 정수 값을 가지고 있습니다. (20150111)
- toString() 메서드를 사용하여 number 값을 특정 진수로 변환합니다.
- number.toString(2)는 2진수로 변환한 결과를 반환합니다.
- number.toString(8)는 8진수로 변환한 결과를 반환합니다.
- number.toString(16)은 16진수로 변환한 결과를 반환합니다.
- toString() 메서드의 매개변수로 진수(base)를 전달하여 변환할 수 있습니다.
- number.toString(33)는 33진수로 변환하려는 것이지만, 자바스크립트에서는 2진수(0부터 1까지)부터 36진수(0부터 9까지와 A부터 Z까지)까지만 지원하므로, 33진수로 변환할 수 없습니다. 이 경우, 기본적으로 10진수로 처리됩니다.
- parseInt('gwnae', 33)는 문자열 'gwnae'를 33진수로 해석하여 10진수로 반환합니다.
- parseInt() 함수의 첫 번째 매개변수로 변환할 문자열을 전달합니다.
- 두 번째 매개변수로 진수(base)를 전달하여 해당 진수로 해석합니다.
- ' '.charCodeAt()는 공백 문자의 아스키 코드 값을 반환합니다. (32)
- '!'.charCodeAt()는 느낌표 문자의 아스키 코드 값을 반환합니다. (33)
- parseInt('gwnae', '!'.charCodeAt())는 문자열 'gwnae'를 33진수로 해석하여 10진수로 반환합니다. 이때, 진수로 사용되는 값은 느낌표 문자의 아스키 코드 값인 33입니다.
- console.log(parseInt('gwnae', '!'.charCodeAt()))는 parseInt('gwnae', 33)의 결과를 출력합니다.
따라서, 코드의 실행 결과는 느낌표 문자('!')의 아스키 코드 값인 33을 진수로 사용하여 문자열 'gwnae'를 해석한 후 10진수로 변환한 결과인 20364565가 출력됩니다.