목록2024/07 (20)
ballqs 님의 블로그
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)..
다형성(polymorphism)이란?다형성(polymorphism)이란 하나의 객체가 여러 가지 타입을 가질 수 있는 것을 의미한다.예를 들어 강아지나 고양이의 경우 둘 다 포유류라고 할 수 있다.자바에서 다형성은 한 타입의 참조 변수를 통해 여러 타입의 객체를 참조할 수 있도록 하는 것이다. 즉 부모 클래스를 통해 자손 클래스의 참조 변수를 다루거나 부모 클래스가 가지고 있는 동일한 이름의 오버라이딩하여 재작성한 메소드를 참조한다.다형성의 장점같은 메서드 이름이지만 여러 다른 실행 결과가 나옴객체지향 프로그래밍의 가장 큰 특징 중 하나하나의 부모클래스로 관리가 가능해 유지보수가 편리하다코드 예public class Main { public static void main(String[] args) ..
오늘은 자바 파일을 생성하면 만들어지는 구조와 온갖 배운 내용들을 정리해볼 생각이다. Main.java 파일을 생성하면 아래와 같다.public class Main { public static void main(String[] args) { // 내용 }} public 이란? 접근제어자의 종류중 하나로 언제 어디서든 접근 가능하다는 것을 의미한다. 다른 종류로는 private , protected , default 등이 있다. 단! class 앞에는 public 과 default 만 사용 가능하다.더보기public : 언제 어디서나 접근 가능 private : 같은 클래스 내에서만 접근 가능 protected : 같은 패키지 내에서, 그리고 다른 패키지의 자손 클래스에서 접근..
JVM이란?Java Virtual Machine의 약자로 "자바 가상 머신"이라는 뜻여러가지 기기 위에 Java 프로그램을 실행시킬 수 있는 가상의 기기를 만들어 주는 것을 의미바이트 코드내가 작성한 Java 파일을 운영체제가 읽을 수 있는 클래스 파일로 컴파일(Java 컴파일러)을 통해 변환한 코드 인터프리터운영체제가 읽은 바이트 코드를 기계가 실행할 수 있는 기계어로 번역 JIT 컴파일러인터프리터의 효율을 높여주는 서포터 해석기 메모리 영역운영체제로부터 JVM이 할당받은 메모리 영역 클래스 로더JVM으로 바이트 코드를 불러와서 메모리에 저장함 가비지 컬렉터메모리 영역에 안쓰는 데이터를 주기적으로 청소해줌 ※Runtime 시스템은 프로그램이 실행 중인 상태를 관리하는 시스템
프로그래머스의 N개의 최소공배수라는 문제를 풀면서 알게된 내용들이 있다.분명 어렸을때 학교를 다니면서 배웠던 내용인 최대 공약수와 최소 공배수였지만 이부분을 알고리즘으로 풀어내고자 하니 규칙을 찾아내기 보다는 나만의 풀이과정을 통해 풀게 되었다. 소인수분해를 통해 주어진 각 숫자의 최대 제곱을 구하여 풀어내는 방법이였다. 나의 풀이 방법과 동시에 최대 공약수 , 최소 공배수는 어떻게 구현해가는지 정리해보자최대 공약수(GCD) 알고리즘최대 공약수(Greatest Common Divisor)란? 두 수 이상의 여러 수의 공약수 중 최대인 수를 가리킨다. 12의 소인수분해 해보면 2 * 2 * 3이 된다.18을 소인수분해 해보면 2 * 3 * 3이 된다.두 수에서 소인수분해 후 주어진 숫자가 일치하는 것에서 ..
1.오늘 배운 것아무래도 개인학습조에 속해있다보니 거의 많은 시간을 코딩문제에 부딪혀가면서 모자란 부분을 배워가는건 오늘이 마지막이 아닌가 싶다. 오늘 배운것은 프로그래머스 코딩 문제인 피보나치 문제를 풀면서 부딪힌 문제였다.주어진 조건이 n의 값이 2이상 100,000 이하인 자연수다보니 수가 말도 안되게 커지면서 용량 초과로 에러난 것이기에 여러 자료형을 조사하게 되었다. 2.문제 풀어나가는 과정피보나치는 기본적인 개념은 알고 있었다.첫째 및 둘째 항이 1이며 그 뒤의 모든 항은 바로 앞 두 항의 합인 수열이다.F(0) + F(1) = F(2) 0 + 1 = 1F(1) + F(2) = F(3) 1 + 1 = 2F(2) + F(3) = F(4) ..