분류 전체보기 31

[Java] JUnit5

1.JUnit은 무엇인가? JUnit은 자바 개발자가 가장 많이 사용하는 테스트 프레임워크이다. JUnit5는 4에서 5로 넘어오면서 여러개의 서브모듈로 나뉘었다 중요한 것들만 살펴보자면 다음과 같다. Junit Platform junit 테스트를 진행하기 위한 TestEngine API을 제공한다. Junit Jupiter JUnit5의 TestEngine API의 구현체 Junit Vintage JUnit3과 JUnit4의 TestEngine API 구현체 2.Junit은 어떻게 사용하는가? 다음과 같이 IntelliJ 에서 gradle 기반으로 프로젝트를 생성하면 자동으로 JUnit4가 의존성 추가가 된다. 우리가 사용할 JUnit은 5 버전이기 때문에 MVNRepository를 접속해서 최신 안정..

Java/STUDY HALLE 2020.12.05

[Java] 제어문

Java에서 코드의 흐름을 통제하는 방법에는 두가지가 있다. 바로 선택문과 반복문인데 이 두가지를 통해 프로그램의 실행 흐름을 조작하는 방법에 대해서 알아보도록 하자. 1. 선택문 if문 if if (inputNumber > 0) { System.out.println("양수입니다."); } if 우측의 괄호에 참, 거짓을 구분할 수 있는 판별식이 들어가고 해당 판별식이 참이라면 그 후에 이어지는 중괄호에 있는 문장을 읽어 실행한다. else if (inputNumber > 0) { System.out.println("양수입니다."); } else { System.out.println("양수가 아닙니다."); } else 의 의미는 위에 해당하는 조건식의 !연산을 한 결과가 참이면 실행한다는 의미이다. 위..

Java/STUDY HALLE 2020.12.05

20/12/04

이번 학기 취업을 위해서 졸업연기를 하고 취업 시장에 도전을 했지만 결과는 거의 대부분은 실패로 결론이 났다. 나에게 부족한 것이 무엇이었을까? 기본기의 부족 이력서 및 자기소개서의 부족 내 생각으로는 이 두 가지의 문제일 것이다. 첫 번째로 기본기가 부족했다. 면접 자리에 가서 Set 과 Map을 헷갈려 서로 반대의 개념으로 대답을 했고 알고리즘 면접을 진행할 때 올바른 알고리즘의 사용처와 해당 알고리즘의 특징에 대해서 제대로 말을 하지 못했다. 운영체제 관련 질문, 네트워크 관련의 질문에서도 기본적인 것들을 질문했는데 꿀먹은 벙어리처럼 당황하여 제대로 답변을 하지 못했다. 대기업 인턴 및 교육기관에서 시행하는 코딩테스트에는 모두 탈락했다. 아쉽게 한 문제를 못 풀어서 떨어졌는지 아니면 전부 다 틀려서..

실패록/회고록 2020.12.04

[Java] 연산자

자바가 제공하는 다양한 연산자를 학습한다. 산술 연산자 비트 연산자 관계 연산자 논리 연산자 instanceof assignment(=) operator 화살표(->) 연산자 3항 연산자 연산자 우선 순위 (optional) Java 13. switch 연산자 1.산술 연산자 + , - , * , / , % 와 같은 우리가 흔히 사용하는 연산자이다. 피연산자와 피연산자를 연산하는 이항 연산을 수행한다. 일반 수학에서 사용하는 것과 같이 사용할 수 있다. ex) 1+1 , 2 * 3 , 4 / 2 , 4 % 3 그렇다면 우리가 일반적으로 사용하는 계산이 자바 컴파일러를 거치면 클래스 파일에서 어떻게 변환되어 계산되는지를 살펴보자. 당연하다고 생각되는 점들은 굳이 따로 집어 표현하지 않았고, 새롭게 알게 된..

Java/STUDY HALLE 2020.11.27

[Java] 데이터타입, 변수, 배열

