[알고리즘] 둘만의 암호

2023. 2. 9. 15:03·알고리즘
반응형

문제 설명

두 문자열 s와 skip, 그리고 자연수 index가 주어질 때, 다음 규칙에 따라 문자열을 만들려 합니다. 암호의 규칙은 다음과 같습니다.

  • 문자열 s의 각 알파벳을 index만큼 뒤의 알파벳으로 바꿔줍니다.
  • index만큼의 뒤의 알파벳이 z를 넘어갈 경우 다시 a로 돌아갑니다.
  • skip에 있는 알파벳은 제외하고 건너뜁니다.

예를 들어 s = "aukks", skip = "wbqd", index = 5일 때, a에서 5만큼 뒤에 있는 알파벳은 f지만 [b, c, d, e, f]에서 'b'와 'd'는 skip에 포함되므로 세지 않습니다. 따라서 'b', 'd'를 제외하고 'a'에서 5만큼 뒤에 있는 알파벳은 [c, e, f, g, h] 순서에 의해 'h'가 됩니다. 나머지 "ukks" 또한 위 규칙대로 바꾸면 "appy"가 되며 결과는 "happy"가 됩니다.

두 문자열 s와 skip, 그리고 자연수 index가 매개변수로 주어질 때 위 규칙대로 s를 변환한 결과를 return하도록 solution 함수를 완성해주세요.

제한사항

  • 5 ≤ s의 길이 ≤ 50
  • 1 ≤ skip의 길이 ≤ 10
  • s와 skip은 알파벳 소문자로만 이루어져 있습니다.
    • skip에 포함되는 알파벳은 s에 포함되지 않습니다.
  • 1 ≤ index ≤ 20

입출력 예

s skip index result
"aukks" "wbqd" 5 "happy"

나의 풀이

const SPELLING = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z']

function solution(s, skip, index) {
    var answer = '';
    
    const newSpelling = SPELLING.filter((ch) => !skip.split("").includes(ch));
    
    for(let i = 0; i < s.length; i++) {
        const idx = newSpelling.indexOf(s[i]); 
        answer += newSpelling[(idx + index) % newSpelling.length]
    }
    
    return answer;
}
반응형
저작자표시 비영리 변경금지 (새창열림)

'알고리즘' 카테고리의 다른 글

[알고리즘] 최소직사각형  (0) 2023.02.12
[알고리즘] 개인정보 수집 유효기간  (0) 2023.02.10
[알고리즘] 가장 가까운 같은 글자  (0) 2023.02.08
[알고리즘] 콜라 문제  (0) 2023.02.07
[알고리즘] 2개 이하로 다른 비트  (0) 2023.02.05
'알고리즘' 카테고리의 다른 글
  • [알고리즘] 최소직사각형
  • [알고리즘] 개인정보 수집 유효기간
  • [알고리즘] 가장 가까운 같은 글자
  • [알고리즘] 콜라 문제
잉여개발자
잉여개발자
풀스택 개발자를 목표로 잉여롭게 개발 공부도 하면서 다양한 취미 생활도 즐기고 있는 잉여 개발자입니다.
  • 잉여개발자
    잉여로운 개발일지
    잉여개발자
    • 분류 전체보기 (789)
      • 개발정보 (36)
      • 개발환경 (7)
      • 개발생활 (19)
      • React (141)
        • 이론 (23)
        • 기능 (12)
        • 실험실 (88)
        • 버그 (6)
        • 패스트캠퍼스 (9)
        • Npm (3)
      • React Native (28)
        • 공통 (6)
        • TypeScript (3)
        • JavaScript (18)
        • 버그 (1)
      • Next.js (30)
        • 이론 (13)
        • 실험실 (13)
        • 버그 (3)
      • Web (35)
      • 알고리즘 (202)
        • 풀이 힌트 (39)
      • JavaScript (47)
      • TypeScript (29)
        • 기초 (27)
        • 실험실 (2)
      • Node.js (13)
        • 이론 (0)
        • 기능 (3)
        • 실험실 (9)
        • 버그 (1)
      • 도커 (4)
      • CCNA (22)
        • 이론 (4)
        • 문제 (18)
      • 취미생활 (167)
        • 잉여로운 칵테일 (2)
        • 잉여의 식물키우기 (130)
        • 잉여로운 여행기 (11)
        • 잉여의 제2외국어 (21)
        • 잉여로운 책장 (2)
      • Java (1)
        • Java의 정석 (1)
      • 꿀팁 공유 (3)
  • 태그

    다이소
    CSS
    Node.js
    자바스크립트
    리얼클래스
    Babel
    javascript
    알고리즘
    next.js
    바질 키우기
    네이버 부스트캠프
    webpack
    영어독학
    타입스크립트
    ChatGPT
    프로그래머스
    네트워크
    ReactNative
    식물
    타일러영어
    Docker
    영어회화
    redux
    리액트
    바질
    리얼학습일기
    react
    typescript
    CCNA
    덤프
  • hELLO· Designed By정상우.v4.10.1
잉여개발자
[알고리즘] 둘만의 암호
상단으로

티스토리툴바