전체 글(39)
-
[프로그래머스] 종이접기::알고리즘
몇 번 접는지에 따라서 펼쳤을 때, 어느 방향으로 접혔는지 이진 배열을 만들어내는 것 n = 3 일 때, n = 1 -> 0 n = 2 -> 0 0 1 n = 3 -> 0 0 1 0 0 1 1 1. n의 숫자를 보면 n - 1의 숫자가 자릿수 그대로 내려오고, 2. 반으로 접은 부분은 0이고, 3. 파란색으로 칠해진 부분의 숫자가 뒤집혀져서 넘어가는 것을 확인할 수 있다. Java 코드 import java.util.Arrays; public class Solution_종이접기 { public static int[] solution(int n) { int len = 1; int[] answer = new int[len]; for (int i = 1; i < n; ++i) { int len_temp = l..
2020.06.19 -
[프로그래머스] [1차] 추석 트래픽::알고리즘
순서대로 입력되는 시간 값을 보고 언제 가장 많이 겹치는지 계산하는 문제 1초 간격으로 계산하기 때문에 처음 입력 시간을 받을 때, 처음 비교 시간 -1초, 나중 비교 시간 +1초를 해주고, count 해주었습니다. 배열의 크기는 트래픽 도착 시간이 순차적으로 들어오기 때문에 (가장 나중에 들어온 시간 + 1) - (가장 먼저 들어온 시간 - T의 최댓값 - 1)으로 계산했습니다. ex) lines = { "2016-09-15 01:00:04.001 2.0s", "2016-09-15 01:00:07.000 2s" } 일 때, "2016-09-15 01:00:04.001 2.0s"는 2016-09-15 01:00:04.001 - 2.0s - 1s = 2016-09-15 01:00:01.002부터 2016-..
2020.06.17 -
OOP와 SOLID::자바
1. OOP(Object Oriented Programming) : 객체지향 프로그래밍 OOP란? 캡슐화, 다형성, 상속성, 추상화 4가지 특징을 이용해 코드의 재사용을 증가시키고 유지보수 빈도를 감소시키는 장점을 얻기 위해 객체들을 연결시켜 프로그래밍하는 것입니다. 캡슐화(Encapsulation) : 객체의 필드, 메서드를 하나로 묶고 실제 구현 내용을 감추는 것 다형성(Polymorphism) : 같은 이름으로 실행 결과가 다양한 객체를 이용하는 것 ex) 오버로딩(Overloading) : 이름은 같지만 다른 매개변수와 다른 리턴 타입을 갖는 것 오버라이딩(Overriding) : 부모의 함수를 상속받아 메서드를 재정의하는 것 상속성(Inheritance) : 상위 개념의 특징을 하위 개념이 물려..
2020.06.13 -
Isolation Level::데이터베이스
1. Isolation Level 트랜잭션에서 일관성 없는 데이터를 허용하는 수준을 의미합니다. 한 사용자가 어떠한 데이터를 수정하고 있는 경우 다른 사용자들이 그 데이터에 접근하는 것을 차단함으로써 완전한 데이터만을 사용자들에게 제공하게 됩니다. 또한, 많은 사용자들의 수정 작업으로 인해 통계 자료를 작성할 수 없는 사용자를 위해 읽기 작업을 수행할 수 있도록 Isolation Level을 변경할 수 있습니다. 2. Transaction Isolation Level RU(Read Uncommitted) SELECT 문장을 수행하는 경우 해당 데이터에 Shared Lock이 걸리지 않는 Level입니다. 따라서, 어떤 사용자가 A라는 데이터를 B라는 데이터로 변경하는 동안 다른 사용자는 B라는 아직 완료..
2020.06.13 -
[프로그래머스] 단어 변환(DFS)::알고리즘
목표: begin 단어로 시작해서 철자 1개만 변형시켜서 target 단어까지 만들어 내는 것 words에 있는 단어들을 사용해야 한다. ex1) begin = "hit" target = "cog" words = "hot", "dot", "dog", "lot", "log", "cog" 정답 : hit -> hot -> dot -> dog -> cog 0 1 2 3 4 => return 4 public int answer; public boolean[] v; public void dfs(String begin, String target, String[] words) { if (begin.equals(target)) { int cnt = 0; for (int i = 0; i < words.length; ++..
2020.06.13 -
블록체인과 비트코인의 잘못된 사실
1. 분산 시스템 vs 탈중앙화 시스템 분산 시스템: 복수 개의 서버가 일을 나눠 처리하는 분산 시스템 - 작업의 효율성이나 서비스의 가용성을 높이는 것을 주목적으로 하고 있다. - 분산된 일을 여러 서버가 동시에 처리함으로써 일을 더 빨리 해결할 수 있다. - 중앙 서버가 고장 나도 모든 서비스가 중단되는 것을 방지해 가용성 또한 획기적으로 높일 수 있다. - 여러 서버가 분산 작업을 하고, 분산 저장하는 시스템이다. 탈중앙화 시스템: 여러 서버가 일을 분산해 처리하는 것이 아니라 동일한 일을 중복해 처리하는 시스템 - 더 많은 자원과 시간이 투입되지만, 일을 중복하기 때문에 효율성이 극도로 저하된다. - 모든 노드가 일을 반복한 후 그 결과를 일치시키기 때문에 일의 결과에 대한 신뢰도는..
2020.04.27