카테고리 없음

프로그래머스 13탄 -(코딩도장 3탄 구글 전화면접 문제)

Hyeon been 2023. 5. 31. 20:39

한번씩 읽고 가세요.

“ 지연되는 프로젝트에 인력을 더 투입하면 오히려 더 늦어진다. ”

- 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])
  1. solution 함수는 value라는 매개변수를 받습니다.
  2. 함수 내부에서는 배열의 filter 메서드를 사용하여 음수 값(v < 0)을 필터링한 결과와 양수 값(v >= 0)을 필터링한 결과를 결합합니다.
  3. filter 메서드는 주어진 조건에 맞는 요소들로 새로운 배열을 생성합니다.
  4. 배열의 스프레드 문법([...])을 사용하여 음수 값 배열과 양수 값 배열을 하나로 결합합니다.
  5. 결합된 배열을 반환합니다.

따라서, solution([-1, 1, 3, -2, 2])는 음수 값인 [-1, -2]를 먼저, 그 다음에 양수 값인 [1, 3, 2]를 유지한 상태로 재정렬한 결과인 [-1, -2, 1, 3, 2]를 반환합니다.

2. 숫자 출력하기

20150111을 출력합니다.
4가지 기준만 만족하면 됩니다.

  1. 코드 내에 숫자가 없어야 합니다.
  2. 파일 이름이나 경로를 사용해서는 안됩니다.
  3. 시간, 날짜 함수를 사용해서는 안됩니다.
  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 변수를 다양한 진수로 변환하고, 문자열을 특정 진수로 파싱하는 예제입니다.

  1. number 변수는 정수 값을 가지고 있습니다. (20150111)
  2. toString() 메서드를 사용하여 number 값을 특정 진수로 변환합니다.
    • number.toString(2)는 2진수로 변환한 결과를 반환합니다.
    • number.toString(8)는 8진수로 변환한 결과를 반환합니다.
    • number.toString(16)은 16진수로 변환한 결과를 반환합니다.
    • toString() 메서드의 매개변수로 진수(base)를 전달하여 변환할 수 있습니다.
  3. number.toString(33)는 33진수로 변환하려는 것이지만, 자바스크립트에서는 2진수(0부터 1까지)부터 36진수(0부터 9까지와 A부터 Z까지)까지만 지원하므로, 33진수로 변환할 수 없습니다. 이 경우, 기본적으로 10진수로 처리됩니다.
  4. parseInt('gwnae', 33)는 문자열 'gwnae'를 33진수로 해석하여 10진수로 반환합니다.
    • parseInt() 함수의 첫 번째 매개변수로 변환할 문자열을 전달합니다.
    • 두 번째 매개변수로 진수(base)를 전달하여 해당 진수로 해석합니다.
  5. ' '.charCodeAt()는 공백 문자의 아스키 코드 값을 반환합니다. (32)
  6. '!'.charCodeAt()는 느낌표 문자의 아스키 코드 값을 반환합니다. (33)
  7. parseInt('gwnae', '!'.charCodeAt())는 문자열 'gwnae'를 33진수로 해석하여 10진수로 반환합니다. 이때, 진수로 사용되는 값은 느낌표 문자의 아스키 코드 값인 33입니다.
  8. console.log(parseInt('gwnae', '!'.charCodeAt()))는 parseInt('gwnae', 33)의 결과를 출력합니다.

따라서, 코드의 실행 결과는 느낌표 문자('!')의 아스키 코드 값인 33을 진수로 사용하여 문자열 'gwnae'를 해석한 후 10진수로 변환한 결과인 20364565가 출력됩니다.