일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 |
- 리액트
- 식물키우기
- string
- binary
- LeetCode
- styled-components
- 정규표현식
- java
- 컴퓨터
- ES6
- 기억장치
- codewars
- Algorithm
- 자바
- 자바스크립트
- 반응형 웹
- 애플
- git
- 아이폰
- react
- 운영체제
- ECMAScript2015
- db
- 데이터베이스
- 알고리즘
- c++
- ECMAScript6
- 배포
- 맛집
- Javascript
- Today
- Total
목록LeetCode (2)
에브리 저장소

문제 링크 https://leetcode.com/problems/longest-substring-without-repeating-characters/ 풀이 이 문제는 문자열에서 중복 없이 가장 긴 substring의 길이를 반환하는 문제이다. 내가 접근한 방식은 완전 탐색이다. 자신보다 뒤에 있는 문자열들을 순회하면서 중복이 발생하기 전까지의 길이를 찾아 저장해놓은 max length와 비교하는 로직을 작성했다. O(N^2)의 시간 복잡도를 가지기 때문에 상대적으로 너무 느리다. 다른 사람들의 풀이를 보았고, O(N)으로 푸는 코드를 찾았다. 이 코드는 각 문자열을 map이라는 객체에 저장하면서 value로 이 문자가 가장 마지막으로 나온 index를 저장한다. 이로 인해 한번 순회로 중복 없는 최대 길..

문제 링크 https://leetcode.com/problems/sum-of-two-integers/ 풀이 이 문제에서는 +, - 연산자를 사용하지 않고 두 인자의 합을 반환하는 함수를 만들어야 한다. 문제의 조건을 확인하고 비트 연산자를 써야겠다고 생각했으나, 어떤 연산자를 써야 할까 고민했다. 정확한 덧셈을 위해서 Carry와 이를 제외한 합을 알아야 한다. Carry를 알기 위해 사용할 수 있는 비트 연산자는 AND이다. 둘 다 1일 때만 1이므로 AND의 결과가 1이라면 Carry가 발생했음을 알 수 있다. Carry를 제외한 합은 XOR 연산자로 알 수 있다. 둘 중 하나만 1일 때 XOR의 결과가 1이기 때문이다. 실제로 컴퓨터가 덧셈을 AND, XOR 연산자를 통해서 한다고 한다. 덧셈을 실..