728x90
반응형

자바 21

[LeetCode][Java] 111. Minimum Depth of Binary Tree

이번엔 진짜 혼자 풀었다!! 이제 recursive 알고리즘의 개미 발톱은 보이는 것 같다.! 문제 이번 문제는 root의 자식 노드 중 leaf 노드를 찾는 것! 여기서 leaf 노드란 ? 자식이 없는 노드를 뜻함.! 여기서 약간의 함정이 있다고 보는데,,.. 내가 생각하는 함정은 root의 자식이 없을 경우이다. 이것때문에.. 힘들었즤.. 하하 나의 오답 창피하지만.. 내 오답을 적어놔야 나중에 실수를 안하니깐! /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = v..

[LeetCode][Java] 110. Balanced Binary Tree

문제에 대한 오해가 있어서.. 역대급으로 틀려버렸다.. 역시 오해는 금물!! 문제 left와 right 높이 차이가 1보다 크게 나면 false, 아니면 true를 return 하는 문제! 근데 나는 여기서 root의 left , right 로 생각하면 되는 줄 알고.. 계속 root의 왼쪽과 오른쪽의 최대 높이를 구하고 그 두 개를 비교했다.. 나의 오답 /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeNode(int val, TreeNode..

[디자인패턴] 템플릿 메소드 패턴 | Template Method Pattern | 안드로이드 예제

지난 게시글에서 퍼사드 패턴을 출근 준비로 표현했던 것 처럼..! 이번 템플릿 메소드 패턴도 동일하게 정리를 해봐야겠다.! 출근 준비에 대한 것을 큰 카테고리? 로 보면 알람 -> 씻기 -> 옷입기 -> 이동수단 으로 볼 수 있다. A와 B의 준비 단계를 보자! A : 알람 -> 씻기 -> 옷입기 (원피스) -> 이동수단 (자동차) B : 알람 -> 씻기 -> 옷입기 (파란티) -> 이동수단 (버스) 이다.! 여기서 A,B가 다르지 않고 동일한 과정은 빨간색으로, 다른 과정은 파란색으로 표시를 해보았다. 이를 코드로 표현을 해보자.! "A" 의 준비 과정 class ReadyToWorkA { public void start(TextView tv) { alarm(tv); wash(tv); clothes(t..

[Design Pattern] 어댑터 패턴 | Adapter Pattern

먼저, 위키 백과가 정의 하고 있는 어댑터 패턴은 어댑터 패턴(Adapter pattern)은 클래스의 인터페이스를 사용자가 기대하는 다른 인터페이스로 변환하는 패턴으로, 호환성이 없는 인터페이스 때문에 함께 동작할 수 없는 클래스들이 함께 작동하도록 해준다. (출처 :위키백과) 쉽게 말하면 ... 어댑터 패턴은 위의 짤에 나오는 인형탈과 같이 사람이 어떤 캐릭터를 표현하고자 할 때 사용하는 것!! 이렇게 A가 B의 역할을 하길 원할떄, 사용하는 것이 어댑터 패턴으로 생각하면 쉬울 것 같다. 오리와 가짜 오리, 가짜 오리가 오리처럼 행동하는 것을 어댑터 패턴에 적용시켜 보았다. 오리는 날수 있고, 꿱! 하고 말을 한다. 말을 하는 것, 나는 것으로 각 오리, 가짜 오리를 구성하게끔 만들었다. 이것을 안드..

[디자인패턴] 커맨드 패턴 | Command Pattern | 안드로이드 예제

우는 아이도 보면 울음을 그친다는 마법의.... 리모컨! 이 떠오르는 이번 디자인 패턴!! 은 바로바로바로!!!! 커맨드 패턴 입니다.! 커맨드 패턴이란 ? 요청을 객체의 형태로 캡슐화하여 사용자가 보낸 요청을 나중에 이용할 수 있도록 매서드 이름, 매개변수 등 요청에 필요한 정보를 저장 또는 로깅, 취소할 수 있게 하는 패턴이다. 출처 : 위키백과 쉽게 다시 설명을 하자면! 조명을 컨트롤 할 수 있는 리모컨이 있다고 생각해보자. 아래 그림에서 빨간 동그라미가 쳐져있는 버튼을 누르면 조명이 켜지게 된다. 이때 리모컨에 대한 구현을 어떻게 하면 좋을까 ? Q. 각 버튼에 대해 기능을 지정해 주면 되지 않을까? 1번, 2번, 3번 ... 버튼들에 대해 각각의 기능을 정의해주면 되지 않을까 생각해본다. if(..

[디자인패턴] 데코레이터 패턴 | Decorator pattern

오늘 공부해 볼 패턴은 데코레이터 패턴! 데코레이터 패턴 이란? 데코레이터 패턴(Decorator pattern)이란 주어진 상황 및 용도에 따라 어떤 객체에 책임을 덧붙이는 패턴으로, 기능 확장이 필요할 때 서브클래싱 대신 쓸 수 있는 유연한 대안이 될 수 있다. (출처 : 위키백과) 정의는 위와 같습니다. 제가 이해한 것을 바탕으로 데코레이터 패턴을 재정의 한다면, 기본 틀을 바탕으로 그 위에 살을 추가하여 점점 커지게 만드는 패턴 이라고 할 수 있을 것 같습니다. 예를 들어 설명해보겠습니다. 샌드위치 집에 방문했다고 생각을 합시다. 메뉴에서 샌드위치를 고르게 됩니다. 기본 샌드위치, 햄치즈 샌드위치 등등.. 그 뒤에 무엇을 결정하죠? 바로바로~ 토핑을 추가할지 말지 결정하게 됩니다. 위 사진처럼 기..

[디자인 패턴] 싱글톤 패턴

디자인 패턴 공부.. 숙제가 블로그에 정리하기였는데.. 이제야 정리하네요ㅕ,, 하하 다음엔 일등으로 해보겠습니다..! 싱글톤 패턴이란? 싱글턴 패턴은 인스턴스가 딱 1개만 생성되야 하는 경우에 사용되는 패턴 프린터로 예를 들면, 아래 사진처럼 "프린터" 한 대가 있고, 이 프린터를 8명의 user가 사용하길 원하고 있는 상황이 주어져 있다. 프린터 사용에 대한 과정을 코드로 작성해본다면 어떻게 하면 될까? 제안 1. 단순하게 생각하면, Printer를 관리하는 소스는 이렇게 구현하면 될 것 같다. 하지만 위의 소스처럼 구현을 하게되면, "public"으로 되어 있기 때문에 접근하는 사용자마다 PrinterManager 객체를 생성하게 되고 그럼 총 8개의 PrinterManager 객체가 생성되어 하나의..

[백준] 11726번 타일 채우기

예전에 취업 준비 하면서 공부 했을때도 잘 못했던 DP 문제를 공부하기 위해 DP를 다시 열었다.. 근데 여전히 하~나도 예전보다 어쩌면 더 잘 모르겠다.. 그래서 쉬운거?부터 천천히 공부해봐야지! 문제입니다! 문제에 대해 하나하나 채워보았다. 채우게 되면 위와 같은 모양이 되는데, 여기에는 규칙이 있다. 2x3의 타일을 채우는 방법을 전부 나열하게 되면, 아래와 모양이 되는데 이것은 1번에 2개의 타일을 더하는 방법과 2번에 1개의 타일을 더하는 방법으로 표현 할 수 있다. 여기서 첫번째 세번째 모양이 같아서 이 것을 제외한 3가지 방법이 2x3을 채우는 방법의 개수가 된다. 그럼 이제 규칙성을 눈치챘을까? 나는 이때도 몰라서 한 번 더 채워보았다. 2x4를 채우는 방법을 전부 나열하게 되면, 아래와 ..

[백준] 10773번 제로 Java

오늘도 머리를 달구기 위해 쉬운 문제를 골라보았다. 문제는 즉, 0이 아닌 수는 저장을 하고 0이 나오면 젤 최근에 저장한 수를 없애면 되는 것! 따라서 이 문제는 Stack 문제 였다! 두둔- 처음에 문제만 읽었을 때, 이해가 안가서 아래 설명을 보면서 이해를 했다.. 문제를 이해하는 방법도 좀 익혀야 할텐데.. 문제만 봐선 너무 어려워!! Java에서는 Stack을 제공해 준다고 하는데, Stack을 사용한 적은 없어서 Vector 를 이용해서 문제를 풀어보았다. 나의 Vector를 이용한 소스는 아래에 있다. 소스에서 remove할 때 인덱스를 size - 1 해준 이유는 size : 1 2 3 4 5 6 index : 0 1 2 3 4 5 이기 때문이다! 그 다음에 구글링으로 Stack에 대해 찾..

[백준] 9625번 BABBA Java

이제 입출력 마스터를 했으니 문제를 풀기 위해 "최근 풀린 문제" 에서 문제를 풀었다. 뭔가 랜덤으로 돌리면 어려운 문제가 나와서.. 최근에 푼 사람이 있으면 그래도 조금이나마 풀 수 있을 것 같아서 헤헤.. 근데 너무 어려웠다.. ㅠ_ㅠ 문제는 아래와 같다. 즉 화면에 떠있는 문자가 A -> B, B->BA로 바뀐다는 말과 같다. 그래서 나는 쭉 나열을 해봤다. 입력 횟수 0 1 2 3 4 5 6 출력 문자 A B BA BAB BABBA BABBAAAB BABBABABBABBA A의 개수 1 0 1 1 2 3 5 B의 개수 0 1 1 2 3 5 8 긴 고민 끝에... 규칙성을 찾았다. 입력이 1~45니까 0은 고려를 해주지 않아도 되기때문에 1부터의 규칙석을 찾으면 된다. 그래서 내가 내린 규칙은 이전..

728x90
반응형