Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 보안뉴스한줄요약
- 자바스크립트 기본 문법
- 보안뉴스요약
- 자바스크립트
- 오라클
- GIT
- 자바스크립트 element api
- 카카오프로젝트 100
- numpy
- 자바스크립트 객체
- 카카오프로젝트
- 자바스크립트 API
- ES6
- 자바스크립트 jQuery
- 보안뉴스 요약
- 깃허브
- 랜섬웨어
- 카카오프로젝트100
- 보안뉴스 한줄요약
- Oracle SQL
- 보안뉴스
- python
- oracle
- 다크웹
- oracle db
- 자바스크립트 prototype
- 자바스크립트 node
- php
- 파이썬
- javascript
Archives
- Today
- Total
FU11M00N
[LeetCode] Ransom Note - Javascript 본문
Ransom Note
[magazine에 ransomNote의 모든 단어 포함 여부 확인]
제약 조건
1 <= ransomNote.length, magazine.length <= 10^5
ransomNote and magazine consist of lowercase English letters.
Example
ex1) Input: ransomNote = "a", magazine = "b"
Output: false
ex2) Input: ransomNote = "aa", magazine = "ab"
Output: false
ex3) Input: ransomNote = "aa", magazine = "aab"
Output: true
문제 접근 방식
해시테이블 성격을 이용했다.
먼저 obj 빈 객체 변수를 생성하고
반복문을 수행해 magazine의 문자의 개수를 obj 객체에 저장한다.
ex) magazine = "babba" , ransomNote = "aabbb"
obj : { b:3, a:2 }
그 후 ransomNote 데이터를 반복문을 돌며 obj 객체에 해당 데이터가 없으면 false를 리턴하고 아니라면 값을 하나씩 뺀다.
아래의 예시처럼 말이다. 만약 a가 0인 상태에서 a의 데이터가 한 번 더 들어오면 false를 리턴하고 모두 통과하면 true를 리턴한다.
ex) obj: {b:3, a:2} -> {b:3, a:1} -> {b:3, a:1} -> {b:3, a:0} -> {b:2, a:0} ...
전체코드
/**
* @param {string} ransomNote
* @param {string} magazine
* @return {boolean}
*/
var canConstruct = function(ransomNote, magazine) {
const obj = {};
for(let data of magazine) {
if (!obj[data]) {
obj[data] = 0;
}
obj[data]++;
}
for(let data of ransomNote) {
if(!obj[data]) {
return false;
}
obj[data]--;
}
return true;
};
'알고리즘' 카테고리의 다른 글
[LeetCode] Contains Duplicate II - Javascript (0) | 2023.09.01 |
---|---|
[LeetCode] Valid Anagram - Javascript (0) | 2023.09.01 |
[LeetCode] Evaluate Reverse Polish Notation - Javascript (0) | 2023.08.31 |
[LeetCode] Two Sum - Javascript (0) | 2023.08.31 |
[LeetCode] Min Stack - Javascript (0) | 2023.08.30 |
Comments