본문 바로가기

반응형

전체 글

(237)
LeetCode 171. Excel Sheet Column Number 자바 문제 풀이 문제 Excel Sheet Column Number - LeetCode 문제 해결 방법 A~Z를 1~26 만드는 것은 쉽습니다. A는 아스키코드로 65이므로, 64 나 ‘@’를 뺴거나, 혹은 ‘A’+1을 한다면 숫자로 출력이 됩니다. 아래 링크를 참조. 10진수 아스키 코드 표 JAVA에서 char타입 사칙연산은 어떻게 작동할까? 자리수에 따라서 추가되는것을 고려하는것이 필요합니다. ZY=Z26 + Y = 2626 + 25 = 676 + 25 = 701 이므로, 뒷자리에서 부터 계산하면 자리수에 필요한 수를 얻을수 있습니다. 계산식 (자리수가 1이상일떄) 알파벳수 * 26^자리수 Github Link https://github.com/eunhanlee/LeetCode_171_ExcelSheetColumn..
JAVA에서 char타입 사칙연산은 어떻게 작동할까? 결과 코드 결과 char type + int type 유니코드를 반환 char type - int type 에러 int type + char type 유니코드를 반환 int type - char type 에러 char type + char type 유니코드를 반환 char type - char type 유니코드를 반환 char type + String type variable 스트링을 반환 char type + char type + String type variable char 숫자+스트링을 반환 string은 Primitive Data Type이 아닙니다. Object 입니다. Primitive Data Types 자바 api 설명 According to Primitive Data Types Java ..
LeetCode 28. Find the Index of the First Occurrence in a String 자바 문제 풀이 문제 Find the Index of the First Occurrence in a String - LeetCode 문제 해결 방법 스트링의 indexOf를 사용하면 한번에 해결이 가능합니다. 만약 indexOf를 사용하면 안된다면, substring을 이용해서 로직을 짤수 있습니다. substring을 이용하여, haystack의 문자열을 needle의 길이만큼 자른다. 자른 문자열을 비교한다. 자를 문자열의 인덱스를 한칸 옮긴다. 이를 반복한다. 만약 자른 문자열의 길이가 needle의 길이보다 짧다면, needle문자열은 존재하지 않으므로 -1을 리턴한다 즉, 이문제는 문자열을 자르고 검색할수 있는 능력이 있는지 묻는 문제입니다. Github Link https://github.com/eunhanl..
빌더 패턴 Builder Pattern 정의 빌더 패턴(Builder Pattern)은 복잡한 객체의 생성 과정을 추상화하여 클라이언트가 단계적으로 객체를 생성할 수 있도록 하는 디자인 패턴입니다. 구조 목적 빌더 패턴의 주요 목적은 복잡한 객체의 생성 과정을 분리하여 객체 생성을 단순화하고 유연성을 제공하는 것입니다. 클라이언트는 단계적으로 객체를 생성할 수 있으며, 생성자에 많은 매개변수가 필요한 경우에도 가독성을 향상시킵니다. 사용을 고려해야 하는 경우 객체 생성 과정이 복잡하고 다양한 단계로 구성되어 있는 경우 여러 가지 속성 조합으로 객체를 생성해야 하는 경우 생성자에 많은 매개변수가 필요한 경우 사용하면 안되는 경우 객체 생성 과정이 단순하거나 속성이 매우 적은 경우 객체의 속성이 불변(Immutable)인 경우 생성자의 매개변수 ..
LeetCode 1920. Build Array from Permutation 자바 문제 풀이 문제 Build Array from Permutation - LeetCode 문제 해결 방법 어레이와 for문의 구조를 알고 제대로 사용할수 있는지 묻는 문제. input array의 길이만큼 필요한 수가 입력되므로, edge case를 고민할 필요도 없음. 굳이 최적화를 한다면, System.gc()를 사용하여 강제적으로 가비지 컬렉션을 사용, 메모리를 아끼는것이지만, 자바에서는 이를 요청하지 않는것이 권장됨. Github Link https://github.com/eunhanlee/LeetCode_1920_BuildArrayfromPermutation_Solution 시간복잡도: O(n), 공간복잡도: O(n) public class Solution { /** * 주어진 입력 배열을 기반으로 새로운 ..
LeetCode 62. Unique Paths 자바 문제 풀이 문제 Unique Paths - LeetCode 문제 해결 방법 문제 해결방법에는 조합을 사용하는 방법과 동적프로그래밍을 사용하는 방법등이 있습니다. 조합을 사용하면 수학적으로 계산하므로, 코드는 인간이 이해하기 쉽지만, 팩토리얼 계산떄문에 시간이 오래걸릴수 있고, 동적프로그래밍은 추가적인 배열을 사용해야 해서 공간을 좀더 사용한다는 특징이 있습니다. 조합을 이용하는 방법 오른쪽과 왼쪽으로 이동해야 하는 양은 변함이 없습니다. 조합이란, 일부 문자를 선택하여 만들 수 있는 모든 가능한 경우의 수이며, n과 r을 선택할수 있으면 쉽게 구현할수 있습니다. n: 전체 요소의 수 r: 선택해야 하는 요소의 수 계산식: Total combinations = n! / (r! * (n - r)!) 문제에서 입력받는 ..
LeetCode 2114. Maximum Number of Words Found in Sentences 자바 문제 풀이 문제 Maximum Number of Words Found in Sentences - LeetCode 문제 해결 방법 이 문제는 문장에서 단어의 개수를 세고, 이를 비교해서 가장 많은 단어수를 찾는 문제입니다. 반복문, 단어개수 세는법, 최대값 찾는 법 등을 알고 있고 이를 잘 조합하여 사용할수 있는지 묻는 문제입니다. 알고리즘 반복문을 사용하여 각각 문장을 확인합니다 각 문장의 단어수를 계산합니다 단어 수들을 비교하여 최대값을 찾아냅니다. 여러가지 방법이 있는데 이유는 각각 반복문, 단어개수 세는법, 최대값 찾는 법등이 여러가지가 있기 떄문입니다. 반복문: for문, while문, advanced for문 단어개수 세는법: split을 이용하여 분할하여 단어 개수 세기, char어레이로 빈칸수를 찾은다..
LeetCode 36. Valid Sudoku 자바 문제 풀이 문제 Valid Sudoku - LeetCode 문제 해결 방법 이 문제는 수도쿠의 맵을 생성시 그 조건을 체크하는 코드를 생성하는 문제이다. Solution 2는 가장 최적화된 코드이고, Solution 1는 분할을 많이하여 나중에 수정을 염두에 둔 코드이다. Github Link https://github.com/eunhanlee/LeetCode_36_Valid_Sudoku_Solution.git Solution 1 시간복잡도: O(1), 공간복잡도: O(1) import java.util.*; public class Solution { /** * 주어진 스도쿠 보드가 유효한지 확인합니다. * * @param board 스도쿠 보드를 2차원 char 배열로 표현합니다. * @return 보드가 유효하..

반응형