2022년 04월 25일 월요일 - 월욜 시러


오늘 올려볼 문제는 284번 Peeking Iterator 이라는 문제이다.


사진을 클릭하면 해당 문제로 이동합니다.

leetcode 문제 사진

오늘도 LeetCode 사이트 오늘의 문제를 가지고 왔다.

요즘 왤케 구현문제 마늠?


입력


입력을 설명하기 애매한 문제다. 문제를 참고해주길 바란다.



풀이 및 코드


peek이 가능한 iterator를 구현하는 문제다.


오늘은 처음부터 정답을 생각해냈다.

boolean 하나와 저장할 변수 하나로 미리 저장해둔 다음에 문제를 풀었다.


이제 코드를 봐보자!


풀이코드

class PeekingIterator implements Iterator<Integer> {
    int save = 0;
    boolean isPeeked = false;
    Iterator<Integer> it;

	public PeekingIterator(Iterator<Integer> iterator) {
	    it = iterator;
	}

	public Integer peek() {
        if(isPeeked) return save;

        save = it.next();
        isPeeked = true;

        return save;
	}

	@Override
	public Integer next() {
	    if(isPeeked)
        {
            isPeeked = false;
            return save;
        }

        return it.next();
	}

	@Override
	public boolean hasNext() {
	    if(isPeeked) return true;

        return it.hasNext();
	}
}




제출 화면

leetcode 문제 맞았습니다


구현 문제가 너무 많이 나와서 요즘 재미가 별로 없다.

내일은 재밌는 문제가 나왔으면 좋겠다.


내일도 문제를 풀어서 블로그에 글을 쓸 수 있으면 좋겠다.

2022년 04월 23일 토요일 - 토요일 넘 조아


오늘 올려볼 문제는 535번 Encode and Decode TinyURL 이라는 문제이다.


사진을 클릭하면 해당 문제로 이동합니다.

leetcode 문제 사진

오늘도 LeetCode 사이트 오늘의 문제를 가지고 왔다.

오늘 문제 신박했당


입력


입력을 설명하기 애매한 문제다. 문제를 참고하길 바란다.



풀이 및 코드


url을 압축하고 다시 압축해제하는 클래스를 구현하는 문제다.


오늘은 처음부터 정답을 생각해냈다.

해쉬맵 2개를 사용해서 문제를 풀었다.


이제 코드를 봐보자!


풀이코드

public class Codec {
    HashMap<Integer, String> encodeMap = new HashMap<>();
    HashMap<String, Integer> decodeMap = new HashMap<>();
    int index = 0;

    public String encode(String longUrl) {
        if(!decodeMap.containsKey(longUrl))
        {
            encodeMap.put(index, longUrl);
            decodeMap.put(longUrl, index++);
        }

        return "http://tinyurl.com/" + decodeMap.get(longUrl);
    }

    public String decode(String shortUrl) {
        int input = Integer.parseInt(shortUrl.substring(19));

        return encodeMap.get(input);
    }
}




제출 화면

leetcode 문제 맞았습니다


오늘 문제는 많이 신박해서 재밌었다.

내일 문제도 재밌었으면 좋겠다.


내일도 문제를 풀어서 블로그에 글을 쓸 수 있으면 좋겠다.

2022년 04월 22일 금요일 - 금욜이다!!!


오늘 올려볼 문제는 706번 Design HashMap 이라는 문제이다.


사진을 클릭하면 해당 문제로 이동합니다.

leetcode 문제 사진

오늘도 LeetCode 사이트 오늘의 문제를 가지고 왔다.

아니 풀게 없자너..


입력


입력을 설명하기 애매하다. 문제를 참고해주기를 바란다.



풀이 및 코드


HashMap을 구현하는 문제다.


오늘은 처음부터 정답을 생각해냈다.

뭘 구현하나... 걍 해쉬맵 썼다.


이제 코드를 봐보자!


풀이코드

class MyHashMap {
    HashMap<Integer, Integer> map = new HashMap<>();

    public MyHashMap() {

    }

    public void put(int key, int value) {
        map.put(key, value);
    }

    public int get(int key) {
        return map.getOrDefault(key, -1);
    }

    public void remove(int key) {
        map.remove(key);
    }
}




제출 화면

leetcode 문제 맞았습니다


