Java 31

JUnit : IntelliJ , 단위 테스트

http://www.yes24.com/Product/Goods/31869154 자바 웹 프로그래밍 Next Step - YES24 이 책은 웹 개발 입문의 껍질(책에서는 ‘양파껍질’로 표현한다)을 막 벗겨낸 경력 1년 이상의 초보개발자들을 대상으로 하는 책이다. 웹 서버, 프레임워크 등을 직접 제작해보고 테스트와 리 www.yes24.com 본 글은 위 도서를 학습하면서 필요한 부분을 정리한 내용이다. JUnit을 활용해 단일 테스트를 하는 것이 콘솔로 확인, 시간이 지난 후에도 안정성 있게 확인할 수 있다고 한다. 도서에서는 이클립스로 설명하고 있어, IntelliJ로 활용하는 법을 찾아보고 정리해본다. JUnit은 자바 언어용 단위 테스트 프레임워크입니다. JUnit은 단위 테스트 작성을 위한 여러 ..

Java 2023.03.29

[Java] Collection Set 정리하기

Java에서는 다양한 데이터 구조를 지원하기 위해 Collection 인터페이스를 제공합니다. Collection 인터페이스는 List, Set, Queue 인터페이스를 상속받고 있습니다. Java에서 Set은 Collection 인터페이스를 구현한 것으로, 중복된 원소를 허용하지 않으며 순서가 없는 데이터 구조입니다. Java에서 Set은 HashSet, TreeSet, LinkedHashSet 등의 구현체가 있습니다. HashSet은 가장 기본적인 Set 구현체로, 해시 테이블을 이용하여 원소를 저장합니다. HashSet은 중복된 원소를 허용하지 않으며 순서가 보장되지 않습니다. TreeSet은 이진 검색 트리(binary search tree)를 이용하여 원소를 저장합니다. TreeSet은 원소를 ..

Java 2023.03.29

[Java] 03/28 알고리즘 문제

https://school.programmers.co.kr/learn/courses/30/lessons/42748 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr import java.util.*; class Solution { public int[] solution(int[] array, int[][] commands) { int[] answer = new int[commands.length]; int idx = 0; for(int[] command : commands){ int[] com = new int[command[1]-command[0] + 1]..

Java 2023.03.29

[프로그래머스] 03/24 문제 풀기

프로그래머스 : 예산 https://school.programmers.co.kr/learn/courses/30/lessons/12982 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 접근법 : 최대한 많은 부서가 지원을 받아야 하므로, sort한 처음부터 하나씩 예산에서 빼주면서 cnt를 올린다. import java.util.Arrays; class Solution { public int solution(int[] d, int budget) { int answer = 0; Arrays.sort(d); for(int dot : d){ if(dot >..

Java 2023.03.24

프로그래머스 : 이상한 문자 만들기

https://school.programmers.co.kr/learn/courses/30/lessons/12930# 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 접근법 : 1) input 값이 String으로 들어와 split() 함수를 사용하여 단어의 index가 홀수,짝수에 따라 대문자, 소문자로 나누려고 했으나 단어 사이에 공백이 여러개 있을 경우 문제가 풀리지 않아 Char Array 형태로 바꿈 2) Char Array로 바꾸어 foreach 문으로 char를 하나씩 가져와 공백이면 cnt를 0으로 초기화 하고 아닐 경우에 홀수, 짝수에 ..

Java 2023.03.23

[Java] 03/20 알고리즘 문제

1. 프로그래머스 : 짝수는 싫어요 https://school.programmers.co.kr/learn/courses/30/lessons/120813 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 접근법 : n 까지의 홀수를 출력하는 것이므로 짝수일 때는 배열의 크기를 n/2, 홀수일 때는 n/2+1로 잡고 1~n까지 나머지가 1인 수를 배열에 담아 출력한다. class Solution { public int[] solution(int n) { int[] answer; if( n % 2 == 0){ answer = new int[n/2]; }els..

Java 2023.03.21

백준 24174번 : 알고리즘 수업 - 힙 정렬 2

https://www.acmicpc.net/problem/24174 24174번: 알고리즘 수업 - 힙 정렬 2 2 5 1 4 3(heapify(A, 2, 5)) -> 2 3 1 4 5(heapify(A, 1, 5)) -> 1 3 2 4 5(A[1] A[5]) -> 5 3 2 4 1(heapify(A, 1, 4)) -> 2 3 5 4 1(A[1] A[4]) -> 4 3 5 2 1(heapify(A, 1, 3)) -> 3 4 5 2 1(A[1] A[3]) -> 5 4 3 2 1(heapify(A, www.acmicpc.net 풀이 접근법 : 위 문제는 heapify( heap 구조로 증명) 하면서 최소값을 root로 옮긴 후 가장 뒤로 보내면서 정렬하는 슈도 코드를 가지고 있다. 값이 변경될 때에 cnt를..

Java 2023.03.19

프로그래머스 : 디스크 컨트롤러

https://school.programmers.co.kr/learn/courses/30/lessons/42627# 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 접근법 : 2번의 PriorityQueue를 만든 다음, 하나의 PriorityQueue pqStart에는 시작 시간 순, 하나의 PriorityQueue pqJob은 작업 시간 순으로 오름차순으로 정렬해 time을 증가시키면서 이전 작업 시간을 초과한 작업들을 하나씩 pqJob에서 뽑아 작업해 계산. 나의 코드 import java.util.*; class Solution { public..

Java 2023.03.19

[자료구조] Heap

Heap 자료구조는 완전이진트리 구조로 최고 depth-1까지의 이진트리가 꽉 채워진 이진트리형태이다. Min heap과 Max heap으로 구현할 수 있으며, 중복값을 허용하고, 반 정렬상태(형제 node끼리는 정렬 순서를 보장하지 않음)이다. 최소값/최대값을 빠르게 찾아내는 유용한 자료구조이다. 데이터 삽입 1. 트리의 가장 끝 위치에 데이터를 삽입 2. 부모 노드의 키와 비교한 후 부모 자리와 교체(반복) 데이터 삭제 1. root 노드를 반환 및 삭제 2. 가장 마지막 위치의 node를 root로 변경 3. 자식 노드 중 비교하여 부모 노드와 자리 교체(반복) Java 내에서 minheap와 maxheap의 구현은 PriorityQueue : java.util.PriorityQueue 로 쉽게 할..

Data Structure 2023.03.19

프로그래머스: 프린터

https://school.programmers.co.kr/learn/courses/30/lessons/42587 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 접근법 : 과제 조건(LinkedList를 꼭 사용해야한다는 전제 조건)이 있어, LinkedList 안에 우선 순위와 위치를 넣어 가장 앞에 있는 프린트물이 List 내에서 우선 순위가 최대일 때 List 내에서 꺼내고, 꺼낸 값이 원하는 location 일때 list 내에 꺼낸 순서를 출력한다. import java.util.*; class Solution { public int solu..

Java 2023.03.18