프로그래머스 4-6 TIL

Seunggyu Jung·2023년 4월 6일
0
post-thumbnail

1. Day 14 3/4 : 암호 해독

Q. 암호화된 문자열 cipher를 주고받습니다.
그 문자열에서 code의 배수 번째 글자만 진짜 암호입니다.
문자열 cipher와 정수 code가 매개변수로 주어질 때 해독된 암호 문자열을 return하도록 solution 함수를 완성해주세요.

1-1. 내 풀이

function solution(cipher, code) {
    let answer = '';
    for (let i = code - 1; i < cipher.length; i += code){
        answer += cipher[i]
    }
    return answer;
}

1-2. 해설

  • 1단계. 문제에서 code의 배수 번째 글자라고 했으나, 자바스크립트의 순서는 0부터 시작하기에 사실상 code -1 번째부터 시작한다는 것을 파악한다.
  • 2단계. 첫번째 인덱스는 1을 차감했으나, 순서는 code만큼 커지기에 증감식에 code를 더한다.

1-3. 다른 풀이 및 해설 -> 정답참조

function solution(cipher, code) {
    return [...cipher].filter((_,i) => (i + 1) % code === 0).join("");
}
  • 1단계. code의 배수번째인 인덱스는 code의 배수보다 1이 작기 때문에, 인덱스의 입장에서 1을 더하여 code의 배수가 되는 방법으로 인덱스를 찾는다.

2. Day 14 4/4 : 대문자와 소문자

Q . 문자열 my_string이 매개변수로 주어질 때, 대문자는 소문자로 소문자는 대문자로 변환한 문자열을 return하도록 solution 함수를 완성해주세요.

2-1. 나의 풀이

function solution(my_string) {
    let answer = ''
    for (const i of [...my_string]) {
        if (i === i.toUpperCase()) {
            answer += i.toLowerCase()
        } else {
            answer += i.toUpperCase()
        }
    }
    return answer;
}

2-2. 해설

  • 1단계. 파라미터의 타입은 문자열이기에 이를 전개구문으로 전개한다.
  • 2단계. 전개된 파라미터를 for of문으로 순환하며, 각 요소가 대문자인지, 아니면 소문자인지 if else문을 사용하여 구분하고, 대소문자를 바꿔준다.

2-3 다른 풀이 및 해설

function solution(my_string) {
    return [...my_string].map((el) => (el) === (el).toUpperCase() ? (el).toLowerCase() : (el).toUpperCase()).join("");
}
  • 1단계. 파라미터의 타입은 문자열이기에 이를 전개구문으로 전개한다.
  • 2단계. 배열의 요소에 변화를 주어야 하기 때문에 map메서드를 사용한다.
  • 3단계. map으로 순환을 할 때, 삼항연산자를 이용하여, 요소의 대소문자를 판가름한 뒤, 대소문자를 바꿔준다.

3. 마무리

  • 반복문을 사용하지 않는 코드가 더 가독성이 좋기 때문에 2가지 방식으로 다 풀어보며 학습하도록 하자!!
  • 반복문이 아닌 코드를 단 번에 이해하는 것은 무리가 있으니, 답을 보더라도 천천히 그 원리를 익히고, 주말에 직접 그 방식을 적용하여 풀 수 있도록 하자.
profile
감동을 주고픈 개발자(준비생)

0개의 댓글