본문 바로가기
코딩테스트/프로그래머스

프로그래머스 시저함수 문제 풀이, 해설, 알고리즘 코딩테스트

by 코드스니펫 2023. 12. 5.
반응형

프로그래머스 시저함수 문제 풀이, 해설 알고리즘 코딩테스트

 

programmers logo

 

프로그래머스 시저함수 문제 소개와 필자의 문제풀이 및 인기 있는 문제풀이 소개와 해설을 소개하겠습니다. 아래 풀이 과정을 보면서 많은 인사이트를 얻어가시길 바랍니다.

 

프로그래머스 시저함수 문제

 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

시저 암호란?

시저 암호는 각 알파벳을 일정 거리만큼 밀어서 다른 알파벳으로 변환하는 암호화 방식입니다. 예를 들어, "AB"를 1만큼 밀면 "BC"가 되고, "z"는 1만큼 밀면 "a"로 변환됩니다. 공백은 변하지 않습니다.

 

 

필자의 문제풀이 해설

function solution(s, n) {
  let answer = "";
  const arrStr = [...s];
  const arr = [...new Array(26).fill().map((_, i) => String.fromCharCode(i + 97)).join("")];
  const upperArr = arr.map((x) => x.toUpperCase());
  const pattern2 = /[a-zA-Z]/; // 영어 패턴

  arrStr.forEach((x) => {
    // 영어 체크
    if (!pattern2.test(x)) {
      answer += x;
      return;
    }

    let arrIdx = Number(arr.indexOf(x)) + n;
    let arrUpIdx = Number(upperArr.indexOf(x)) + n;

    if (x === x.toUpperCase())
      answer += upperArr[arrUpIdx > 25 ? arrUpIdx - 26 : arrUpIdx];
    else answer += arr[arrIdx > 25 ? arrIdx - 26 : arrIdx];
  });

  return answer;
}

 

 

  1. 문자열을 배열로 변환하여 알파벳 체크를 쉽게 수행.
  2. 알파벳이 아닌 경우 그대로 두고, 알파벳일 경우 인덱스를 이용해 밀어내기.
  3. 대소문자에 따라 다른 배열 활용.

 

 

인기있는 문제풀이 해설

function solution(s, n) {
    var upper = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    var lower = "abcdefghijklmnopqrstuvwxyz";
    var answer= '';

    for(var i =0; i <s.length; i++){
        var text = s[i];
        if(text == ' ') {
            answer += ' '; 
            continue;
        }
        var textArr = upper.includes(text) ? upper : lower;
        var index = textArr.indexOf(text) + n;
        if(index >= textArr.length) index -= textArr.length;
        answer += textArr[index];
    }
    return answer;
}

 

 

 

  1. 대문자, 소문자에 따라 다른 배열 선택.
  2. 밀어내는 인덱스 처리를 간결하게 구현.

 

알고리즘의 다양한 해결과정

알고리즘의 세계에서 시저 암호는 다양한 해결 방식을 통해 풀어집니다. 필자의 해설에서는 배열과 인덱스를 활용하여 각 알파벳을 처리하였고, 인기있는 해설에서는 대소문자를 구분하여 처리함으로써 간결하게 문제를 해결했습니다. 이처럼 다양한 접근 방식을 통해 알고리즘의 아름다움을 탐험하고, 자신만의 해결 방식을 찾아가는 여정이 더욱 흥미로울 것입니다. 🚀✨

 

▼아래 글도 읽어보세요! ▼

 

 

프로그래머스 부족한 금액 계산하기 해설, 문제풀이 과정

프로그래머스 부족한 금액 계산하기 해설, 문제풀이 과정 프로그래머스 내적 문제 소개와 해설, 필자의 문제풀이 과정과 가장 인기 있던 문제풀이에 대해 소개하겠습니다. 아래 풀이 과정을 보

lemonlog.tistory.com

 

 

프로그래머스 내적 해설, 문제풀이 과정, 인기 있는 문제풀이

프로그래머스 내적 해설, 문제풀이 과정, 인기 있는 문제풀이 프로그래머스 내적 문제 소개와 해설, 필자의 문제풀이 과정과 가장 인기 있던 문제풀이에 대해 소개하겠습니다. 아래 풀이 과정을

lemonlog.tistory.com