Knowledge/Java

인터페이스와 구현의 분리: 느슨한 결합 오늘 유튜브로 Redis 실습 강의 영상을 보다가 우연히 실습영상에서 디렉토리 구조를 보게 되었는데요. Service 인터페이스와 ServiceImpl 구현 클래스의 분리되어 있어서 소스 코드를 좀 찾아봤습니다. 이러한 구조는 유지보수성, 확장성 및 테스트 용이성을 크게 향상시키는 핵심 원칙이며 주로 느슨한 결합(loosely coupled)이라고 불리우고 있었습니다. 느슨한 결합 자주 듣긴 했지만 그냥 넘어가기는 아쉬워서 한번 적용해보고자 합니다. (참고: 공부하고 있던 자료 :https://www.youtube.com/watch?v=WrAT8m2xlgc ) 인터페이스와 구현 분리의 이점 일단 왜 사용하는지 알고 가도록 하겠습니다. 1. 유연성과 확장성: 비즈니스..
Java 11과 17에 대하여 안녕하세요 오늘은 자바 버전차이에 대하여 포스팅하려 합니다. 2023년 기준 자바 17이 드디어 자바 11 버전의 사용율을 이겼네요. 새롭게 등장한 SpringBoot 3 버전도 자바 17 이상만 지원하기 때문에 앞으로 새롭게 등장하는 웹서비스에 대해서는 Java17을 사용할 확률이 높겠습니다. 아마두? 주요 변경 사항 ✅자바 11에서 17로 업그레이드됨에 따라 주요 변경사항을 한번 공부해 보도록 하겠습니다!! 패턴 매칭 for instanceof 자바 11: if (obj instanceof String) { String s = (String) obj; System.out.println(s.length()); } 자바 17: if (obj instanceof String ..
안녕하세요! 오늘은 BigInteger 를 사용하는 방법에 대해 이야기해보기위해 하노이탑의 문제를 예시로 들려고 합니다. 특히, BigInteger 를 사용할 때 주의해야 할 점들과, 입력값이 매우 큰 경우(예: 100)에 대한 처리 방법에 대해 살펴보겠습니다. https://www.acmicpc.net/problem/1914 1914번: 하노이 탑 세 개의 장대가 있고 첫 번째 장대에는 반경이 서로 다른 n개의 원판이 쌓여 있다. 각 원판은 반경이 큰 순서대로 쌓여있다. 이제 수도승들이 다음 규칙에 따라 첫 번째 장대에서 세 번째 장대로 www.acmicpc.net BigInteger 사용의 핵심 이유 input : 100 output : 1267650600228229401496703205375 자바에..
객체지향 프로그래밍이 뭐야? 객체지향 프로그래밍(Object-Oriented Programming, OOP)은 컴퓨터 프로그래밍의 패러다임 중 하나로, 데이터와 그 데이터를 처리하는 함수를 객체로 취급하여 프로그래밍하는 방식입니다. 주요 개념은 뭐야? 클래스(Class)와 객체(Object): 클래스는 객체를 생성하기 위한 템플릿이며, 객체는 클래스에 정의된 속성과 동작을 가지는 인스턴스입니다. 더보기 클래스와 객체 예시코드 public class Car { private String color; public Car(String color) { this.color = color; } public String getColor() { return color; } } public class Main { pub..
회의실 배정 성공 문제 한 개의 회의실이 있는데 이를 사용하고자 하는 N개의 회의에 대하여 회의실 사용표를 만들려고 한다. 각 회의 I에 대해 시작시간과 끝나는 시간이 주어져 있고, 각 회의가 겹치지 않게 하면서 회의실을 사용할 수 있는 회의의 최대 개수를 찾아보자. 단, 회의는 한번 시작하면 중간에 중단될 수 없으며 한 회의가 끝나는 것과 동시에 다음 회의가 시작될 수 있다. 회의의 시작시간과 끝나는 시간이 같을 수도 있다. 이 경우에는 시작하자마자 끝나는 것으로 생각하면 된다. 입력 첫째 줄에 회의의 수 N(1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N+1 줄까지 각 회의의 정보가 주어지는데 이것은 공백을 사이에 두고 회의의 시작시간과 끝나는 시간이 주어진다. 시작 시간과 끝나는 시간은 ..
오랜만에 알고리즘 문제 푸려니까 죽을 맛이네요 영역 구하기 성공 문제 눈금의 간격이 1인 M×N(M, N≤100) 크기의 모눈종이가 있다. 이 모눈종이 위에 눈금에 맞추어 K개의 직사각형을 그릴 때, 이들 K개의 직사각형의 내부를 제외한 나머지 부분이 몇 개의 분리된 영역으로 나누어진다. 예를 들어 M=5, N=7 인 모눈종이 위에 과 같이 직사각형 3개를 그렸다면, 그 나머지 영역은 와 같이 3개의 분리된 영역으로 나누어지게 된다. 와 같이 분리된 세 영역의 넓이는 각각 1, 7, 13이 된다. M, N과 K 그리고 K개의 직사각형의 좌표가 주어질 때, K개의 직사각형 내부를 제외한 나머지 부분이 몇 개의 분리된 영역으로 나누어지는지, 그리고 분리된 각 영역의 넓이가 얼마인지를 구하여 이를 출력하는 프..
map은 Stream API의 중간 연산 중 하나로, 스트림의 각 요소를 특정 방식으로 변환하는 역할을 합니다. 주어진 함수를 각 요소에 적용하여, 그 결과로 구성된 새로운 스트림을 반환합니다. map의 기본 형태: Stream map(Function
https://www.acmicpc.net/problem/1655 1655번: 가운데를 말해요 첫째 줄에는 백준이가 외치는 정수의 개수 N이 주어진다. N은 1보다 크거나 같고, 100,000보다 작거나 같은 자연수이다. 그 다음 N줄에 걸쳐서 백준이가 외치는 정수가 차례대로 주어진다. 정수는 -1 www.acmicpc.net 문제 백준이는 동생에게 "가운데를 말해요" 게임을 가르쳐주고 있다. 백준이가 정수를 하나씩 외칠 때마다 동생은 지금까지 백준이가 말한 수 중에서 중간값을 말해야 한다. 만약, 그동안 백준이가 외친 수의 개수가 짝수개라면 중간에 있는 두 수 중에서 작은 수를 말해야 한다. 예를 들어 백준이가 동생에게 1, 5, 2, 10, -99, 7, 5를 순서대로 외쳤다고 하면, 동생은 1, 1..
골드 V에 해당하는 BFS문제입니다. 문제 철수의 토마토 농장에서는 토마토를 보관하는 큰 창고를 가지고 있다. 토마토는 아래의 그림과 같이 격자 모양 상자의 칸에 하나씩 넣어서 창고에 보관한다. 창고에 보관되는 토마토들 중에는 잘 익은 것도 있지만, 아직 익지 않은 토마토들도 있을 수 있다. 보관 후 하루가 지나면, 익은 토마토들의 인접한 곳에 있는 익지 않은 토마토들은 익은 토마토의 영향을 받아 익게 된다. 하나의 토마토의 인접한 곳은 왼쪽, 오른쪽, 앞, 뒤 네 방향에 있는 토마토를 의미한다. 대각선 방향에 있는 토마토들에게는 영향을 주지 못하며, 토마토가 혼자 저절로 익는 경우는 없다고 가정한다. 철수는 창고에 보관된 토마토들이 며칠이 지나면 다 익게 되는지, 그 최소 일수를 알고 싶어 한다. 토마..
발달중인 망고
'Knowledge/Java' 카테고리의 글 목록