프로그래머스

프로그래머스 13일차

ture403 2023. 5. 31. 22:55

- Frederick Philips Brooks
Mythical Man-Month 저자
728x90
반응형

가장 큰 수 찾기

문제

정수 배열 array가 매개변수로 주어질 때, 가장 큰 수와 그 수의 인덱스를 담은 배열을 return 하도록 solution 함수를 완성해보세요.

 

정답풀이

function solution(array) {
  let max = Number.MIN_SAFE_INTEGER;
  let index = -1;
  
  for (let i = 0; i < array.length; i++) {
    if (array[i] > max) {
      max = array[i];
      index = i;
    }
  }
  
  return [max, index];
}

먼저, max 변수를 Number.MIN_SAFE_INTEGER로 초기화합니다. 이는 최댓값을 추적하기 위한 초기값으로 설정됩니다. index 변수를 -1로 초기화합니다. 이는 최댓값의 인덱스를 추적하기 위한 초기값으로 설정됩니다.

array 배열을 순회하는 반복문을 실행합니다. 반복문에서는 현재 요소 array[i]가 max보다 큰지 확인합니다. 만약 크다면, max와 index 값을 해당 요소와 인덱스로 업데이트합니다.

반복문이 모두 실행된 후 최종적으로 [max, index] 배열을 반환합니다. 이 배열은 주어진 배열 array에서 가장 큰 수와 그 수의 인덱스를 담고 있습니다.

 

인덱스 바꾸기

문제

문자열 my_string과 정수 num1, num2가 매개변수로 주어질 때, my_string에서 인덱스 num1과 인덱스 num2에 해당하는 문자를 바꾼 문자열을 return 하도록 solution 함수를 완성해보세요.

문제풀이

function solution(my_string, num1, num2) {
	my_string = my_string.split('');
	[ my_string[num1], my_string[num2] ] = [ my_string[num2], my_string[num1] ];
	return my_string.join('');
}

 

함수는 문자열 my_string을 배열로 변환한 뒤, num1과 num2의 위치에 해당하는 요소를 서로 교환합니다. 이를 위해 배열 구조 분해 할당을 사용하고, 임시 변수를 사용하지 않고 요소를 교환합니다.

마지막으로, 교환된 배열을 다시 문자열로 변환하여 반환합니다.

예를 들어, my_string이 "abcd"이고, num1이 1, num2가 3인 경우, "a"와 "d"의 위치를 교환하여 "adcb"를 반환합니다.

배열 회전시키기

문제

정수가 담긴 배열 numbers와 문자열 direction가 매개변수로 주어집니다. 배열 numbers의 원소를 direction방향으로 한 칸씩 회전시킨 배열을 return하도록 solution 함수를 완성해주세요.

정답풀이

function solution(numbers, direction) {
    let answer = [];

    if ("right" == direction) {
        numbers.unshift(numbers.pop());
    } else {
        numbers.push(numbers.shift());
    }

    answer = numbers;

    return answer;
}

direction이 "right"인 경우, 배열의 마지막 요소를 추출하여 배열의 맨 앞에 추가합니다. 이를 위해 pop() 메서드로 마지막 요소를 추출하고, unshift() 메서드로 맨 앞에 추가합니다.

direction이 "left"인 경우, 배열의 첫 번째 요소를 추출하여 배열의 맨 뒤에 추가합니다. 이를 위해 shift() 메서드로 첫 번째 요소를 추출하고, push() 메서드로 맨 뒤에 추가합니다.

마지막으로, 회전된 배열 numbers를 answer 변수에 할당하고 반환합니다.

 

외계행성의 나이

문제

우주여행을 하던 머쓱이는 엔진 고장으로 PROGRAMMERS-962 행성에 불시착하게 됐습니다. 입국심사에서 나이를 말해야 하는데, PROGRAMMERS-962 행성에서는 나이를 알파벳으로 말하고 있습니다. a는 0, b는 1, c는 2, ..., j는 9입니다. 예를 들어 23살은 cd, 51살은 fb로 표현합니다. 나이 age가 매개변수로 주어질 때 PROGRAMMER-962식 나이를 return하도록 solution 함수를 완성해주세요.

정답풀이

function solution(age) {
    
    let alpha = {
        0 : "a",
        1 : "b",
        2 : "c",
        3 : "d",
        4 : "e",
        5 : "f",
        6 : "g",
        7 : "h",
        8 : "i",
        9 : "j"
    }
    
    let newAge = age + "";
    
    return newAge.split("").map((el) => alpha[el]).join("");
}

먼저, 알파벳 문자열에 대한 매핑을 나타내는 alpha 객체를 선언합니다. 이 객체는 0부터 9까지의 숫자를 알파벳 문자로 매핑하고 있습니다.

age를 문자열로 변환한 뒤, newAge 변수에 할당합니다.

newAge 문자열을 split("") 메서드를 사용하여 각 자리수로 분리한 배열로 변환합니다. 그리고 map() 메서드를 사용하여 각 자리수를 alpha 객체에서 대응하는 알파벳 문자로 변환합니다.

마지막으로, join("") 메서드를 사용하여 변환된 알파벳 문자열을 하나의 문자열로 결합하여 반환합니다.

예를 들어, age가 123인 경우, 숫자 1은 "b"에, 숫자 2는 "c"에, 숫자 3은 "d"에 대응되므로 "bcd"가 반환됩니다.