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'입니다.
참고 문서
'알고리즘 > Programmers' 카테고리의 다른 글
[TIL] 2023.07.27 Programmers_수열과 구간 쿼리 3 (0) | 2023.07.28 |
---|---|
[TIL] 2023.07.27 Programmers_주사위 게임 2 (0) | 2023.07.27 |
[TIL] 2023.07.03 Programmers_배열의 원소만큼 추가하기 (0) | 2023.07.04 |
[TIL] 2023.06.30 Programmers_간단한 식 계산하기 (0) | 2023.06.30 |
[TIL] 2023.06.22 Programmers_A 강조하기 (0) | 2023.06.22 |
댓글