아니 왜 알고리즘 문제가 안나오는지 모르겠다..

내일은 알고리즘 문제라고 할만한 문제가 나왔으면 좋겠다.


내일도 문제를 풀어서 블로그에 글을 쓸 수 있으면 좋겠다.

2022년 04월 21일 목요일 - 출근하는 시간이 2시간???


오늘 올려볼 문제는 705번 Design HashSet 이라는 문제이다.


사진을 클릭하면 해당 문제로 이동합니다.

leetcode 문제 사진

오늘도 LeetCode 사이트 오늘의 문제를 가지고 왔다.

아니 너무 쉽자너


입력


입력이 애매한 문제다. 문제를 참고해주기를 바란다.



풀이 및 코드


HashSet 클래스를 구현하는 문제이다.


오늘은 처음부터 정답을 생각해냈다.

HashMap을 사용해서 문제를 풀었다.


이제 코드를 봐보자!


풀이코드

class MyHashSet {
    HashMap<Integer, Boolean> map = new HashMap<>();

    public MyHashSet() {

    }

    public void add(int key) {
        map.put(key, true);
    }

    public void remove(int key) {
        map.remove(key);
    }

    public boolean contains(int key) {
        return map.getOrDefault(key, false);
    }
}




제출 화면

leetcode 문제 맞았습니다


사실 오늘 출근하느라 너무 힘들었는데 문제가 쉬워서 뭔가 기분이 좋았다.

내일은 적당히 어려운 문제가 나왔으면 좋겠다.


내일도 문제를 풀어서 블로그에 글을 쓸 수 있으면 좋겠다.

2022년 04월 20일 수요일 - 시간이 안가요 시간이~~


오늘 올려볼 문제는 173번 Binary Search Tree Iterator 이라는 문제이다.


사진을 클릭하면 해당 문제로 이동합니다.

leetcode 문제 사진 leetcode 문제 사진

오늘도 LeetCode 사이트 오늘의 문제를 가지고 왔다.

회사에서는 그냥 집에서는 Follow Up까지 풀어따


입력


오늘은 입력을 제대로 설명하기 힘들다. 문제를 참고해주길 바란다.



풀이 및 코드


BSTIterator 클래스를 구현하는 문제다.


오늘은 처음부터 정답을 생각해냈다.

Stack을 만들어서 left 노드만 저장하게 한다.

오른쪽 노드는 Stack에서 노드를 꺼낸다음에 얻어온다.


이제 코드를 봐보자!


풀이코드

class BSTIterator {
    Stack<TreeNode> s = new Stack<>();

    public BSTIterator(TreeNode root) {
        dfs(root);
    }

    public void dfs(TreeNode root)
    {
        if(root == null) return;

        s.push(root);
        dfs(root.left);
    }

    public int next() {
        TreeNode now = s.pop();
        dfs(now.right);

        return now.val;
    }

    public boolean hasNext() {
        return !s.isEmpty();
    }
}




제출 화면

leetcode 문제 맞았습니다


오늘 문제는 쉬운편이라서 금방 풀었다.

내일 문제는 꽤나 재밌었으면 좋겠다.


내일도 문제를 풀어서 블로그에 글을 쓸 수 있으면 좋겠다.

2022년 04월 18일 월요일 - 해가 마니 길어져따


오늘 올려볼 문제는 230번 Kth Smallest Element in a BST 이라는 문제이다.


사진을 클릭하면 해당 문제로 이동합니다.

leetcode 문제 사진 leetcode 문제 사진

오늘도 LeetCode 사이트 오늘의 문제를 가지고 왔다.

아 너무 깔끔해 개머시써 이러니깐 프로그램들이 뻑이가지


입력


사진에서도 볼 수 있듯이 Binary Search Tree 1개와 int 값 1개가 입력으로 들어온다.



풀이 및 코드


Binary Search Tree 중에서 k 번째로 작은 수를 리턴하는 문제다.


오늘은 처음부터 정답을 생각해냈다.

dfs를 사용하는데 왼쪽부터 순회하면서 자기 자신을 순회할 때 k값을 떨어뜨리고 k가 0이 되면 그 값을 저장하여 리턴하게끔 구현했다.


이제 코드를 봐보자!


풀이코드

