프로그래머스 문제풀기

프로그래머스 -5탄

Hyeon been 2023. 5. 20. 18:28

한번씩 읽고 가세요.

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

- Frederick Philips Brooks
Mythical Man-Month 저자
728x90

배열의 유사도

darklight

sublimevimemacs

JavaScript

문제 설명

두 배열이 얼마나 유사한지 확인해보려고 합니다. 문자열 배열 s1과 s2가 주어질 때 같은 원소의 개수를 return하도록 solution 함수를 완성해주세요.


제한사항

  • 1 ≤ s1, s2의 길이 ≤ 100
  • 1 ≤ s1, s2의 원소의 길이 ≤ 10
  • s1과 s2의 원소는 알파벳 소문자로만 이루어져 있습니다
  • s1과 s2는 각각 중복된 원소를 갖지 않습니다.

입출력 예

s1 s2 result

["a", "b", "c"] ["com", "b", "d", "p", "c"] 2
["n", "omg"] ["m", "dot"] 0

입출력 예 설명

입출력 예 #1

  • "b"와 "c"가 같으므로 2를 return합니다.

입출력 예 #2

  • 같은 원소가 없으므로 0을 return합니다.

풀이

function solution(s1, s2) {

return s1.filter(v => s2.includes(v)).length

}

다른 풀이

function solution(s1, s2) {
    var answer = 0;
    for (var i = 0; i < s1.length; i++){
        for (var j = 0; j < s2.length; j++){
            if(s1[i] === s2[j]) answer++;
        }
    }
    return answer;
}

가위 바위 보

darklight

sublimevimemacs

JavaScript

문제 설명

가위는 2 바위는 0 보는 5로 표현합니다. 가위 바위 보를 내는 순서대로 나타낸 문자열 rsp가 매개변수로 주어질 때, rsp에 저장된 가위 바위 보를 모두 이기는 경우를 순서대로 나타낸 문자열을 return하도록 solution 함수를 완성해보세요.


제한사항

  • 0 < rsp의 길이 ≤ 100
  • rsp와 길이가 같은 문자열을 return 합니다.
  • rsp는 숫자 0, 2, 5로 이루어져 있습니다.

입출력 예

rsp result

"2" "0"
"205" "052"

입출력 예 설명

입출력 예 #1

  • "2"는 가위이므로 바위를 나타내는 "0"을 return 합니다.

입출력 예 #2

  • "205"는 순서대로 가위, 바위, 보이고 이를 모두 이기려면 바위, 보, 가위를 순서대로 내야하므로 “052”를 return합니다.

풀이

function solution(rsp) { var answer ='' for(let i of rsp){ if(i =='0'){ answer += '5' } else if(i == '2'){ answer += '0' } else if (i == '5'){ answer += '2' } } return answer; }

다른 풀이

function solution(rsp) {
  var answer = "";
  let arr = rsp.split("");
  for (let i = 0; i < arr.length; i++) {
    if (arr[i] === "0") answer += "5";
    if (arr[i] === "2") answer += "0";
    if (arr[i] === "5") answer += "2";
  }
  return answer;
}

배열 회전시키기

darklight

sublimevimemacs

JavaScript

문제 설명

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


제한사항

  • 3 ≤ numbers의 길이 ≤ 20
  • direction은 "left" 와 "right" 둘 중 하나입니다.

입출력 예

numbers direction result

[1, 2, 3] "right" [3, 1, 2]
[4, 455, 6, 4, -1, 45, 6] "left" [455, 6, 4, -1, 45, 6, 4]

입출력 예 설명

입출력 예 #1

  • numbers 가 [1, 2, 3]이고 direction이 "right" 이므로 오른쪽으로 한 칸씩 회전시킨 [3, 1, 2]를 return합니다.

입출력 예 #2

  • numbers 가 [4, 455, 6, 4, -1, 45, 6]이고 direction이 "left" 이므로 왼쪽으로 한 칸씩 회전시킨 [455, 6, 4, -1, 45, 6, 4]를 return합니다.

풀이

function solution(numbers, direction) { if(direction === 'right'){ numbers.unshift(numbers.pop()) } else { numbers.push(numbers.shift()) } return numbers }

외계행성의 나이

darklight

sublimevimemacs

JavaScript

문제 설명

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


제한사항

  • age는 자연수입니다.
  • age ≤ 1,000
  • PROGRAMMERS-962 행성은 알파벳 소문자만 사용합니다.

입출력 예

age result

23 "cd"
51 "fb"
100 "baa"

입출력 예 설명

입출력 예 #1

  • age가 23이므로 "cd"를 return합니다.

입출력 예 #2

  • age가 51이므로 "fb"를 return합니다.

입출력 예 #3

  • age가 100이므로 "baa"를 return합니다.

풀이

function solution(age) { let chr ="abcdefghij" return Array.from(age.toString()).map(v => chr[v]).join(''); }

다른풀이

function solution(age) {
    var alphabet = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j"];
    var answer = "";
    age = age.toString();

    for(let i=0; i<age.length; i++){
        answer += alphabet[age[i]];
    }
    return answer;
}