
알고리즘은 꾸준히 풀었는데 글 업로드를 안 했다...정말이다..정말 열심히 풀었다.. 어쨌든 낮은 난이도에 비해 배울 점이 많은 문제라서 이렇게 기록을 남기게 되었다. www.acmicpc.net/problem/17103 17103번: 골드바흐 파티션 첫째 줄에 테스트 케이스의 개수 T (1 ≤ T ≤ 100)가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 정수 N은 짝수이고, 2 < N ≤ 1,000,000을 만족한다. www.acmicpc.net 기본 아이디어 두 소수의 합으로 짝수를 이루는 과정에서 각 수에 대해 소수이지 확인하는 절차가 필요하다. 입력이 첫째줄에 테스트 케이스의 수가 주어지고 그 수 만큼 테스트 케이스가 주어지는 구조이다. 각 수에 대해 소수인지 체크한 리스트를 한 번만..

안드로이드 개발을 할 때, Activity나 Fragment에서 레이아웃 xml에서 textView나 Button을 가져오기 위해 findViewById 코드를 지겹게 작성해보았을 것입니다. 이런 코드를 줄여보고자 kotlin에서는 kotlin-android-extenstions를 사용하기도 하지만 요즘은 view binding을 사용하는 추세로 가는 듯 합니다. 그래서 필자도 view binding을 활용하고자 아래 공식 문서의 참조 코드를 보면서 코드를 작성하고 있는데 문득 이런 생각이 들었습니다. Fragment에서는 왜 OnDestroyView에서 binding을 다시 null로 바꿔주는 코드를 추가해줄까? Activity에서와 Fragment에서 선언하는 binding 변수 개수가 왜 다를까? ..

문제 BlankActivity를 생성하면서 의도치 않게 wearable 화면을 추가하게 되었는데 앱을 실행하려고 하니 다음과 같은 상태가 되어 있었다. 해결 참고한 해결 방법은 역시나 스택오버플로우!! stackoverflow.com/questions/42596885/android-studio-error-missing-feature-watch android studio error : missing feature: WATCH I have tried to run one simple application with android studio on my smartwatch and I've got the following message: my smartwatch runs android 4.4.2 which has ..

웹, 앱을 개발하다보면 자연스럽게 만나게 되는 개념이 아키텍처이고 MVC 패턴이라는 단어를 쉽게 만나볼 수 있습니다. 이런 아키텍처 패턴이 중요한 이유는 수없이 있겠지만 제가 체감한 경험은 다음과 같습니다. 내가 쓴 코드를 다시 보거나 다른 사람이 내 코드를 볼 때 어떤 코드가 어디에 있을지 예상하기 쉽다. 코드의 기능이나 로직이 잘 분류되어 있어 테스트를 할 때 간편하다. 코드의 기능이나 로직이 잘 분류되어 있어 하나의 파일에 과도한 코드가 몰리는 것을 방지할 수 있다. MVP, MVVM 패턴은 MVC 패턴의 파생 패턴이므로 MVC > MVP > MVVM 순으로 정리를 해보겠습니다. 0. Model과 View 본격적으로 아키텍처 패턴을 알아보기 전에 Model과 View를 제대로 알아보고 가야합니다. ..
본 포스팅의 내용은 [깡샘의 코틀린 프로그래밍]을 공부하고 작성자가 생각을 정리하기 위해서 작성한 글이므로 더욱 자세한 내용을 알고 싶으신 분은 [깡샘의 코틀린 프로그래밍]을 강력 추천합니다!! 1. 추상 클래스 1.1. 추상 클래스 선언(abstract) 추상 함수는 미완성 함수 혹은 실행 영역이 없는 함수를 의미한다. 추상 클래스는 추상 함수를 포함하는 클래스를 의미한다. 추상 프로퍼티란 선언부만 있는 프로퍼티를 말한다. abstract 예약어를 활용하여 추상 함수, 추상 프로퍼티와 추상 클래스를 명시할 수 있다. 1.2. 추상 클래스 이용 추상 클래스는 그 자체로는 객체를 생성할 수 없고 하위 클래스에서 추상 멤버들을 구현하여 생성해야 한다. 추상 클래스는 공통 코드(라이브러리, 프레임워크)를 작성..
객체 지향 프로그래밍을 처음 접하는 사람은 물론이고, 이미 사용하고 있는 사람들도 추상 클래스와 인터페이스의 사용 형태가 비슷하여 목적을 명확하게 구분하지 못 하는 경우가 허다하다. (물론 나도) 사용 목적을 파악하면 사용 방법 또한 자연스럽게 터득하게 되기 때문에 이번 포스팅에서는 추상 클래스와 인터페이스의 사용 목적을 다뤄볼 것이다. 추상 클래스와 인터페이스의 사용 목적 우선 핵심적인 부분은 추상 클래스는 클래스이고 인터페이스는 클래스가 아니다. 뭔 당연한 소리를 대단한 것 마냥 얘기하나 싶겠지만, 각각의 정체성을 나타내는 부분이기 때문에 짚고 넘어갈 필요가 있었다. 흔히 객체지향에서 클래스와 인터페이스를 구분할 때는 "is a", "has a"라는 말로 설명을 하곤 한다. 추상 클래스는 클래스이기 ..
본 포스팅의 내용은 [깡샘의 코틀린 프로그래밍]을 공부하고 작성자가 생각을 정리하기 위해서 작성한 글이므로 더욱 자세한 내용을 알고 싶으신 분은 [깡샘의 코틀린 프로그래밍]을 강력 추천합니다!! 1. 코틀린에서의 상속 1.1. Any 클래스 코틀린의 모든 클래스는 Any 클래스의 서브 클래스이다. 코틀린에서 클래스를 선언할 때 상위 클래스를 명시하지 않으면 기본으로 Any 클래스를 상속받는다. Any 클래스는 자바의 java.lang.Object 클래스와는 다르다. Any 클래스는 equals( ), toString( ) 이외의 다른 멤버들은 제공하지 않는다. 1.2. 상속을 통한 클래스 정의 코틀린에서 어떤 클래스를 상속받으려면, 해당 클래스 선언부에 상속 허용 여부를 결정하는 open 예약어를 사용해..
본 포스팅의 내용은 [깡샘의 코틀린 프로그래밍]을 공부하고 작성자가 생각을 정리하기 위해서 작성한 글이므로 더욱 자세한 내용을 알고 싶으신 분은 [깡샘의 코틀린 프로그래밍]을 강력 추천합니다!! 1. 코틀린에서 프로퍼티 이용 1.1. 프로퍼티란? 코틀린에서는 클래스의 변수를 프로퍼티라고 부른다. val이나 var로 선언되는 변수들이 프로퍼티다. 프로퍼티는 getter와 setter 함수가 내장되어 있다. 프로퍼티를 선언할 때 초깃값과 getter, setter는 선택사항이다. // 프로퍼티 형식 var [: ] [=