[TIL] 2023.07.15 Programmers_l로 만들기

l로 만들기

문제 설명

알파벳 소문자로 이루어진 문자열 myString이 주어집니다. 알파벳 순서에서 "l"보다 앞서는 모든 문자를 "l"로 바꾼 문자열을 return 하는 solution 함수를 완성해 주세요.

 

 

입출력 예

myString result
"abcdevwxyz" "lllllvwxyz"
"jjnnllkkmm" "llnnllllmm"

입출력 예 #1

  • 0 ~ 4번 인덱스의 문자 "a","b","c","d","e"는 각각 "l"보다 앞서는 문자입니다. 따라서 "l"로 고쳐줍니다.
  • 그 외의 문자는 모두 "l"보다 앞서지 않는 문자입니다. 따라서 바꾸지 않습니다.
  • 따라서 "lllllvwxyz"을 return 합니다.

입출력 예 #2

  • 0번, 1번, 6번, 7번 인덱스의 문자 "j","j","k","k"는 각각 "l"보다 앞서는 문자입니다. 따라서 "l"로 고쳐줍니다.
  • 그 외의 문자는 모두 "l"보다 앞서지 않는 문자입니다. 따라서 바꾸지 않습니다.
  • 따라서 "llnnllllmm"을 return 합니다.

 

나의 풀이

function solution(myString) {
    let array = [..."abcdefghijk"];
    return [...myString].map((str) => array.includes(str) ? "l" : str).join("");
}

문자열을 어떻게 비교할 수 있을까 고민하다가 "l" 보다 앞서는 문자열들로 배열을 만든 후에 `includes` 메서드를 이용해서 삼항연산자로 처리했다.

 

 

다른 사람의 풀이

function solution(myString) {
    return [...myString].map((v) => v < 'l' ? 'l' : v).join('');
}

문자열에 비교 연산자를 사용해서 비교할 수 있다는 걸 이 풀이로 처음 알았다! 그래서 오늘 TIL은 이 정보를 기록하기 위해 작성했다. 다음에 알고리즘 문제 풀 때 꼭 사용해보고 싶다.

 


document.writeln('apple' > 'banana'); // false
document.writeln('apple' > 'abcd'); // true
document.writeln('apple' > 'a'); //true
document.writeln('apple' > 'Banana'); // true
document.writeln('apple' > '1'); // true

'<', '>' 연산자를 사용하여 문자열의 순서를 비교할 수도 있습니다.

  • '<', '>' 연산자는 문자열을 '사전 순서' 대로 비교하여 결과를 리턴합니다.
  • 더 정확하게 말하면, 문자열의 ASCII 값을 비교하여 결과를 리턴합니다.

예제 1.

  • 'apple'과 'banana'의 사전 순서는 'banana'가 더 뒤이므로, 'apple'은 'banana'보다 작습니다.
  • 'a'의 ASCII 값은 97입니다.
    'b'의 ASCII 값은 98입니다.
    따라서 'banana' 가 'apple'보다 큽니다.

 

예제 2.

  • 'apple'과 'abcd'의 첫 번째 글자인 'a'의 ASCII 값은 97입니다.
  • 'apple'의 두번 째 글자인 'p'의 ASCII 값은 112이고,
    'abcd'의 두번 째 글자인 'b'의 ASCII 값은 97입니다.
  • 따라서 'abcd' < 'apple'입니다.

 

예제 3.

  • 'apple'과 'a'의 첫 번째 글자인 'a'의 ASCII 값은 97입니다.
  • 'apple'의 두번째 글자인 'p'의 ASCII 값은 112이고,
    'a'의 두번째 글자는 없으므로, 0으로 비교됩니다.
  • 따라서, 'apple' > 'a'입니다.

 

예제 4

  • 'apple'의 첫 번째 글자인 'a'의 ASCII 값은 97입니다.
  • 'Banana'의 첫 번째 글자인 대문자 'B'의 ASCII 값은 66입니다.
  • 따라서 'apple' > 'Banana'입니다.

예제 5.

  • 'apple'의 첫 번째 글자인 'a'의 ASCII 값은 97입니다.
  • '1'의 ASCII 값은 49입니다.
  • 따라서 'apple' > '1'입니다.

참고 문서

 

[Javascript] 문자열 비교하기 (동등 비교, 대소 비교)

동등 연산자('==', '===') 비교 Javascript에서 문자열의 비교를 위해서는 동등연산자('==' 또는 '===')를 사용합니다. 동등 연사자를 사용하여 두 개의 문자열을 비교해서 두 문자열이 같으면 'true'를 리

hianna.tistory.com