목표 자바의 원시타입, 변수, 배열을 사용하는 방법을 학습한다. WHY? 프로그래밍이란 결국 값을 메모리 위에 올리고, 그 값을 변경하는 것이 전부다. 따라서 이번 과제에서는 그 두가지 행위중의 50%에 해당하는 "값이 메모리 위에 어떻게 올라가 있는가" 에 대한 것과, 그 사용법에 대해서 익히기 위함인 것 같다. 1. 원시타입의 종류와 값의 범위, 그리고 기본 값 정수 표현형: byte, short, int, long 부동소수 표현형 : float, double 문자형 : char 논리형 : boolean 정수 표현형은 int가 기본형이다. 부동소수 표현형은 double이 기본 표현형이다. 2.원시타입과 참조타입 원시타입은 해당 값을 비트에 직접 저장한다. 그래서 그값이 적힌 메모리의 위치를 찾으면 바..

Java/STUDY HALLE 2020.11.21

[Java]JVM 기술 스택의 구조 이해하기

1주차. 자바 소스 파일(.java)을 JVM으로 실행하는 과정 이해하기. "WHY?" 왜 우리는 자바 소스파일이 JVM 위에서 실행되는 과정을 알아야 할까? "자바는 블루칼라 언어입니다. 박사 학위 논문 주제가 아니라 일을 하려고 만든 언어죠." -제임스 고슬링 자바는 지극히 실용적인 언어이다. 개발환경이 충분히 빠르다면 개발자의 생산성이 높아지는 대가로 어느정도의 성능 희생은 감수할 수 있다는 것이다. 애초에 처음부터 자바는 개발자가 플랫폼을 저수준에서 다 알 필요가 없도록 설계되었다. 그래서 제대로 된 Java 개발자라면 기본적인 JVM 기술스택의 구조를 이해해야 한다. 생산성을 위해 어느정도의 성능을 희생했는지, 필요로 하는 만큼의 성능을 향상 시키기 위해서 다른 언어를 선택하는 것이 더 좋을지 ..

Java/STUDY HALLE 2020.11.14

[알고리즘]프로그래머스 후보키

이 문제는 데이터베이스의 후보키의 개념을 알고 있더라도 문제에 접근하는 방법을 찾기가 쉽지 않았다. 첫 번째 방법으로는 dfs 혹은 bfs 를 활용하여 전체 경우의 수를 모두 탐색하는 방법을 떠올렸다. 제한 사항에 따르면 컬럼과 로우의 길이가 각각 8, 20 이하이기 때문에 dfs bfs 를 사용하여 풀 수 있을 것 같았지만 모든 칼럼의 부분집합의 경우의 수를 탐색하는 알고리즘을 떠올릴 수 없어 다른 방법을 찾아보기로 했다. 두 번째 떠오른 방법은 비트마스킹을 사용한 방법이다. for문을 사용하면 아래와 같은 방법을 통해서 해당 칼럼의 부분집합 전체를 순회할 수 있는 방법이었다. 0 = 0000 8 = 1000 1 = 0001 9 = 1001 2 = 0010 10 = 1010 3 = 0011 11 = 1..

알고리즘 2020.09.11

[알고리즘] 백준 2309 일곱 난쟁이

수학에서의 조합의 개념을 이용해서 풀어야 하는 문제이다. n C r = n-1 C r + n-1 C r-1 ex) 7 C 3 = 6 C 3 + 6 C 2 = 20 + 15 = 35 이 문제에서는 9 C 7 의 경우를 구하면 된다. 그리고 각 계층의 경우에서 해당 번호를 뽑았는지 안뽑았는지 2가지의 경우의 수가 나뉘기 때문에 visited라는 9개의 빈 공간을 가진 visited[9] 배열에 체크가 필요하다. 각 계층에서 끝에 도달하여 9개가 모두 체크가 완료 되었을 때 해당 배열에서의 true 값들만 뽑아낸다면 전체의 경우를 모두 탐색할 수 있고 그 값들 중에서 조건식에 맞는 경우에만 출력을 한다면 알고리즘 완성이다. package b2309; import java.io.*; import java.uti..

알고리즘 2020.03.23