반응형

Problem Solved/HackerRank

    [HackerRank][Javascript] Alternating Characters

    [HackerRank][Javascript] Alternating Characters

    문제 - Alternating Characters 문제 설명 한 문자가 연속으로 등장하게 하지 않기 위해 삭제해야 하는 문자의 개수를 구하는 문제 반복문을 돌면서 현재 문자와 다음 문자가 같으면 결과값에 1을 더해 주고 결과값을 반환하면 된다. 참고: 자바스크립트에서는 문자열도 일종의 배열이기 때문에 length나 값 참조는 배열과 똑같이 할 수 있다. charAt같은 메소드를 추가로 사용하지 않아도 되서 편하다. 성공 코드 function alternatingCharacters(s) { let result = 0; for (let i = 0; i < s.length - 1; i++) { if (s[i] === s[i + 1]) result++; } return result; }

    [HackerRank][Javascript] Strings: Making Anagrams

    [HackerRank][Javascript] Strings: Making Anagrams

    문제 - Strings: Making Anagrams 문제 설명 문자열 a와 b에서 최소 몇 개의 글자를 삭제해야 애나그램이 완성되는지 구하는 문제 처음에 문자열 a, b의 길이가 같다고 생각했는데, 같지 않아서 다르게 풀었었다. 문자열 a, b를 split하여 배열로 만들어 각각 저장한다. 이중 반복문을 a, b의 길이만큼 역순으로 돈다. 여기서 역순으로 반복문을 돌린 이유는 배열의 요소를 삭제하면서 반복시킬 것이기 때문이다. 이중 반복문을 도는 이유는 a와 b의 길이가 다르고, 같다고 하여도 같은 인덱스에 같은 문자열이 있을지 알 수 없기 때문이다. 배열 a, b에서 같은 요소가 있으면 각각 배열에서 splice를 통해 삭제한다. 여기서 다른 것이 아닌 같은 것을 삭제하는 이유는 앞에서는 다른 것이라..

    [HackerRank][Javascript] Frequency Queries

    [HackerRank][Javascript] Frequency Queries

    문제 - Frequency Queries 문제 설명 타입과 값이 넘어오는 이중 배열에서 type 3일 때의 빈도수 TF 값을 구하는 문제 처음에 문제를 이해하지 못하고 설명을 듣고 이해했다. 문제를 더 꼼꼼하게 읽어야겠다. 풀이 설명을 듣고 기억에 남아서 그대로 풀었다. value의 개수를 저장하기 위한 map과 최종적으로 반환하기 위한 빈 배열을 생성한다. queries로 반복문을 돌며 타입을 체크하고 switch문을 돈다. 타입이 1이면 map에 값을 저장한다. 타입이 2이면 map에서 1을 빼 주어 삭제한다. 타입이 3이면 value들 중에 일치하는 것이 있는지 확인해 값을 배열에 담는다. 반복문이 끝나고 나온 result를 반환한다. 성공 코드 function freqQuery(queries) {..

    [HackerRank][Javscript] Map - Count Triplets

    [HackerRank][Javscript] Map - Count Triplets

    문제 - Count Triplets 문제 설명 배열 안에서 연속해서 등장하는 r의 n제곱 3개의 숫자가 몇 쌍이 되는지 구하는 문제 문제 접근하기가 어려워서 파이썬으로 간단하게 푸신 분의 풀이를 참고했다. 풀이 설명은 아래 블로그를 참고하면 되고, 나는 그 풀이를 어떻게 이해했는지 작성해 보겠다. 아래는 arr: 1 2 2 4, r: 2일 때 풀이의 Map 변화 상황이다. m2: Map { 2 => 1 } m3: Map {} // 0 m2: Map { 2 => 1, 4 => 1 } m3: Map { 4 => 1 } // 1 m2: Map { 2 => 1, 4 => 2 } m3: Map { 4 => 2 } // 3 m2: Map { 2 => 1, 4 => 2, 8 => 1 } m3: Map { 4 => 2..

    [HackerRank][Javascript] Sherlock and Anagrams

    [HackerRank][Javascript] Sherlock and Anagrams

    문제 - Sherlock and Anagrams 문제 설명 입력된 문자열에서 발생하는 모든 Anagram의 수를 반환하는 문제 이 문제는 Map을 쓰지 않고 풀었다가 한참을 고생한 문제이다. Map의 성능을 체감하게 된 문제이다. 일반 배열로 풀게 되면 time limit이 더 많이 걸리게 되는 것 같다. 우선 반복문을 돌리기 위해 입력된 문자열을 배열로 만든다. 자른 문자열의 개수를 저장하기 위해 Map을 새로 선언한다. makeSubList는 len이라는 인자를 받아 해당 숫자만큼 자르고 정렬해 개수를 앞서 만든 Map에 저장한다. 이 때, makeSubList가 reduce 안에서 불려서 바로 계산되기 때문에 함수 시작 부분에서 .clear()를 통해 Map을 비워준다. isAnagram에서는 ma..

    [HackerRank][Javascript] Two Strings

    문제 - Two Strings 설명 두 개의 문자 사이에 같은 문자열이 존재하는지 판별하는 문제 첫번째 풀이 Map을 2개를 사용한다. 1개는 s1을 저장하기 위해 쓰이고, 1개는 true, false 값을 저장하기 위해 쓰인다. s1 리스트가 반복문을 돌면서 맵에 개수가 저장된다. s2 리스트로 s1 문자열 중에 같은 문자열이 존재하는지 판단해 Map에 저장하며 반복한다. 마지막 반환할 때 mapOfResult에 true가 있는지를 some 메소드를 통해 판별한다. 하지만, Map을 두 개나 만들고 불필요하게 반복문을 돌게 되는 것 같아 스터디에서 알게 된 내용으로 다시 풀어 보았다. 두번째 풀이 Set에 s1을 저장한다. 여기서 처음 알게 된 사실은 Set에는 String이 들어가도 하나씩 배열로 바..