분류 전체보기 36

코딩테스트 언어를 Kotlin으로 바꾼 이유(찐 최종) + 소소한 팁

코딩테스트 언어를 바꾸겠다는 게시글만 벌써 3번째다. 꽤 민망하지만 아마 이번이 진짜 최종 결정일 것이다. (제발) 나름 확고하게 마음을 굳히고 Java로 알고리즘 공부를 하고 있었는데 Kotlin으로 언어를 바꾸게 된 데에는 나름의 이유가 있다. 회사를 다니면서도 나름 꾸준히 알고리즘 문제를 풀어왔고, 현재 내일배움캠프 교육을 듣고있는 와중에도 알고리즘을 꾸준히 풀고 있었다. 현재 듣고있는 교육이 Kotlin을 활용한 안드로이드 교육인만큼, 교육 내에서는 Kotlin으로 알고리즘을 공부하도록 권장하는 것 같았다. Java로 알고리즘 공부를 계속 해왔기 때문에 교육 내에 상주하는 한 튜터님께 알고리즘 언어 선택에 대한 질문을 하게되었고 Java와 Kotlin 둘 다 사용을 할 줄 안다면, 그리고 Java..

코딩테스트 2023.08.10

[프로그래머스] 안전지대 - Java(자바)

문제 다음 그림과 같이 지뢰가 있는 지역과 지뢰에 인접한 위, 아래, 좌, 우 대각선 칸을 모두 위험지역으로 분류합니다. 지뢰는 2차원 배열 board 에 1로 표시되어있고 board 에는 지뢰가 매설된 지역 1과, 지뢰가 없는 지역 0만 존재합니다. 지뢰가 매설된 지역의 지도 board가 매개변수로 주어질 때, 안전한 지역의 칸 수를 return 하도록 solution 함수를 완성해주세요. 제한사항 board 는 n * n 배열입니다. 1

[안드로이드][Kotlin] Scope Functions (Apply, Also, Let, With, Run 함수)

코틀린 표준 라이브러리에서는 자기 자신의 객체를 전달하는 Scope Function 을 지원한다. Scope Funtion에는 크게 Apply, Also, Let, With, Run 함수가 존재한다. 아래 표를 통해 전체적인 그림에 대해 알아보자. 접근방식 this 접근방식 it 객체 자신을 반환 apply also 블록 수행 결과를 반환 run, with let 본 게시물에서는 5가지 Scope Function 의 정의를 포함한 Java VS Kotlin 코드를 비교하여 다뤄볼 예정이다. 1. Apply 함수 this 를 통해 자신의 객체를 전달하고 그 객체를 다시 반환하는 함수로, 주로 객체의 상태를 변화시키고 바로 저장하고 싶을 때 사용하는 함수이다. //Kotlin Code val person =..

[안드로이드][Kotlin] Null Safety 와 지연초기화

Kotlin은 Java와 달리 Null 처리에 높은 안정성을 가진다는 특징이 있다. null 예외가 발생하면 앱이 다운되고, 이는 프로그램의 가용성을 저하시키는 치명적인 오류라고 할 수 있다. 코틀린에서는 자료형에 null 여부를 명시함으로서 안정성을 높일 수 있다. null 처리 안정성을 높이기 위해 "?", "!!", "?.", "?:" 와 같은 키워드를 사용한다. 1. "?" 키워드 Java에서는 NPE(Null Pointer Exception)를 런타임에서만(=실행을 해야만) 잡을 수 있는 반면, Kotlin에서는 이를 컴파일 시점에서도 잡기위해 "?" 키워드를 사용한다. ? 키워드를 사용하면 해당 변수가 Nullable 타입으로 사용된다. fun nullCheck() { var name: Str..

[프로그래머스] 겹치는 선분의 길이 - Java(자바)

문제 선분 3개가 평행하게 놓여 있습니다. 세 선분의 시작과 끝 좌표가 [[start, end], [start, end], [start, end]] 형태로 들어있는 2차원 배열 lines 가 매개변수로 주어질 때, 두개 이상의 선분이 겹치는 부분의 길이를 return 하도록 solution 함수를 완성해보세요. lines 가 [[0, 2], [-3, -1], [-2, 1]] 일 때 그림으로 나타내면 다음과 같습니다. 선분이 두 개 이상 겹친 곳은 [-2, -1], [0, 1] 로 길이 2만큼 겹쳐있습니다. 제한사항 lines 의 길이 = 3 lines 의 원소의 길이 = 2 모든 선분은 길이가 1 이상입니다. lines 의 원소는 [a, b] 형태이며, a, b는 각각 선분의 양 끝점 입니다. (-100

[안드로이드][Kotlin] 액티비티 간의 데이터 전달 (+registerForActivityResult() 사용)

안드로이드 개발을 하다보면, Activity 간의 데이터를 전달하는 상황이 발생한다. 먼저 단방향으로 데이터를 전달하는 방법에 대해 알아보자. 다른 Activity로 데이터를 전달하기 위해서는 다른 앱 구성요소로 작업을 요청하는 일종의 메시지 객체인 intent 객체에 데이터를 담아 전달할 수 있다. 다른 Activity 로 데이터를 전달할 때는 일반적으로 명시적 인텐트를 사용한다. (참고) 명시적 인텐트 VS 암시적 인텐트 더보기 - 명시적 인텐트(Explicit Intent) 시작할 구성요소 이름을 Intent 객체에 설정하여 넘기는 방식으로, 일반적으로 현재 앱 안의 구성요소를 시작시킬 때 사용한다. startActivity(Intent(this, SubActivity::class.java)) - ..

[내일배움캠프] 첫번째 프로젝트를 마무리하며

내일배움캠프 첫주차가 끝이 났다. 어떻게 흘러간지 모를만큼 정신없는 일주일이었던 것 같다. 첫 프로젝트는 고도의 기술보단 사전캠프 때 배웠던 Flutter 내용들을 바탕으로 팀 소개 페이지를 만드는것이 목표였다. 비대면으로 팀프로젝트를 진행하다보니 어색하기도 하고 내 의도와 다르게 말이 전달될까 조심스러운 부분도 많았던 것 같다. 그럼에도 일주일이란 시간동안 너무나도 만족스러운 결과물을 완성해냈다고 생각한다. KPT 방법론을 활용하여 이번주에 대한 회고를 기록해보려고 한다. K(Keep) - 유지할 부분 - 실무에서도 사용하는 Figma, Notion, Github을 전부 사용함으로써 여러 경험을 익힐 수 있어서 좋았다. - 막히는 부분에 대해 팀원끼리 공유하고 피드백 해가며 서로 도움을 주었다. - 팀..