프로그래밍 언어/Java

(우테코 2주차에 대한 내용이 포함되어 있어 비공개로 올려두었다가 2주차 과제 마감일인 1일 이후에 공개로 전환하였습니다) 이전에 Mock을 사용하는 방법에 대해 간단하게 알아봤다. https://fladi.tistory.com/369 [JAVA] 단위테스트 공부1: Mock 알아보기 객체지향 프로그램에서는 여러가지 객체들이 서로 협력하면서 메시지를 주고 받는다. 그렇기 때문에 클래스의 독립적인 메서드를 테스트하기 위해서는 협력하는 상대를 가짜객체로 만들어서 fladi.tistory.com 좀 더 잘 사용하는 방법이 궁금해서 고민하다가 며칠 전 테코톡 깃허브사용법을 보고 도움이 많이 됐던 기억이 났다. 우테코 공통 피드백에서도 테코톡을 많이 활용해서 공부하면 좋을 것 같다고 하셔서 이번에 테코톡을 몇 개..
객체지향 프로그램에서는 여러가지 객체들이 서로 협력하면서 메시지를 주고 받는다. 그렇기 때문에 클래스의 독립적인 메서드를 테스트하기 위해서는 협력하는 상대를 가짜객체로 만들어서 테스트해야한다. java에서 가짜객체를 만드는 방법은 mockito라는 방법이 있다. 이번에는 mockito에 대해 알아보자! Mock이란? 한국어로 번역하면 "모조품"이라고 한다 객체지향 프로그램에서는 테스트를 수행할 모듈과 연결되는 외부의 다른 서비스나 모듈들을 흉내내는 가짜 모듈을 작성하여 테스트의 효용성을 높이는 데 사용하는 객체이다 독립적인 기능을 테스트하기 위해서 다른 연관된 객체들을 가짜로 만든다고 생각하면 된다 Mock 사용 예시 테스트를 할 때마다 데이터베이스를 띄우면 테스트하는 데 시간이 많이 걸릴 수 있다. 이..
자바로 프로그램을 개발하다 public과 private 메서드를 어떻게 배치해야 좋은 구조인지 궁금해졌다. 구글 자바스타일 가이드에는 클래스 메서드 배치에 대해 다음과 같이 조언한다 The order you choose for the members and initializers of your class can have a great effect on learnability. However, there's no single correct recipe for how to do it; different classes may order their contents in different ways. What is important is that each class uses some logical order, whi..
StringBuilder에는 clear()메서드가 없다. List, Set, Queue와 같이 무언가를 담는 클래스에는 clear()가 있는데, 문자열을 담는 StringBuilder 에는 clear가 없어서 비우는 방법에 대해 찾아봤다. 1. sb = new StringBuilder() StringBuilder sb = new StringBuilder(); sb.append("a"); sb.append("b"); sb.append("c"); sb = new StringBuilder(); 비울 수 없다면 그냥 버리고 새로만들자! 하는 방법이다. 글쓴이는 항상 이 방법으로 StringBuilder를 초기화해줬다. 2. sb.setLength(0) - 가장 빠름 StringBuilder sb = new St..
자바에서 문자열을 나눌 때 사용할 수 있는 도구는 split과 StringTokenizer가 있다. 둘의 동작을 살펴보면서 사용할 때 유의점을 정리해보려고 한다. 동시에 둘의 차이점에 대해서도 알아보겠다! String.Split() String str = "123,45,234,456"; String[] splitArray = str.split(","); for (String s: splitArray) { System.out.println(s); } split은 특정문자를 기준으로 문자열을 나눠 String[] 배열을 반환합니다. 저는 이런식으로 구분자를 넣어서 사용해왔습니다. 메서드를 타고 들어가서 자세한 설명을 읽어봅시다 주어진 정규식(regex)과 일치하는 문자열을 기준으로 이 문자열을 분할합니다. ..
백준이든 api를 만들든 나는 항상 코드가 잘 돌아가기만 하면 된다고 생각했다. 그래서 몇 중 for문이든 그냥 쓰고, 함수로 빼는 일도 잘 없었다. 하지만 팀원들은 내 코드를 보고 이해하기 어려워서 손도 못대겠다고 했다.. 😥😥😥 잘 짠 코드는 남이 알아보기 쉽게 작성한 코드라고 한다. 기능이 잘 돌아가는 것 외에 코드를 어떻게 깔끔하게, 남이 알아보기 쉽게 만들 수 있는지 고민을 해볼 단계가 된 것 같다. 이번에 우테코를 지원하였는데, 프리코스의 문제 요구사항 중 코드컨벤션 맞추기가 있었다. 이번에 Google Java Style Guide를 정리하며 자바 코드 컨벤션을 공부하고, 컨벤션에 맞추어 코드를 짜는 연습을 해보려고 한다. https://google.github.io/styleguide/ja..
백준에서 문제를 풀 때 String을 만들면 메모리 초과를 겪을 수 있다. 또한 버퍼에 넣지 않고 그냥 출력했다가 시간 초과를 겪는 경우도 있다. 이 때 필요한 자료형이 StringBuffer나 StringBuilder다. 사용해보면 알 수 있는데, 둘은 사용법도 비슷하고 기능도 똑같다. (이름도 좀 비슷해보인다) 하지만 둘은 차이점이 분명히 존재한다! 오늘 둘의 사용법을 간단히 정리해보고, 차이점도 알아보자! 자바에서 문자열을 다루는 법 자바에서는 문자열을 다루는 자료형 클래스로 String, StringBuffer, StringBuilder 3가지를 지원한다. String은 불변(immutable)하는 자료형이다 한 번 생성된 String객체는 할당된 메모리 공간이 변하지 않는다. "abc"와 같은 ..
서론 백준 1717번 문제를 몇 시간동안 못풀어서 결국 구글링을 해봤는데, 이 문제는 Union-find알고리즘을 써야한다는 걸 알게되었다. Union-Find 알고리즘을 처음 접했을 땐 너무 참신해서 짜릿했다! 이 알고리즘을 정리해두면 나중에도 유용하게 쓰일 것 같아 글을 포스팅한다 Disjoint Set(서로소 집합)이란? Union-find 알고리즘은 Disjoint set을 표현할 때 사용된다 Disjoint는 "뿔뿔이 흩어지다"라는 뜻이다 Disjoint set은 공통원소가 없는 집합을 뜻한다 (백준 1717번 문제는 Disjoint Set이 주어진다) Union-Find 알고리즘이란? Disjoint Set(서로소 집합)을 효율적으로 표현하는 알고리즘이다 집합을 트리구조로 표현한다 각 값이 자..
요즘 백준에서 data_structures 관련 문제를 풀고있다. 여기는 자료구조인 큐, 스택, 힙 등을 이용하는 문제들이 많기 때문에 큐, 스택, 힙에 대한 사용법을 충분히 숙지해야 문제를 잘 풀 수 있다! 그래서 오늘은 힙 사용법을 정리해보려고 한다. 힙(Heap)이란? 여러 개의 값 중에서 가장 크거나 작은 값을 빠르게 찾기 위해 만든 이진트리 힙은 여러 개의 값 중 최솟값을 찾거나, 최댓값을 찾을 때 이용된다 최솟값을 찾기위한 힙을 최소힙(Min heap)이라고 함 최댓값을 찾기위한 힙을 최대힙(Max heap)이라고 함 힙의 저장방식(최소 힙) 힙은 완전 이진 트리의 형태를 띈다 최소 힙은 부모의 값이 항상 자식보다 작다 최대 힙은 부모의 값이 항상 자식보다 크다 최소힙에서의 삭제 = 최솟값 뽑..
Lower bound, Upper bound란? 그림을 보면 쉽게 이해할 수 있다. lower bound: 찾고자 하는 값이 처음 나타나는 위치 upper bound: 찾고자 하는 값 바로 뒤 위치 원래 이진탐색 코드 //오름차순 정렬된 arr에서 target값을 찾아 인덱스를 반환하는 함수 private int findIdx(int[] arr, int target) { int start = 0; int end = arr.length; while (start target end ..
fladi
'프로그래밍 언어/Java' 카테고리의 글 목록 (2 Page)