오늘의 회고
1주차 웹 프로젝트 완료했다.
2주차 시작 내일 부터 드디어 자바 강의를 배운다
=================================================================================
오늘 할일:
자바 코딩 테스트 문제 1개 작성
팀 프로젝트 발표
kpt회고
웹 기초 특강
=================================================================================
공부한 내용
[자바 알고리즘 문제 출처: 프로그래머스]
문제:
mex란 minimum excluded의 약어로, 임의의 0 이상의 정수로 이루어진 집합에서 존재하지 않는 가장 작은 값을 의미합니다.
예를 들어, 집합 {0, 1, 2, 5, 6}이 있다면 0, 1, 2가 집합 안에 존재하고 그다음 값인 3이 존재하지 않기 때문에 이 집합의 mex값은 3이 됩니다.
배열 arr가 주어집니다. 이때 arr의 원소들로 이루어진 집합의 mex 값을 return 하는 solution 함수를 완성해주세요.
import java.util.*;
class Solution {
public int solution(int[] arr) {
HashSet<Integer> set = new HashSet<>();
for(int i:arr){
set.add(i);
}
for(int i=0;i<=set.size();i++){
if(!set.contains(i)){
return i;
}
}
int answer = 0;
return answer;
}
}
일단 나는 집합{0,1,2,4,4,2}가 있다면 set 자료구조를 이용해 중복을 제거할려고 했고 그다음 0부터 set.size만큼 증가 시키게 돌려서 포함되지 않는 것을 바로 리턴을 시켜주었고 만약 다 포함 되면 되는 것 까지 고려해 int answer=0; return answer;을 시킴
객체 지향 설계의 5가지 원칙, solid
- SRP(단일 책임 원칙)
하나의 클래스는 단 하나의 책임을 가져야 한다.
- OCP(개방 폐쇄 원칙)
확장에는 열려 있고 변경(수정)에는 닫혀있어야 한다.
- LSP(리스코프 치환 원칙)
서브 타입은 언제나 기반 타입으로 교체 되어야 한다.
- ISP(인터페이스 분리 원칙)
클라이언트는 자신이 사용하는 메소드에만 의존해야한다.
쉽게 말해서, interface도 SRP설명처럼 단일 책임을 가져야 한다.
- DIP(의존 역전 원칙)
구체적인것 (class) 에 말고 추상적인 것(interface)에 의존해야한다.이걸 지키면서 만든 것이 스프링이다.
한번에 이해 되는 파트가 아닌것 같다.
'TIL' 카테고리의 다른 글
[TIL] 스파르타 백엔드 캠프 8일차 (0) | 2024.10.10 |
---|---|
[TIL] 스파르타 백엔드 캠프 7일차 (0) | 2024.10.08 |
[TIL] 스파르타 백엔드 캠프 5일차 (3) | 2024.10.04 |
[TIL] 스파르타 백엔드 캠프 4일차 (1) | 2024.10.03 |
[TIL] 스파르타 백엔드 캠프 3일차 (2) | 2024.10.02 |