본문 바로가기

Algorithm/LeetCode

(13)
LeetCode 13. Roman to Integer 문제링크: leetcode.com/problems/roman-to-integer/ Roman to Integer - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 문제 요약: 문자열(로마숫자)이 주어졌을때, 숫자로 변경하시오. 문제 접근: 로마숫자에 대응되는 숫자를 맵에다 담고, 단순하게 if, else를 여러개 두어서 해결했다. 주의할점은 만약 빼야하는 숫자 (예: IV 5 - 1) 일 경우에는 반복문 변수(i)를 한번 더 더해서 다음 루프에서 다음다음 cha..
LeetCode 337. House Robber III 문제 요약: 이진 트리가 주어졌을때 서로 인접하지 않는 노드들의 최대값을 구하시오. 예: input : [3,2,3,null,3,null,1] output: 7 input: [3,4,5,1,3,null,1] output: 9 문제 접근: root 노드부터 자기자신을 포함했을때와, 안포함했을때의 값을 저장해 둔다음, 자식노드의 값을 비교하여 마지막 노드까지 내려간다. 처음 예제에서 3과 2+3을 가지고 있고 그 자식노드에서 3+3+1과 2+3를 저장해두고 또 자식노드로 가서 비교를 하는 방식으로 구현하면 될 거 같다. 구현 코드: /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * Tr..
LeetCode 2. Add Two Numbers 문제 요약: 2개의 Number형 자료구조(링크드리스트와 유사)가 주어졌을때, 각각의 원소를 더한 자료구조 (input과 같은)를 반환 하시오. 만약, 길이가 다르면 남는 원소 그대로 반환. 단 두자리수가 넘어가면 다음 링크드 리스트의 원소의 값에 1을 더한다. 예: input: 2 -> 4 -> 3 5 -> 6 -> 4 output: 7 -> 0 -> 8 input: 9 -> 9 -> 9 -> 9 -> 9 -> 9 9 -> 9 -> 9 output: 8 -> 9 -> 9 -> 0 -> 0 -> 0 -> 1 input: 2 -> 4 -> 9 5 -> 6 -> 4 -> 9 output: 7 -> 0 -> 4 -> 0 -> 1 문제 접근: 처음에는 input 각각 반복문으로 루프 하나가 진행될때마다 10의 ..
LeetCode 338. Counting Bits 문제 요약: 숫자(input)가 주어졌을때, 1부터 주어진 숫자까지 각각 2진수로 변환했을때, 각각 1의 갯수를 배열로 반환 하시오. 예: input: 2 -> 정답: [0,1,1] input: 5 -> 정답: [0,1,1,2,1,2] 문제 접근: 단순하게 반복문을 돌면서, 각각의 숫자를 2진수로 변환해서 1의 갯수를 구하면되는데, 구글링중 2진수의 규칙을 쉽게 구현할 수 있을거 같아서, 그 원리를 코드로 구현했다. 더 효율적인 코드들이 있는거 같지만 이해하는데는 이게 제일 쉬운거 같아서 아래와 같이 구현했다. 2진수 규칙: 2의 제곱수다음 숫자는 다음 2의 제곱수가 오기 전까지, 현재의 제곱수에 1부터 더하는 규칙을 가지고 있다. 말로 쓰기 어려워서 아래와 같이 보면 이해하기 쉬울?수도 있다. 0 ->..
LeetCode 3.Longest Substring Without Repeating Characters 문제요약: 문자열(input)이 주어졌을때, 반복되는 문자(Character)없는 가장 긴 문자열의 길이를 반환 하시오. 예: input => abcabcbb 정답: 3 input => bbbbb 정답: 1 input => pwwkew 정답: 3 문제접근: 문자열을 처음부터 반복을하면서 똑같은 문자열을 만나기 전까지 루프를 돈다. 만약 반복된 문자열을 만나면 다음 루프로 넘어가고, 이전에 가장 긴 문자열과 비교해서 가장 긴 길이를 체크한다. 구현코드: 언어는 java 사용 import java.util.*; class Solution { public int lengthOfLongestSubstring(String input) { // 빈 문자열이면 그냥 0을 반환 if (input.equals("")) ..