Leetcode 2843. Count Symmetric Integers
·
Algorithm
low와 high에서 대칭되는 값이 몇 개인지 구하는 문제였습니다.가장 먼저 고려했던 것은 대칭 유무를 어떻게 구분하는 것인가였는데요. example 2를 보며 유사성을 찾았습니다. Example 2:Input: low = 1200, high = 1230Output: 4Explanation: There are 4 symmetric integers between 1200 and 1230: 1203, 1212, 1221, and 1230. 숫자를 중간을 기준으로 나눠 왼쪽값과 오른쪽 값이라고 예를 들었을 때,왼쪽 값의 합과 오른쪽 값의 합은 같다는 특징이 있었어요.low부터 high의 수를 어떻게 나누고 값으로 산출해내느냐가 관건이었습니다.문제 접근1) 주어진 수의 범위가 넓어 for문을 사용하는 것이 맞는..
LEETCODE 1002. find-common-characters
·
Algorithm
문자열 배열이 주어지면 단어 내의 모든 문자열에 나타나는모든 문자의 배열을 반환하는 문제. Example 1:Input: words = ["cool","lock","cook"]Output: ["c","o"]문제 접근모든 문자열에 공통되는 단어라면 어떠한 문자열을 기준 삼아도 됐지만배열의 첫번째 문자열이 문제를 풀 때 편하겠다 싶어  첫 문자열을 변수에 할당했습니다. 두 번째로 요소마다 공통 문자를 찾아야 했는데요.의미 없이 반복문을 여러 번 사용해서 찾기보단 JS의 every라는 메서드를 사용해 처리했습니다.가독성도 좋고, 훨씬 효율적이니까요! 이후 공통 문자가 있다면 return 할 배열에 추가해 주는 것으로 해결하려고 했습니다만테스트를 통과하지 못했는데요.첫 번째 문자열에 공통 문자가 2개이고, 다른..
완전한 싱글톤 패턴으로 리팩토링을 진행해보자
·
Design Pattern
2024.05.23 - [TIL] - 그저 작성했는데 싱글톤 패턴이었던 것에 대하여 그저 작성했는데 싱글톤 패턴이었던 것에 대하여오늘도 평화로움을 바라며 코딩하던 날이었습니다.서버로부터 전달받은 토큰을 변수에 캐싱하는 로직을 포함해 PR했는데요.하나의 인스턴스로 관리한다는 키워드로 구글링을 할 때,여러 블로betterpalywon.tistory.com이전 포스팅인 싱글톤 패턴 구현에 이어 제가 구현한 싱글톤 패턴의 문제점과완전한 싱글톤 패턴으로 변경해야 하는 이유, 그리고 리팩토링했던 방법을 설명해보려 합니다.이전 싱글톤 패턴의 문제점인스턴스의 내부 상태에 접근해 변경이 가능하다! 이전 코드를 예제로 들어보겠습니다.let userInstance = null;const createUser = () => {..
그저 작성했는데 싱글톤 패턴이었던 것에 대하여
·
Design Pattern
오늘도 평화로움을 바라며 코딩하던 날이었습니다.서버로부터 전달받은 토큰을 변수에 캐싱하는 로직을 포함해 PR했는데요.하나의 인스턴스로 관리한다는 키워드로 구글링을 할 때,여러 블로그가 있었지만 제로초 블로그를 통해 제 코드가 싱글톤 패턴이라는 것을 깨닫고해당 디자인 패턴에 대해 알게되었습니다. 사실, 제가 처음 개발 분야에 입문하고 여러 인터뷰에 참여할 당시싱글톤 패턴에 대해서 알고있느냐는 질문을 몇 번 받았는데요.2년차가 된 지금, 제가 싱글톤 패턴을 기반으로 한 코드를 작성했다는게 신기해서포스팅하게 되었습니다.싱글톤 패턴이란?클래스의 인스턴스를 하나만 생성하고, 그 인스턴스를 어디서든 접근할 수 있도록 하는 디자인 패턴인데요.단 하나의 객체만을 만들 때 사용되며 어디서든 해당 객체에 접근할 수 있다는..
LEETCODE 2331. Evaluate Boolean Binary Tree
·
Algorithm
사실 설명만 보고선 이해가 안됐는데요.예제 문제 01번과 맨 아래의 부연 설명을 보고서야 어렴풋이 이해할 수 있었습니다.문제 접근 방법정확한지 아닌지는 솔직히 장담을 못한 채로 풀었습니다.root를 트리에 비교해보면 0 = False, 1 = True, 2 = OR, 3 = AND를 의미한다는 것을 파악했습니다. 문제를 분석해보면 2는 OR를 뜻하므로 왼쪽 node와 오른쪽 node 둘 중 하나만 있어도 되고,3일 때는 AND이므로 왼쪽 node와 오른쪽 node가 모두 있어야겠네요.최종 코드/** * Definition for a binary tree node. * function TreeNode(val, left, right) { * this.val = (val===undefined ? 0 :..
LEETCODE 824. Goat Latin
·
Algorithm
/** * @param {string} sentence * @return {string} */var toGoatLatin = function(sentence) { const arr = ['a', 'e', 'i', 'o', 'u']; const a = sentence.split(' '); return a.map((word, i) => arr.includes(word[0].toLowerCase()) ? [...word, 'ma', ...Array(i + 1).fill('a')].join('') : [...word.slice(1), word[0], 'ma', ...Array(i + 1).fill('a')].jo..
일정 길이 이상의 텍스트에 ...을 붙이는 쉬운 방법
·
TIL
글자가 일정 length 이상이 되었을 때, 문자열 뒤에 ‘…’ 처리를 해야하는 부분이 있었습니다.사실 전 css에 약하기도 하고, 어지간한 텍스트 관련 작업은 JS로 해결을 해왔기에이번에도 JS로 접근해 해결을 했고 PR 내역에 올렸는데요.하지만 피어 리뷰를 통해 새로운 문제 해결에 접근할 수 있었어요.css를 잘 아는 동료분이 계셨는데, 3개의 속성 추가로 너무 쉽게 해결을 할 수 있다고 코멘트를 주셨거든요.먼저 저의 코드입니다. {item.name.length >= 17 ? item.name.split('').splice(0, 17).join('') + '...' : item.name} text의 length가 17 이상이면 16자리까지만 보여지게 만들고 이후에 ... 이라는 텍스트를 추가..
알고리즘 풀이 중 오랜만에 경험한 기초 지식
·
JS & REACT
Leetcode - 2696. Minimum String Length After Removing Substrings문제를 풀 때 경험했던 문제입니다.당시 저는 문자열에 특정 키워드가 존재하는지에 대한 조건을변수에 할당해 사용하려 했는데, 계속 반복문에서 타임아웃이 발생했습니다.아무리 생각해봐도 문제가 변수 할당밖에 없어 변수에 할당한 조건문을 while문에 직접 추가했더니그제서야 동작하는 것을 확인했는데요.왜 이런 일이 발생하는걸까? 하자마자 바로 잘못을 깨달았습니다.문제 발생 코드var minLength = function(s) { // const hasAB = s.includes('AB'); // const hasCD = s.includes('CD'); while(s.includes(..