본문 바로가기


전체

[PS] Meeting Rooms(Medium) solution in JAVA Meeting Rooms2 문제 회의시간이 주어지면 총 사용해야하는 회의실이 최소 몇개인가를 구하는 문제이다. Easy 만큼 쉬운줄알고 정렬하고 그냥 막 풀었다가 아차 싶었다. 처음에 접근한 방법은 Map 에 모든 시간 데이터를 넣고 겹치는 시간을 넣은 List 의 사이즈를 비교하는방법이었는데 아니 무슨 미팅룸 시간이라면서 10만자리 대의 숫자를 input 으로 주길래 시간초과로 실패했다. 리트코드의 단점이 아닐까 input 의 사이즈가 명시되지 않는 문제들이 있는것 PQ 를 쓰면 시간내에 들어올 수 있다. 코드를 보여주고 그림으로 설명하겠다. public Interval[] convert(int[][] arr) { return Arrays.stream(arr) .map(it -> new Interval..
[PS] Meeting Rooms(Easy) Solution in Java Meeting Room 이지 버전 풀이이다. MergeIntervals 풀이를 보고오면 매우 쉽다. public class MeetingRooms { public boolean canAttendMeetings(int[][] intervals) { Arrays.sort(intervals, (o1, o2) -> { return o1[0] == o2[0] ? Integer.compare(o1[1], o2[1]) : Integer.compare(o1[0], o2[0]); }); new ArrayList(); for(int i = 0; i intervals[i + 1][0]) { return false; } } retu..
[Java] Java 에는 pair(c++) 가 외없데? 원래 PS 할 때 쓰던 언어가 C++ 이어서 pair 를 아주 요긴 하게 썼었는데 엄청 쉽게 좌표표현 등을 할 수 있었으니까. vector edge; 이런식으로 말이다. 근데 자바가 주언어가 되고나서도 쭉 C++ 로 문제를 풀어오다가 자바로 언어를 바꿔야겠다고 생각하고 문제를 풀려니까 저 pair 가 너무 쓰고 싶었다. 사실 구현해서 써도 된다. class Pair { Integer key; Integer value; public Pair(Integer key, Integer value) { this.key = key; this.value = value; } public Integer getKey() { return key; } public Integer getValue() { return value; ..
[AdSense] 광고로 부자가 되어보자 tistory 에 Adsense 달기 (No plugIn) 인간은 누구나 부자가 되고싶다. 나 또한 그렇다. 투데이가 바닥을 기는 내 블로그에 광고하나 달았다고 부자가 되진 않지만 부자가 될 가능성이 있는 여러분들을 위해 tistory 에 광고 다는 법을 알려드리겠습니다. 티스토리에서는 AdSense 플러그인을 제공하지만 영.. 잘안먹더라.. 왜지? 아무튼 블로그 여기저기 붙이지 않고 원하는 위치에 붙이고 싶은 사람을 위한 방법이다. 1. 에드센스 신청 https://www.google.co.kr/intl/ko/adsense/start 여기로 들어가서 가입을 하고 어디에 광고를 달고 싶으니 하고 물어보면 내 블로그 url(https://ramees.tistory.com/) 을 주면 코드를 주고 head 사이에 삽입하라고 한다. head 는 어디있냐면 [당신의블로..
[PS] MergeIntervals Solution in Java Leetcode MergeIntervals Solution 문제설명 불규칙하게 들어오는 배열의 범위를 Merge 한 배열을 찾는 것 Input [[1,3],[2,6],[8,10],[15,18]] Output [[1,6],[8,10],[15,18]] Input Output 설명 1,3과 2,6 은 겹치는 구간이 있으므로 merge 된것 코드 public class MergeIntervals { //javaxf Pair doesn't work at leetcode TT class Pair { Integer key; Integer value; public Pair(Integer key, Integer value) { this.key = key; this.value = value; } public Integer..
[Java] 자바로 2차원 배열 2번째 element 까지 정렬하기, Comparator 알고리즘 문제를 풀거나 할 때 코드내에서 배열을 정렬해야 하는 상황이 온다. 자바에서 배열 정렬은 다음과 같이 간단하게 할 수 있다. Arrays.sort(arr) 근데 만약에 저 array가 2차원이라면? exception 이 떨어진다. java.lang.ClassCastException: [I cannot be cast to java.lang.Comparable at java.util.ComparableTimSort.countRunAndMakeAscending(ComparableTimSort.java:320) at java.util.ComparableTimSort.sort(ComparableTimSort.java:188) at java.util.Arrays.sort(Arrays.java:1246) a..
[Algorithm] 슬라이딩 윈도우(Sliding Window) 알고리즘 슬라이딩 윈도우 알고리즘 슬라이딩 윈도우 알고리즘은 윈도우 즉 일정한 범위를 가지고 있는 것을 유지하면서 이것을 이동(sliding) 하는 것이다. 예를들어 2가지 긴 문자열이 주어지고 알파벳 2개만을 포함하는 가장 긴 문자열을 찾아보는 문제가 있다, 이 문제를 슬라이딩 알고리즘을 이용하여 풀면 다음과 같이 파란색으로 칠해진 영역이 윈도우가 되고 이를 하나씩 밀게 되는 것이다. 그림의 Right 를 하나씩 움직이면 되는데 Right 가 C 를 가리키면 다음 포함하는 문자열이 3개가 되므로 윈도우가 더이상 확장 되지 않고 다음 윈도우로 움직인다. 이런식으로 움직이게 되는 것이다. 마찬가지로 D로 움직이면 CD 만 포함하게 되는것이다. Max lenght 를 값으로 가지면서 윈도우를 옮길 수 있는데 윈도우의..
[OOP] 책임과 역할의 차이 그리고 타입의 구현 방법 객체지향 관련글을 보다가 책임과 역할의 개념이 나왔다. 책임은 객체가 해야할 행위를 나타내고 역할을 그 책임이 모여 가지게 되는 것이 역할인 것이다. 조형호 작가님의 객체지향의 사실과 오해에서 보면 증언을 해야할 책임을 가진 증인 여기서 증언해야할 책임있고 그것을 하는 주체인 증인이 역할이 된다. 여기서 궁금한게 생겼다. 이상한 나라의 앨리스에서 재판이 열리고 여기서 트럼프 왕이 재판장인 역할을 맡는다. 트럼프가 있고 트럼트왕이있다. 그러면 트럼는 슈퍼타입(Super Type) 트럼프왕은 서브타입(Sub Type) 이다. 그리고 트럼프왕은 '재판장' 이라는 역할을 가지고 있다. 개념적으로 이해는 가지만 결국 이걸 구현하려다 보니 궁금해졌다. 그럼 어떻게 구현하지? 타입과 역할의 차이는 뭐지 역할이 타입이..