
어떤 문장의 각 알파벳을 일정한 거리만큼 밀어서 다른 알파벳으로 바꾸는 암호화 방식을 시저 암호라고 합니다. 예를 들어 "AB"는 1만큼 밀면 "BC"가 되고, 3만큼 밀면 "DE"가 됩니다. "z"는 1만큼 밀면 "a"가 됩니다. 문자열 s와 거리 n을 입력받아 s를 n만큼 민 암호문을 만드는 함수, solution을 완성해 보세요.
제한 조건
공백은 아무리 밀어도 공백입니다.
s는 알파벳 소문자, 대문자, 공백으로만 이루어져 있습니다.
s의 길이는 8000이하입니다.
n은 1 이상, 25이하인 자연수입니다.
function solution(s, n) {
var answer = "";
var upper = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
var lower = "abcdefghijklmnopqrstuvwxyz";
for (i = 0; i < s.length; i++) {
if (upper.includes(s[i])) {
answer += upper[(upper.indexOf(s[i]) + n) % 26];
} else if (lower.includes(s[i])) {
answer += lower[(lower.indexOf(s[i]) + n) % 26];
} else if (s[i] == " ") {
answer += " ";
}
}
return answer;
}
어떻게 풀어야할지 감이 안잡혀서 찾아보고 풀었다.(아직 레벨1인데 벌써 막힌다..)
string.indexOf(searchvalue, position)
문자열(string)에서 특정 문자열(searchvalue)을 찾고, 검색된 문자열이 '첫번째'로 나타나는 위치 index를 리턴.
searchvalue : 찾을 문자열.(필수 입력값)
position : string에서 searchvalue를 찾기 시작할 위치.(입력 안해주면 기본값 0)
찾는 문자열이 없으면 -1을 리턴.
문자열을 찾을 때 대소문자를 구분.
예제)
const str = "abab";
document.writeln(str.indexOf('ab')); // 0 : 처음으로 나타나는 위치의 인덱스값을 리턴.
document.writeln(str.indexOf('ba')); // 1
document.writeln(str.indexOf('abc')); // -1 : 해당 문자열이 없으므로 -1 리턴.
document.writeln(str.indexOf('AB')); // -1 : 대문자 ab는 없으므로 -1 리턴.
string.includes(searchString, position)
배열이나 문자열에 특정 값이 포함되어 있는지 확인하는 메서드.
불리언 값을 반환하며, 값이 포함되어 있으면 true, 아니면 false를 반환.
searchString : 문자열에서 찾고자 하는 값(필수 입력값)
position : 검색을 시작할 인덱스 값(입력 안해주면 기본값 0)
문자열을 찾을 때 대소문자를 구분.
NaN값을 확인할 수 있음.
예제)
const numbers = [1, 2, 3, 4, 5, 2];
document.writeln(numbers.includes(2, 3)); // true : 마지막에 2가 있으므로 true리턴.
영어 대문자를 가지고있는 upper, 소문자를 가진 lower선언. s의 i번째가 대문자이면 s[i]리턴 값을 n만큼 민값을 26으로 나눴을때의 나머지값에 해당하는 upper값을 answer에 넣어주고, 소문자면 같은방식으로 구한 lower값을 answer에 넣어준다. 공백이면 answer에 공백을 넣어준다.
오후 4시부터 6시까지 밍글데이를 진행했다.
의미를 잘 모르겠어서 찾아봤는데
밍글(mingle) 서로 어울리다 , 섞이라는 뜻으로 Mingling 은 편안한 분위기에서 서로 교류하는 것을 말합니다.
라고 한다. 여러 회사들도 밍글데이를 이용한다는 것을 알게되었다.
우리의 경우는 크게 ox퀴즈(멤버카드에 관련된 문제, 일반 상식, 과학 문제), 노래 1초듣고 맞추기, 이미지보고 정답을 주관식으로 작성하는 주관식퀴즈를 했는데, 튜터님들이 상품을 걸고 진행했다.
여러 상식도 알 수 있었고, 비록 메타버스 환경이지만 같이 Node 6기를 진행하는 멤버분들과 교류하는 느낌이 들어서 좋았고 재미있었다. 다음주부터는 본격적으로 Node.js과정을 시작하게 될텐데, 이번 프로그래밍 심화 주차도 살짝 부족하다는 느낌이 들었다. 더 열심히 해야지..