스터디/알고리즘

[Programmers] 순위

본 게시글은 PC 환경에서 보기 편하도록 설정이 되어 있습니다. 순위 그래프 로 분류되어있는 완전탐색류 문제입니다. 저는 모든 경기수를 확인하기 위해 DFS를 이용하여 문제를 풀었습니다. 풀이 스타일 Java와 같은 객체지향 언어를 이용하여 알고리즘을 푼다면 객체지향스럽게 알고리즘을 풀어야 한다고 생각합니다. 단순한 알고리즘 풀이는 가독성은 당연히 떨어지고, Java를 쓰는 이유가 퇴색되는 것 같습니다. 따라서, Java를 이용해서 문제를 푸신다면 객체가 해야할 행동으로 문제를 풀 수 있도록 하시는 것을 추천드립니다. 모든 선수를 Boxer로, Boxer를 List로 전부 들고있는 일급컬렉션인 MatchHistory를 생성수 Boxer가 이길수 있는 모든 Boxer와 Boxer가 질수 밖에 없는 모든 B..

2019.10.20 게시됨

스터디/알고리즘

[Programmers] 프린터

본 게시글은 PC 환경에서 보기 편하도록 설정이 되어 있습니다. 프린터 스택/큐 로 분류되어 있는 문제입니다. 우선순위 큐를 사용하고 우선순위 큐를 사용하기 위해 Comparable 의 compareTo 를 구현할 줄 안다면 쉬운문제입니다. 풀이 스타일 Java와 같은 객체지향 언어를 이용하여 알고리즘을 푼다면 객체지향스럽게 알고리즘을 풀어야 한다고 생각합니다. 단순한 알고리즘 풀이는 가독성은 당연히 떨어지고, Java를 쓰는 이유가 퇴색되는 것 같습니다. 따라서, Java를 이용해서 문제를 푸신다면 객체가 해야할 행동으로 문제를 풀 수 있도록 하시는 것을 추천드립니다. Printer 객체는 두 개의 큐를 가지고 있습니다. 우선 순위가 가장 높은 document 를 head에 가지고 있는 Priority..

2019.10.02 게시됨

스터디/알고리즘

[Programmers] 체육복

본 게시글은 PC 환경에서 보기 편하도록 설정이 되어 있습니다. 체육복 탐욕법(Greedy)으로 분류 되어 있는 문제입니다. 학생들의 체육복 보유 여부와 빌려줄 수 있는지를 빠르게 계산하는 것이 문제의 핵심이었던 것 같습니다. 저는 이를 int[] studentStatus 를 이용하여 -1, 0, 1로 각각 나타내었습니다. 풀이 스타일 Java와 같은 객체지향 언어를 이용하여 알고리즘을 푼다면 객체지향스럽게 알고리즘을 풀어야 한다고 생각합니다. 단순한 알고리즘 풀이는 가독성은 당연히 떨어지고, Java를 쓰는 이유가 퇴색되는 것 같습니다. 따라서, Java를 이용해서 문제를 푸신다면 객체가 해야할 행동으로 문제를 풀 수 있도록 하시는 것을 추천드립니다. Student 객체는 체육복을 빌려야하는지 알려주어..

2019.10.01 게시됨

스터디/알고리즘

[Programmers] 베스트 앨범

본 게시글은 PC 환경에서 보기 편하도록 설정이 되어 있습니다. 베스트 앨범 해시로 분류되어 있는 문제 입니다. 주어진 조건에 따라 compare를 할 수 있도록 @Override 된 compareTo 를 잘 구현하는 것이 관건인 문제입니다. 풀이 스타일 Java와 같은 객체지향 언어를 이용하여 알고리즘을 푼다면 객체지향스럽게 알고리즘을 풀어야 한다고 생각합니다. 단순한 알고리즘 풀이는 가독성은 당연히 떨어지고, Java를 쓰는 이유가 퇴색되는 것 같습니다. 따라서, Java를 이용해서 문제를 푸신다면 객체가 해야할 행동으로 문제를 풀 수 있도록 하시는 것을 추천드립니다. Album 객체와 Album 객체를 List로 들고있는 AlbumBundle 객채를 이용하여 문제를 풀었습니다. 문제를 풀때 조금 더..

2019.09.29 게시됨

스터디/알고리즘

[Programmers] 가장 먼 노드

가장 먼 노드 그래프 문제입니다. 추가적으로 경로 탐색을 위해 BFS로 접근해야 하는 문제였습니다. 문제를 풀때 눈여겨 봐야할 조건이 딱히 있지 않은 문제였습니다. 다만 탐색을 할때 DFS가 아닌 BFS로 접근해야합니다. 저는 처음에 아무생각 없이 DFS로 접근했다가 연산양이 늘어나서 시간초과가 발생했습니다. 사실 문제를 처음에 잘 보셨다면 BFS로 풀어야 한다는 느낌이 들으실것 같습니다! 풀이 스타일 Java는 객체지향 언어이기 때문에 알고리즘 문제를 자바로 풀때 객체를 활용하는 방식으로 풀어야 하고, 이러한 방식은 복잡한 알고리즘 코드일 지라도 다른사람이 코드를 읽기 쉬워지게 만들어주는 것 같습니다. Node 객체를 정의해놓고 간선이 존재하는 Node를 List linkedNodes 를 가지고 있도록..

2019.09.29 게시됨