분류 전체보기
-
백준 1697번 숨바꼭질 (Java)Problem Solving 2021. 6. 29. 12:09
해결과정 전형적인 브루트 포스 형태의 문제이다. 문제는 수빈이와 동생의 위치가 일치되는 지점을 찾고 거기까지 걸리는 최소 시간을 찾는 문제이다. 재밌는 것은 위치는 선형적으로 계산하면 되고, 순간이동이라는 선택지가 있다는 것이다. 따라서, 각 이동시점마다 선택할 수 있는 선택지는 3개이다. 이러한 선택지와 과정들을 탐색하면서 가장 빠른 시간에 일치되는 시점을 찾는 것이다. 처음에는 DFS로 접근을 했는데, 이렇게 됐을 경우 StackOverFlow가 발생했다. 왜냐하면, 재귀적으로 호출하기 때문에 운이 좋으면 바로 찾아낼 수 있지만, 잘못된 과정으로 진입한다면 100000이 넘어서는 지점까지 계속해서 재귀호출을 하기 때문이다. 예를 들어, X+1 호출이 맨 처음 선택지로 주어진다면 재귀 호출은 10000..
-
백준 14890번(Java) 경사로Problem Solving 2021. 6. 4. 11:26
https://www.acmicpc.net/problem/14890 14890번: 경사로 첫째 줄에 N (2 ≤ N ≤ 100)과 L (1 ≤ L ≤ N)이 주어진다. 둘째 줄부터 N개의 줄에 지도가 주어진다. 각 칸의 높이는 10보다 작거나 같은 자연수이다. www.acmicpc.net 구현 문제입니다. 2차원 배열에서 지나갈 수 있는 길이 몇개인지를 판별하는 문제인데, 지나갈 수 있는 길에 대한 조건을 잘 코딩하는 것이 중요했습니다. 지나갈 수 있는 길은 한 열, 또는 한 행만을 판단합니다. 따라서, 전체 배열은 2차원 배열이지만, 체크하는 함수를 따로 분리해서, 1차원 배열을 받아 체크하면 될 것이라고 생각했습니다. 문제의 조건에 나와있듯이, 길의 높이가 모두 같으면 그 길은 통과 가능합니다. 만약..
-
Java의 Singleton Pattern에 대하여Java 2021. 5. 26. 18:17
싱글톤 패턴이란? 싱글톤 패턴은 프로그램 어디에서든지 접근 가능하고 프로그램에서 단 하나만 존재하는 객체를 만드는 패턴입니다. 싱글톤 패턴은 아주 다양하게 사용되는데, Android에서 SharedPreference와 같은 저장소도 싱글톤 패턴으로 구현됩니다.(저장소인데 프로그램에서 여러 개 존재하면 안 되겠죠?) 싱글톤 패턴을 구현하는 방법은 여러 가지인데, 멀티 스레드 환경에서 동시성에 관한 문제 때문에 이를 해결하기 위한 기법들이 존재합니다. 객체를 생성할 때 여러 스레드가 동시에 접근하면 1개가 아니라 여러 개가 생성될 수 있는 위험이 있기 때문이죠. 구현 방법 Class SingletonTest { private static SingletonTest instance; private int val..
-
Kotlin의 고차 함수Kotlin 2021. 5. 23. 02:08
코틀린의 함수는 일급 객체라는 특성이 있습니다. 이 일급 객체란 다음과 같은 특징을 지닙니다. 1. 함수가 변수나 자료 구조로 저장될 수 있다 2. 다른 함수의 인자로 사용될 수 있다 3. 다른 함수의 리턴 타입으로 사용될 수 있다 val valueFunction : () -> Unit = { println("test")} fun testFunction() { println("test") } val a = testFunction() val b = valueFunction 이러한 일급 객체라는 특징을 바탕으로, 코틀린에서는 고차 함수(High Order Function)이라는 개념이 있는데요. 이 고차 함수는 다른 함수를 파라미터로 가지거나, 특정 함수를 리턴하는 함수를 말합니다. 코틀린 공식 문서에서는 ..
-
진정 바라는 것은 고난 끝에 반짝이고 있다일상, 생활 기록 2021. 5. 18. 16:40
그 마음을 안다. 아플 정도로 잘 안다. 그래도 서둘러서는 안 된다. 수많은 이가 우러러보는 큰 인물이 되고 싶을지라도, 진리를 탐구하는 학자가 되고 싶을지라도, 아름다움을 추구하는 예술가가 되고 싶을지라도, 혹은 당장에라도 그리 될 듯할지라도 지금은 서두르지 말아야 한다. 이내 손에 닿을 듯한 것이 아무리 훌륭하고 위대해보여도, 자신의 목적 그 자체로 보일지라도 손쉽게 얻는 것은 온전한 의미를 지닐 수 없다. 그대는 우선 자기 자신을 살라. 오직 그대만의 삶을 살아야만 진짜가 될 수 있다. 그것에는 고통, 고뇌, 궁핍, 실의, 노력, 극복이 반드시 필요하다. 괴로움을 피하고 싶은 마음은 잘 안다. 그러나 그대가 진정 바라는 것은 그 고난 끝에 반짝이고 있을 것이다. - 니체의 말2
-
Kotlin의 Null 처리Kotlin 2021. 5. 17. 00:55
개요 Kotlin의 가장 큰 장점 중 하나는 Null 처리를 비교적 안전하고, 간결하게 할 수 있다는 것인데요. Null이 반드시 필요한 상황도 있겠지만, 함수에서 불필요하게 Null을 return 한다거나, 특정 데이터를 사용할 때 Null이 들어있으면 Runtime에서 NPE (Null Pointer Exception)이 발생할 수 있습니다. 이러한 문제는 프로그램이 거대해질수록 더 도드라지는 현상인데요. 많은 개발자들이 Null 처리에서 굉장히 신경을 씁니다. Kotlin은 이러한 Null 처리를 더 편하고 안전하게 하기 위해서 여러 장치들을 뒀는데, 오늘은 그 중 대표적인 몇가지에 대해서 알아보겠습니다. Nullable type과 non-null type Kotlin을 사용하다보면 아래와 같은 타..
-
File Encryption, Decryption 구현보안 2021. 5. 17. 00:10
개요 파일 암호화에는 여러가지 방법이 있습니다. 그 중 고급 암호화 표준인 AES를 사용한 파일 암호화를 자바로 구현해보려고 합니다. 구현에 앞서서 대칭 키 암호와 블록 암호에 대해서 학습 후 진행했습니다. AES와 블록 암호 암호화 알고리즘에서 가장 널리 쓰이는 알고리즘 중 하나는 대칭 키 암호입니다. 대칭 키 암호화는 암호화(Encryption)와 복호화(Decryption)에 같은 키를 사용하는 알고리즘입니다. 특히, 공개 키 암호와 대비해서 성능이 뛰어나다는 장점이 있습니다. 대칭 키 암호는 암호화하는 단위에 따라 스트림 암호와 블록 암호로 구분됩니다. 스트림 암호는 평문을 비트/바이트로 계속 입력 받아서 암호화하는 방식이고, 블록 암호는 평문을 정해진 크기의 블록 단위로 나눠 이에 대응하는 암호..
-
데이비슨 대학 이현중 인터뷰일상, 생활 기록 2021. 5. 7. 19:38
평소 정말 좋아하는 선수인데 인터뷰를 보고 감명받아 링크를 남겨놓습니다. 도전과 성장에 대해서 다시 한번 돌아보게 되는 것 같습니다. sports.news.naver.com/news.nhn?oid=529&aid=0000055390 이현중 “NBA는 ‘다재다능’ 설린저보다 ‘특급 슈터’ 로빈슨을 선호한다” [엠스플 인터뷰] -NCAA 남자농구 디비전1 2학년 시즌 마친 이현중, 스테판 커리 모교 데이비슨 대학교 에이스로 우뚝 -“달콤한 칭찬보다 쓴소리해 주는 사람 있어야 발전할 수 있다” -“180클럽 가입이 NBA 진출 보 sports.news.naver.com