Knowledge

인터페이스와 구현의 분리: 느슨한 결합 오늘 유튜브로 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/2178 2178번: 미로 탐색 첫째 줄에 두 정수 N, M(2 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 M개의 정수로 미로가 주어진다. 각각의 수들은 붙어서 입력으로 주어진다. www.acmicpc.net 문제 N×M크기의 배열로 표현되는 미로가 있다. 1 0 1 1 1 1 1 0 1 0 1 0 1 0 1 0 1 1 1 1 1 0 1 1 미로에서 1은 이동할 수 있는 칸을 나타내고, 0은 이동할 수 없는 칸을 나타낸다. 이러한 미로가 주어졌을 때, (1, 1)에서 출발하여 (N, M)의 위치로 이동할 때 지나야 하는 최소의 칸 수를 구하는 프로그램을 작성하시오. 한 칸에서 다른 칸으로 이동할 때, 서로 인접한 칸으로만 이동할 수 ..
내일이면 파이썬 방학 캠프가 끝이 나네요. 마지막은 마무리 시험을 보며 끝이 납니다. 2주밖에 되지 않았지만 파이썬 수업을 한 번도 들어보지 않은 입장으로 정말 익숙해졌다고 생각해요. 알고리즘 쪽으로나 구현 쪽으로나 파이썬과 친해진 게 느껴집니다. 아주 만족합니다. 오늘은 마지막으로 동적 계획법 문제를 하나 가져왔습니다. 코드 트리를 주제로는 마지막 포스팅이 될 수도 있겠네요. 문제 N×N 행렬이 주어졌을 때, (1,1)에서 시작하여 오른쪽 혹은 밑으로만 이동하여 (N, N)으로 간다고 했을 때 거쳐간 위치에 적혀있는 숫자들 중 최솟값을 최대로 하는 프로그램을 작성해보세요. 입력 형식 첫째 줄에는 N이 주어집니다. 두 번째 줄부터 N개의 줄에 각각 각 행에 해당하는 N개의 정수 값이 공백을 사이에 두고 ..
발달중인 망고
'Knowledge' 카테고리의 글 목록