java

· CS
DI (Dependency Injection) 란 ? 의존성 주입 (Dependency Injection)은 클래스 간의 결합도를 낮추기 위해 사용되는 설계 원칙 중 하나입니다. 클래스가 직접 필요로 하는 의존성을 직접 생성하거나 관리하는 것이 아니라, 외부에서 해당 의존성을 주입받는 방식입니다. 이는 보통 생성자 주입, 세터 주입, 또는 필드 주입의 형태로 이루어집니다. 예제 우리가 여행을 떠날 때 우리는 다양한 교통 수단을 사용할 수 있습니다. 여행에 필요한 교통수단을 선택하고 우리를 목적지로 이동시키는 것이 의존성 주입의 개념과 유사할 수 있습니다. 다음은 생성자 주입으로 교통수단을 선택하는 예제입니다. // 교통수단 인터페이스 interface Transport { void move(); } //..
· JAVA
Map이란 ? Map은 해시 테이블(hash table)로 구현됩니다. 해시 테이블은 키(key)를 해시 함수(hash function)를 사용하여 배열의 인덱스로 변환하고, 해당 인덱스에 값을 저장합니다. 이렇게 함으로써, 매우 빠른 검색과 삽입 연산이 가능해집니다. 해시 함수를 통해 계산된 인덱스를 기반으로 값을 배열에 저장하기 때문에, 일반적으로 맵의 검색(Search) 및 삽입(Insertion) 연산의 시간 복잡도는 O(1)에 가깝습니다. 또한 동일한 key 에 다른 데이터 value가 저장되어 있을 경우 기존에 저장된 데이터는 덮어씌워져 사라진다. 따라서, 중복된 key는 존재할 수 없다. JAVA에서의 Map 구현 Java에서 Map은 다양한 내부 구현체를 가질 수 있습니다. 대표적으로 Ha..
오늘은 프로그래머스에서 PCCP라는 코딩테스트 역량 인증 시험이라는게 있길래 궁금해서 들어가봤더니 이 자격증을 따면 취업할 때 우대사항으로 적용되는 회사가 몇군데 있다는걸 알게 되었다. PCCP 모의고사는 1,2회차가 있었고 한 회차에 4문제가 있다. 그 중 1회차를 풀어보았다. 제한시간은 2시간이였다. 결과 2시간안에는 현실적으로 다 못풀었고 3문제 정도를 2시간 가량 걸려서 풀고 나머지 한문제는 2개경우만 맞고 나머지 다 시간초과 뜨는정도로 풀고 다른사람들의 풀이를 찾아봤다.. 나중에 코테에 자신이 붙으면 한번 응시해봐야겠다. 오늘은 PCCP 1회차 중에 3번문제를 풀이해 보겠다. 문제 문제가 꽤 길다.. 뭐 유전법칙에 대해서 설명하느라고 긴 것 같은데 대충 알고있는 내용이여서 이해가 빨리 됐다. 만..
투 포인터(Two Pointers)는 배열 또는 리스트에서 두 개의 포인터를 사용하여 원하는 조건에 따라 이동하면서 원하는 결과를 얻는 알고리즘 기법입니다. 일반적으로 다음과 같은 두 가지 방식으로 사용됩니다. 동일한 방향으로 이동하는 투 포인터: 배열의 시작부터 끝까지 두 포인터를 같은 방향으로 이동시키면서 원하는 조건을 만족하는 범위를 찾습니다. 반대 방향으로 이동하는 투 포인터: 배열의 양 끝에서 서로 반대 방향으로 이동하면서 원하는 조건을 만족하는 요소를 찾거나, 두 포인터가 만나는 지점을 찾습니다. 위의 그림과 같이 start 와 end를 정해놓고 조건보다 크거나 작을 때 또 조건과 같은 경우를 count 하는 형식으로 결과를 얻는 알고리즘이다. 문제로 확인 해 보자 문제 풀이 투포인터를 쓰지 ..
오늘은 DFS와 비슷하면서도 조금은 다른 BackTracking에 대해서 알아보겠다. 백트래킹(Backtracking)은 문제의 해답을 찾는 도중에 가능성이 없다고 판단되는 경우에는 더 이상 해당 경로를 따라가지 않고, 되돌아가서 다른 경로를 탐색하는 알고리즘이다. 백트래킹은 트리 기반의 재귀적 탐색 방법 중 하나로, 재귀 함수의 호출과 되돌아감을 통해 구현된다. 예를 들어 순열을 구하는 문제를 생각해보자. [1, 2, 3]의 숫자로 만들 수 있는 모든 순열을 찾아야 한다고 가정한다. 이때 백트래킹은 가능한 모든 순열을 탐색하면서, 더 이상 순열을 완성할 수 없는 경우에는 되돌아가서 다른 선택지를 탐색한다. 반면 DFS는 가능한 모든 순열을 깊이 우선으로 탐색하면서 모든 경우를 다 시도하고 나서야 되돌아..
문제 알파벳이 주어졌을 때 몇개의 크로아티아 알파벳으로 주어진 것인지 갯수를 출력하는 문제이다. 변경된 알파벳을 이용해 크로아티아 알파벳의 갯수를 알아내야 한다 각 행은 1개의 알파벳이다 lj 도 1개의 알파벳! 풀이 i) 문자열을 입력받는다 ii) 문자열에서 위 표의 알파벳이 있으면 알파벳 카운트를 1개로 치는 알고리즘을 수행한다 iii) 알파벳 갯수를 출력한다 - c 뒤에 =,- 이 붙으면 1개이다 - d 뒤에 z, z뒤에 =이 붙으면 1개로 인식한다. - d 뒤에 -이 붙으면 1개로 인식한다 - l 뒤에 j가 붙으면 1개로 인식한다 - n 뒤에 j가 붙으면 1개로 인식한다 - s 뒤에 =이 붙으면 1개로 인식한다 - z 뒤에 =이 붙으면 1개로 인식한다. 위의 7가지 경우만 주의하면 된다. impo..
문제 알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다. 풀이 i) String을 입력받는다. ii) a부터 z까지의 갯수를 저장하기 위한 int [] 을 만든다. iii) 소문자와 대문자를 가리지 않고 A,a 는 0번째 Z,z는 25번째 int[]에 갯수를 추가해 준다. iiii) 갯수가 가장 많은 알파벳을 꺼낸다. 갯수가 가장많은 알파벳이 2개이상인 경우 중복이다. iiiii) 중복이면 ?를 출력 아니면 대문자 알파벳을 출력한다 * 주의할 점은 알파벳의 아스키코드 값이다. a는 97, A는 65이다. public class Main{ public static void main(String ar..
KSS8848
'java' 태그의 글 목록