본문 바로가기
알고리즘/Programmers

[TIL] 2023.07.15 Programmers_l로 만들기

by heereal 2023. 7. 15.

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

 

댓글