일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 알고리즘
- k8s
- SpringMVC
- 자바
- Oracle
- vuejs
- superBuilder
- cd
- programmers
- IntelliJ
- CKA
- Spring
- 코딩테스트연습
- dabase
- CI
- JPA
- Kubernetes
- builder-pattern
- hibernate
- java
- 해시맵
- DevOps
- 뷰
- docker
- ORM
- CI/CD
- 프로그래머스
- Vue
- Di
- map
- Today
- Total
목록자바 (10)
문홍의 공부장
공통점 추상클래스와 인터페이스는 선언부만 있고 구현 내용이 없는 클래스이다. 자기 자신이 직접 객체를 생성할 수 없으며, 자식 클래스가 추상클래스를 상속(extends)받거나, 인터페이스를 구현(implements)하여 객체를 생성할 수 있다. 선언된 type과 자식의 type이 같아야만 한다. 차이점 추상클래스(Abstract Class) 추상 메소드를 하나라도 가지고 있는 클래스라고 정의하는 경우가 있는데, 명확하게 말하자면 이는 틀린 말이다. 추상클래스는 추상 메소드가 없어도 무방하다. 하지만, 추상메소드를 하나라도 가지고 있는 클래스는 무조건 추상클래스여야 한다. 추상클래스는 non-static과 non-final 필드 및 public, protected, private 메소드를 사용할 수 있다...
소수 구하기 문제라고 가볍게 생각했다가, 효율성 테스트에서 시간초과를 맞고 띠용해서 찾으며 공부한 소수 구하는 알고리즘. 에라토스테네스의 체라는 알고리즘을 이번에 처음 접했다. 이름만 들어도 고대 그리스 수학자 느낌이 물씬 느껴진다.. 문제 설명 1부터 입력받은 숫자 n 사이에 있는 소수의 개수를 반환하는 함수, solution을 만들어 보세요. 소수는 1과 자기 자신으로만 나누어지는 수를 의미합니다. (1은 소수가 아닙니다.) 제한 조건 n은 2이상 1000000이하의 자연수입니다. 풀이 1. 자기 자신보다 작은 수로 나누어본다. 나누어 떨어지면 소수가 아니다. 가장 기본적인 방법. 입력받은 수 n 까지 반복문을 돌리며 소수를 찾아 flag 값을 바꾼다. 자기 자신(i)보다 작은 수(j)로 나누어 하나..
1. IoC(Inversion of Control) 제어의 역전(IoC)이란 한마디로 말하면 프로그램의 제어 흐름 구조가 바뀌는 것이다. (기존 개발자(사용자) 주도 => Spring 주도) 일반적으로, main() 같은 프로그램이 시작되는 지점에서 다음에 사용할 오브젝트를 결정, 생성하고, 만들어진 오브젝트 내의 메소드를 호출하는 작업을 반복한다. 이런 구조에서 각 오브젝트는 프로그램 흐름을 결정하거나 사용할 오브젝트를 구성하는 작업에 능동적으로 참여한다. 즉, 모든 종류의 작업을 사용하는 쪽에서 제어하는 구조이다. 이에 반하여 IoC는 제어 흐름의 개념을 거꾸로 뒤집는다. 오브젝트는 자신이 사용할 오브젝트를 스스로 생성하거나 선택하지 않는다. 그리고 자신이 어떻게 만들어지고 어디서 사용되는지 알 수 ..
문제 설명 문자열 s에 나타나는 문자를 큰것부터 작은 순으로 정렬해 새로운 문자열을 리턴하는 함수, solution을 완성해주세요. s는 영문 대소문자로만 구성되어 있으며, 대문자는 소문자보다 작은 것으로 간주합니다. 제한 사항 str은 길이 1 이상인 문자열입니다. 나의 풀이 이것도 최근에 문제 풀다가 배열 내림차순하는 방법 찾아봤었어서.. 사실 처음엔 List 객체에 문자열을 하나씩 넣고, Collections.reverse()를 이용해 데이터를 내림차순해서 제출했었는데, 테스트에서 몽땅 실패가 나왔다^^; 그래서 다시 구글링을 해서 Collections.reverseOrder()라는 메소드를 사용했다. 저번에 문제풀면서 이 메소드도 공부 했었는데 그새 까먹음ㅎㅎ... 복습 열씨미 하자. 123456..
문제 설명 문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼있는지 확인해주는 함수, solution을 완성하세요. 예를 들어 s가 a234이면 False를 리턴하고 1234라면 True를 리턴하면 됩니다. 제한 사항 s는 길이 1 이상, 길이 8 이하인 문자열입니다. 나의 풀이 얼마 전에 문제 풀다가 정규표현식을 사용했어서, 여기서도 자연스럽게 정규표현식으로 숫자 여부를 확인하면 되겠다고 생각이 떠올랐다. 정규표현식은 쓸 때마다 헷갈려서, 이번 기회에 한 번 정리를 하고 넘어가야겠다. 12345678public boolean solution(String s) { if(s.length() == 4 || s.length() == 6) { return s.matches("^[0-9]*$"); } retur..
문제 설명 대문자와 소문자가 섞여있는 문자열 s가 주어집니다. s에 'p'의 개수와 'y'의 개수를 비교해 같으면 True, 다르면 False를 return 하는 solution를 완성하세요. 'p', 'y' 모두 하나도 없는 경우는 항상 True를 리턴합니다. 단, 개수를 비교할 때 대문자와 소문자는 구별하지 않습니다. 예를 들어 s가pPoooyY면 true를 return하고Pyy라면 false를 return합니다. 제한사항 문자열 s의 길이 : 50 이하의 자연수 문자열 s는 알파벳으로만 이루어져 있습니다. 나의 풀이 대소문자 구별이 없기 때문에 우선 모든 문자를 대문자로 바꾸고 시작했다. 12345678910111213141516171819b..
문제 설명 수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는 방식: 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, ... 2번 수포자가 찍는 방식: 2, 1, 2, 3, 2, 4, 2, 5, 2, 1, 2, 3, 2, 4, 2, 5, ... 3번 수포자가 찍는 방식: 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, ... 1번 문제부터 마지막 문제까지의 정답이 순서대로 들은 배열 answers가 주어졌을 때, 가장 많은 문제를 맞힌 사람이 누구인지 배열에 담아 return 하도록 solution 함수를 작..
문제 설명 배열 array의 i번째 숫자부터 j번째 숫자까지 자르고 정렬했을 때, k번째에 있는 수를 구하려 합니다. 예를 들어 array가 [1, 5, 2, 6, 3, 7, 4], i = 2, j = 5, k = 3이라면 array의 2번째부터 5번째까지 자르면 [5, 2, 6, 3]입니다. 1에서 나온 배열을 정렬하면 [2, 3, 5, 6]입니다. 2에서 나온 배열의 3번째 숫자는 5입니다. 배열 array, [i, j, k]를 원소로 가진 2차원 배열 commands가 매개변수로 주어질 때, commands의 모든 원소에 대해 앞서 설명한 연산을 적용했을 때 나온 결과를 배열에 담아 return 하도록 solution 함수를 작성해주세요. 제한사항 array의 길이는 1 이상 100 이하입니다. a..