일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 백트래킹
- BFS
- lambda
- programmers
- OS
- 프로그래머스
- 모던자바
- Spring
- TDD
- 네트워크
- 자료구조
- 코틀린
- 자바
- 백준
- algorithm
- DFS
- Brute-force
- java
- Java8
- 그래프
- kotlin
- backtracking
- back-end
- baekjoon
- 알고리즘
- 프로젝트
- LEVEL2
- 스프링
- DP
- 운영체제
- Today
- Total
목록분류 전체보기 (106)
요깨비's LAB
1. 싱글턴 패턴이란? 프로그램을 실행할 때 보통은 많은 인스턴스가 생성됩니다. 예를 들어 java.lang.String 클래스의 인스턴스는 문자열 1개 당 1개씩 생성되기 때문에 문자열 1000개에 대해서 1000개의 인스턴스가 만들어집니다. 하지만 클래스의 인스턴스가 단 '하나만' 필요한 경우도 있습니다. 즉, 전역 변수를 사용하지 않고 객체를 하나만 생성하고, 이 객체를 어디서든지 참조할 수 있는 패턴 지정한 클래스의 인스턴스가 1개밖에 존재하지 않는 것은 '보증'하는 패턴 인스턴스가 1개 밖에 존재하지 않는 것을 프로그램 상에서 표현하고 싶을 때 사용하는 패턴 으로 정리할 수 있습니다. * 생성(Creational) 패턴 - 객체 생성에 관련된 패턴 - 객체의 생성과 조합을 캡슐화해 특정 객체가 ..
예... 이번 문제도 나름의 아이디어를 써봤으나 메모리 초과로 다른 아이디어로 접근해서 해결했습니다.. 우선 문제 접근 자체는 크게 어렵지 않았습니다. 일단 이전에 제가 실패 했던 아이디어입니다. 첫 번째 문자는 일단 아무거나 다 선택한다. 현재 문자열의 길이가 초기값과 같은지?(완성 여부) 같으면 해당 값이 이미 있는지? 두번째부터 문자를 선택한다 2번째 문자부터 분기 조건을 부여하는데 (1) 바로 직전 문자와 선택한 문자가 같으면 안됨 (2) 이미 방문한 문자 위치면 안됨 2번으로 다시 재귀 실행... 여기에서 2번을 제외하면 그냥 재귀함수랑 기본적인 분기처리를 그대로 따라가면서 짜면 됩니다. 하지만 2번을 구현하기 위해서는 이전에 완성된 문자열을 저장해주는 공간이 필요한데 저는 자료구조의 Set을 ..
저의 DFS로 풀려는 아이디어로는 시간 초과와 1000 이상의 값에서는 절대 돌아가지 않을 것 같다는 판단에 다른 분들의 아이디어를 보고 이해한 후에 배껴서 풀었습니다. 아이디어 잘 생각 하시는 분들 보면 정말 부럽... 하지만 재능이 나무에서 뚝 떨어지신 분들도 많겠지만 저에게는 그러한 재능이 없기에.. 꾸준히 높이 뛰기해서 쟁취해야겠죠 잡설이 길었습니다. 조건 두 개를 주었습니다. 표의 가로나 세로 크기가 1일 경우 => 이 경우, 정사각형의 원리에 의해 1인 값이 하나라도 있으면 넓이는 1일 수 밖에 없습니다. 모두 0 이면 당연히 0을 출력하겠죠 가로 세로 모두 2 이상일 경우, 1,1에서 부터 시작한다. => 정사각형의 한변의 크기를 구하는 원리에 의해 출처: https://blog.sonim1..
위 문제는 자바 컬렉션인 Map을 활용하여 해결하였습니다. 옷의 종류를 Key값으로, 각 옷들을 Key값의 List배열에 담아주었습니다. 아래는 코드입니다. import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; class Solution { HashMap clothMap; int result = 1; public int solution(String[][] clothes) { clothMap = new HashMap(); ArrayList clothList; for (int i = 0; i < clothes.length; i++) { // clothMap.putIfAbsent(clothes[i][0], new Arr..
이번에도.. 오지게 오래 걸렸습니다... 순수 완벽하게 푼것이 아닌.. 백준 질문하기에서 반례들을 이용하면서 풀었구요.. 아직도 분기 처리 조건 생각하는거랑 로직을 제대로 생각 않하고 무작정 문제에 돌입하는 것... 참 안고쳐집니다. 좀만 풀이가 생각날 것 같으면 무조건 키보드에 손이 올라가는 이 흑우.. 처음 아이디어는 자료구조 Set 2개를 이용해서 DFS를 돌면서 각 방문 노드들을 Set에 넣어주면서 indexSet(첫째 줄 배열)이랑 valueSet(두번째 줄 배열)에 값들을 비교하면서 하려고 했는데 빛 좋은 개살구 마냥 아이디어만 좋았지 실제적으로 제 머리가 그걸 구현할 정도로 호환이 안되더군요.. 다음번에 다시 도전해서 올리겠습니다. 그냥 함수 재귀를 이용해서 풀었습니다. 여기에서 통과 조건은..
어후;; 20번 틀리고 21번째에 드디어 해결했네요... 알고보니 로직은 그럭저럭 맞는것 같았으나 BFS에 대한 공부 부족과 객체 지향 활용을 못한 원인이 가장 컸던 것 같습니다.. 차근차근 어떤 문제 상황에 부딪혔고 해결했는지 끄적여 보겠습니다. 저는 고수분들이랑 다르게 간단하고 명료하게 추상화해서 몇줄 안되는 코드로는 못짜서 코드가 길고 좀 보기 싫습니다.. 그냥 저만의 회고시간입니다.. 클래스 정의 우선 Vertax 클래스를 설계했습니다. class Vertax { private int index; private int color; // -1 색없음, 0 빨 1 파 private HashSet connectedEdges; // 해당 정점과 연결된 정점들을 저장 하기 위한 자료구조 public Ver..
1. 화살표 함수의 선언 화살표 함수(Arrow Function)는 function 키워드 대신 화살표(=>, Fat Arrow)를 사용하여 보다 간략한 방법으로 함수를 선언할 수 있습니다. 하지만 모든 경우 화살표 함수를 사용할 수 있는 것은 아닙니다. 아래의 코드를 보시죠 // 매개변수 지정 방법 () => { ... } // 매개변수가 없을 경우 x => { ... } // 매개변수가 한 개인 경우, 소괄호를 생략할 수 있다. (x,y) => { ... } // 매개변수가 여러 개인 경우, 소괄호를 생략할 수 없다. // 함수 몸체 지정 방법 x => { return x * x} // single line block x => x*x // 함수 몸체가 한줄의 구문이라면 중괄호를 생략할 수 있으며 암묵..
ES6는 템플릿 리터럴(Template Literal)이라고 불리는 새로운 문자열 표기법을 도입하였습니다. 템플릿 리터럴은 일반 문자열과 비슷해 보이지만, ' 또는 " 같은 통상적인 따옴표 문자 대신 백틱(backtick) 문자 `를 사용합니다. const template = `템플릿 리터럴은 '작은따옴표(single quetes)'와 "큰따옴표(double quotes)"를 혼용할 수 있다.`; console.log(template); 일반적인 문자열에서 줄바꿈은 허용되지 않으며 공백을 표현하기 위해서는 백슬래시(\)로 시작하는 Escape Sequence를 사용해야 합니다. ES6 템플릿 리터를은 일반적인 문자열과 달리 여러 줄에 걸쳐 문자열을 작성할 수 있으며, 리터럴 내의 모든 공백은 그대로 적용..