class Solution {
    int num;
    TreeNode result;
    public int kthSmallest(TreeNode root, int k) {
        num = k;
        solve(root);

        return result.val;
    }

    public void solve(TreeNode root)
    {
        if(root == null || result != null) return;

        solve(root.left);

        num--;

        if(num == 0) result = root;

        solve(root.right);
    }
}




제출 화면

leetcode 문제 맞았습니다


오늘은 너무 문제를 깔쌈하게 잘 풀었다.

내일도 이렇게 잘 풀었으면 좋겠다.


내일도 문제를 풀어서 블로그에 글을 쓸 수 있으면 좋겠다.

2022년 04월 17일 일요일 - 으어 프로젝트... 빡세구만...


오늘 올려볼 문제는 897번 Increasing Order Search Tree 이라는 문제이다.


사진을 클릭하면 해당 문제로 이동합니다.

leetcode 문제 사진

오늘도 LeetCode 사이트 오늘의 문제를 가지고 왔다.

효율따윈 버려


입력


사진에서도 볼 수 있듯이 Binary Search Tree 1개가 입력으로 들어온다.



풀이 및 코드


Binary Search Tree를 Increasing Order Search Tree로 전환하는 문제다.


오늘은 처음부터 정답을 생각해냈다.

효율은 떨어지지만 TreeNode 배열을 만들어서 다시 재정렬해주는 방식으로 문제를 풀었다.


이제 코드를 봐보자!


풀이코드

class Solution {
    public TreeNode increasingBST(TreeNode root) {
        TreeNode[] arr = new TreeNode[1005];

        Queue<TreeNode> q = new LinkedList<>();
        q.add(root);

        while(!q.isEmpty())
        {
            int size = q.size();

            for(int i = 0; i < size; i++)
            {
                TreeNode temp = q.poll();

                arr[temp.val] = temp;

                if(temp.left != null) q.add(temp.left);

                if(temp.right != null) q.add(temp.right);
            }
        }

        TreeNode start = null, node = null;
        for(int i = 0; i < arr.length; i++)
        {
            if(arr[i] != null)
            {
                if(start == null) start = arr[i];
                if(node == null)
                {
                    node = arr[i];
                    node.left = null;
                    node.right = null;
                    continue;
                }

                node.right = arr[i];
                node = arr[i];
                node.right = null;
                node.left = null;
            }
        }

        return start;
    }
}




제출 화면

leetcode 문제 맞았습니다


사실 더 좋은 방법이 있을 것 같은데 그렇게 풀다가는 오늘 하루가 다 가버릴것 같아서 대충 풀었다.

내일은 쌈박하게 문제를 풀 수 있었으면 좋겠다.


내일도 문제를 풀어서 블로그에 글을 쓸 수 있으면 좋겠다.

2022년 04월 16일 토요일 - 블랙잭 너무 꿀잼이라구~~


오늘 올려볼 문제는 538번 Convert BST to Greater Tree 이라는 문제이다.


사진을 클릭하면 해당 문제로 이동합니다.

leetcode 문제 사진

오늘도 LeetCode 사이트 오늘의 문제를 가지고 왔다.

미디엄치고 너무 쉬워씀


입력


사진에서도 볼 수 있듯이 Binaray Search Tree 1개가 입력으로 들어온다.



풀이 및 코드


주어진 Binaray Search Tree를 Greater Tree로 바꾸어 리턴하는 문제다.


오늘은 처음부터 정답을 생각해냈다.

dfs를 사용하는데 오른쪽 노드부터 탐색하면서 합을 구하고 노드의 값을 바꾸는 방식으로 문제를 풀었다.


이제 코드를 봐보자!


풀이코드

class Solution {
    int sum = 0;
    public TreeNode convertBST(TreeNode root) {
        solve(root);

        return root;
    }

    public void solve(TreeNode root)
    {
        if(root == null) return;

        solve(root.right);

        sum += root.val;

        root.val = sum;

        solve(root.left);
    }
}




제출 화면

leetcode 문제 맞았습니다


오늘은 문제를 이해하는 시간이 문제를 푸는 시간보다 오래걸렸다.

내일 문제는 재밌는 문제가 나왔으면 좋겠다.


내일도 문제를 풀어서 블로그에 글을 쓸 수 있으면 좋겠다.

+ Recent posts