목록전체 글 (75)
ballqs 님의 블로그
오늘의 일정9:00 ~ 10:00 - 알고리즘 코드카타10:00 ~ 12:00 - 팀 프로젝트 PPT 작성12:00 ~ 13:00 - 점심시간13:00 ~ 18:00 - 팀 프로젝트 PPT 작성18:00 ~ 19:00 - 저녁시간19:00 ~ 22:00 - 팀 프로젝트 PPT 작성22:00 ~ - TIL 작성알고리즘 코드카타프로그래머스 소수 찾기라는 문제를 풀었다.해당 문제는 숫자만 들어있는 문자열이 주어지고 해당 문자열을 하나씩 분리한 다음에 온갖 조합을 통해 숫자를 만들어내고 그 숫자가 소수인지를 찾는 문제였다. 제한사항numbers는 길이 1 이상 7 이하인 문자열입니다.numbers는 0~9까지 숫자만으로 이루어져 있습니다."013"은 0, 1, 3 숫자가 적힌 종이 조각이 흩어져있..
예전에 정렬에 관련된 게시물을 작성한 적이 있다.Array.sort와 Collections.sort의 차이점 이다. 하지만 여기에서는 말그대로 sort에 관련된 것만 작성했고Comparator 과 Comparable 를 이용한 정렬이 아니였다. 그래서 작성하여 메모해두려고 한다. Comparator compare()Comparator Interface를 찾아보면 compare()라는 메서드가 있고 int를 반환하도록 되어있다.compare() 메서드는 매개변수를 기반으로 비교한다.import java.util.Comparator;public class Test { public static void main(String[] args) { Person person1 = new Person(..
BFS(Breadth-First Search) 이란?너비 우선 탐색이라고 불리며 그래프 자료구조에서 완벽 탐색을 수행하는 탐색 기법이다.시작부분인 노드에 방문한 후 인접한 노드들을 우선으로 방문하며 기본적으로는 Queue 자료 구조를 이용해서 구현한다.특징재귀적으로 동작하지 않는다.BFS도 DFS처럼 노드 방문 여부를 검사해야 한다.최단경로를 찾는데 활용한다.탐색 과정 노드1 를 시작으로 자료구조에 데이터를 넣으면서 시작한다.노드1를 진행하고 방문완료 처리 후 노드1에서 파생되는 노드2와 노드3를 자료구조에 넣는다.2번 과정에 의해 노드2가 먼저 자료구조에 들어갔기에 노드2를 진행하며 노드2 또한 진행하고 방문완료 처리 후 노드 2에서 파생되는 노드4와 노드5를 자료구조에 넣는다.노드3를 진행하고 방문..
오늘의 일정9:00 ~ 10:00 - 알고리즘 코드카타10:00 ~ 12:00 - 팀 프로젝트12:00 ~ 13:00 - 점심시간13:00 ~ 16:00 - 팀 프로젝트16:00 ~ 17:00 - 나무반 강의17:00 ~ 18:00 - 팀 프로젝트 18:00 ~ 19:00 - 저녁시간19:00 ~ 22:00 - 팀 프로젝트22:00 ~ - TIL 작성알고리즘 코드카타프로그래머스의 롤케이크 자르기 문제를 풀이를 진행했다.해당 문제는 롤케이크에 토핑이 올라가 있는데 해당 토핑에는 여러가지 종류가 있다. 이 롤케이크를 형과 동생이 두조각으로 나눠 먹을때 서로 먹은 토핑의 개수가 같을 경우가 몇회 정도인지 구하는 문제이다.잘린 롤케이크 위에 올려진 토핑은 중복을 제거하고 개수를 세어서 비교하면 ..
오늘의 일정9:00 ~ 10:00 - 알고리즘 코드카타10:00 ~ 10:30 - 팀프로젝트 발제10:30 ~ 12:00 - 팀 회의12:00 ~ 13:00 - 점심시간13:00 ~ 17:00 - 팀 회의17:00 ~ 18:00 - 팀 프로젝트18:00 ~ 19:00 - 저녁 시간19:00 ~ 20:30 - 팀 프로젝트20:30 ~ 21:00 - TIL 작성알고리즘 코드카타뒤에 있는 큰 수 찾기 알고리즘 풀이를 진행했다.해당 문제는 정수로 이루어진 배열 numbers가 있는데 여기서 각 원소들의 대해 자신보다 뒤에 있는 숫자 중에서 자신보다 큰수를 배열이 담아서 return 하는 방법이다.다만 하나의 예외적인 상황이 있는데 큰수가 존재하지 않으면 -1를 담는다. 제한사항4 1입출력 예numbersresu..
IT 회사에 취업하기 위해서는 2가지를 준비해야한다고 들었다.1. 미니프로젝트2. 코딩 테스트 미니프로젝트는 코딩테스트 같은 알고리즘보다는 주어진 프로젝트에 기능을 구현해서 제출하는 방법이다.이는 메일을 받아서 주어진 기간내에 구현하는 것이라 아무래도 공부해야하는 방법이 코딩 테스트와는 다른감이 있다.하지만 이 작성글에서는 코딩테스트를 다루는 글이니 미니프로젝트가 아닌 코딩테스트 쪽으로 살펴보자.준비해야 하는 알고리즘은 아래처럼 많다.DFS : 깊이 우선 탐색 알고리즘백트래킹 : DFS에서 더이상 정답이 아니라고 판단되는 부분은 탐색하지 않도록 가지치며 탐색하는 알고리즘BFS : 너비 우선 탐색 알고리즘(최단경로)투포인터(Two Pointer) : 특정 구간에서 작업을 할때 효율적에라토스테네스의체 : 특..
프로그래머스에 있는 알고리즘 문제 피로도를 풀다가 고생한 것들을 작성해볼까 한다.문제에 들어가보면 자세히 적혀 있겠지만 요약해서 적도록 하겠다.문제 설명XX게임에는 피로도 시스템이 있으며 일정 피로도를 사용해서 던전을 탐험할 수 있다. 다만 해당 던전에 대한 정보를 담고 있는 dungeons 이라는 변수가 있다고 치자! 해당 던전의 정보는 입장시 "최소 필요 피로도 수치" 와 "소모 피로도" 수치를 가지고 있다. 그리고 한번이라도 탐험한 던전에는 재입장 불가능이며 k 라는 피로도 수치가 주어지면 최대 몇번의 던전을 클리어 할수 있는지 리턴하는 함수를 작성하는 문제이다.제한 사항k는 1 이상 5,000 이하인 자연수dungeons의 세로(행) 길이(즉, 던전의 개수)는 1 이상 8 이하dungeons의 ..
Stream이란?Java 8부터 추가된 기술로 람다를 활용해 배열과 컬렉션을 간단하게 처리할 수 있는 기술이다. Java 8 이전에는 데이터의 요소를 관리하려면 반복문을 이용해서 하는 방법이였으나 Stream이 생긴 이후에는 함수 여러 개를 조합하여 결과를 필터링하여 가공된 결과를 얻을수 있게 되었고 이를 람다 표현식으로 사용했기에 가독성까지 챙길 수 있게 되었다.Stream의 특징Stream은 데이터를 변경하지 않는다.Stream은 일회용이다.Stream은 작업을 내부 반복으로 처리한다.Stream의 흐름생성하기 : 스트림 인스턴스 생성가공하기 : 필터링 및 맵핑 등 원하는 결과를 만들어가는 중간 작업결과 만들기 : 최종적으로 결과를 만들어내는 작업흐름 : 전체 -> 맵핑 -> 필터링1 -> 필터링2 ..
오늘 정리할 내용은 함수형 인터페이스이다.왜냐하면 람다식을 사용하려다 감이 안잡혀서 이래저래 알아본 결과@FunctionalInterface 를 사용했더니 해결 가능해져서 이다. 우선 @FunctionalInterface 어노테이션 은 자바8에서 추가되었다. 함수형 인터페이스(Functional Interface) 는 추상 메서드가 딱 하나만 존재하는 인터페이스를 말한다.※추상 메서드란? 구현이 안된 메서드이며 abstract 키워드를 앞에 붙이며 아래와 같이 사용abstract void myMethod(String str); 그리고! 이러한 함수형 인터페이스에 작성된 추상 메서드를 람다식으로 접근하여 작성할수 있다. 간단한 예시로 살펴보자! Interface Code@FunctionalInterfac..
자바 8버전으로 넘어오면서 자바로 크게 많이 변경되었다.예전에 배웠을때랑 크게 차이가 나는게 있는데 Javascript에서 사용했었던 람다식으로 작성이 가능해졌다는 것이다.그렇게 시대에 맞게 진화했기에 지금의 자바가 된게 아닌가 싶긴 하다.그러면 람다를 어떻게 사용해나갔는지 살펴보자 람다식이란?쉽게 말해서 메서드를 "하나의 식"으로 표현한 것이다.훨씬 간략하게 표현이 가능하게 되며, 메서드의 이름과 반환값이 없어지므로 "익명함수" 라고도 한다.public class B() { public boolean flag(int num) { boolean f = true; // 내용 return f; }}// 사용할때B b = new B();if (b.flag(50)..