분류 전체보기


💡 출처 https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5V4A46AdIDFAWu SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 💡 문제 [설명] N*N 개의 벌통이 정사각형 모양으로 배치되어 있다. 각 칸의 숫자는 각각의 벌통에 있는 꿀의 양을 나타내며, 꿀의 양은 서로 다를 수 있다. 아래 [Fig. 1]은 N=4인 16개의 벌통을 나타낸다. 각 벌통에 있는 꿀의 양이 주어졌을 때, 다음과 같은 과정으로 벌꿀을 채취하여 최대한 많은 수익을 얻으려고 한다. ① 두 명의 일꾼이 있다. 꿀을 채취할 수 있는 벌통의 수..


💡 출처 https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5PpFQaAQMDFAUq SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 💡 문제 [설명] 김 프로는 수영장을 이용한다. 김 프로는 지출이 너무 많아 내년 1년 동안 각 달의 이용 계획을 수립하고 가장 적은 비용으로 수영장을 이용할 수 있는 방법을 찾고 있다. 수영장에서 판매하고 있는 이용권은 아래와 같이 4 종류이다. ① 1일 이용권 : 1일 이용이 가능하다. ② 1달 이용권 : 1달 동안 이용이 가능하다. 1달 이용권은 매달 1일부터 시작한다. ③ 3달 이용..


💡 출처 https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5PoOKKAPIDFAUq SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 💡 문제 [설명] 등산로를 조성하려고 한다. 등산로를 만들기 위한 부지는 N * N 크기를 가지고 있으며, 이곳에 최대한 긴 등산로를 만들 계획이다. 등산로 부지는 아래 [Fig. 1]과 같이 숫자가 표시된 지도로 주어지며, 각 숫자는 지형의 높이를 나타낸다. 등산로를 만드는 규칙은 다음과 같다. ① 등산로는 가장 높은 봉우리에서 시작해야 한다. ② 등산로는 산으로 올라갈 수 있도록 반드시..


💡 범위 지정 함수란? (= Scope Function) 범위 지정 함수는 특정 범위 블록 내에서는 특정 객체를 this, it을 통해 접근하거나 조작할 수 있는 함수를 말한다. 즉, 범위 지정 함수를 사용하면 임시 Scope가 형성된다. 이렇게 사용하면 뭐가 좋냐? 일단 가독성이 증가하여 유지보수가 쉽고, 불필요한 변수 선언을 방지할 수 있다. Kotlin에서는 범위 지정 함수 5가지(let, apply, with, also, run)를 제공하고 있다. 이 함수들은 수신 객체를 어떻게 전달하는지, 반환 값이 무엇인 지에 따라 차이점이 있다. 💡 Type 1 : let 함수 fun T.let(block : (T) -> R) : R let은 수신 객체를 람다의 Parameter로 전달하기 때문에 'it'을..


💡 출처 https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5LtJYKDzsDFAXc SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 💡 문제 [설명] N^2개의 방이 N×N형태로 늘어서 있다. 위에서 i번째 줄의 왼쪽에서 j번째 방에는 1 이상 N^2 이하의 수 Ai, j가 적혀 있으며, 이 숫자는 모든 방에 대해 서로 다르다. 당신이 어떤 방에 있다면, 상하좌우에 있는 다른 방으로 이동할 수 있다. 물론 이동하려는 방이 존재해야 하고, 이동하려는 방에 적힌 숫자가 현재 방에 적힌 숫자보다 정확히 1 더 커야 한다. 처..


💡 개요 코드를 작성하다 보면 NullPointerException(NPE)를 자주 접할 수 있다. 이 예외는 Null 값을 참조하는 경우에 발생하는 예외이다. 생각보다 NPE는 자주 발생하며 코드가 길어질수록 그 원인을 파악하기 힘든 경우가 많다. 그래서 Kotlin에서는 Null에 대한 처리를 명확하게 하여 NPE의 발생빈도를 낮추고자 했다. 오늘은 Kotlin에서 Null을 어떻게 다루는지에 대해 알아보고자 한다. 💡 Type 1 : '?' 연산자 코틀린에서는 기본적으로 Null 값을 허용하지 않는다. 대신 '?'를 붙여 Null이 올 수도 있는 변수임을 명시적으로 표현할 수 있다. 아래와 같이 '?'연사자를 사용하지 않은 변수 a의 경우 Null 값을 넣으면 Error가 발생한다. 하지만 '?' ..


💡 출처 https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV18TrIqIwUCFAZN SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 💡 문제 [설명] 해야 할 V개의 작업이 있다. 이들 중에 어떤 작업은 특정 작업이 끝나야 시작할 수 있으며, 이를 선행 관계라 하자. 이런 작업의 선행 관계를 나타낸 그래프가 주어진다. 이 그래프에서 각 작업은 하나씩의 정점으로 표시되고 선행 관계는 방향성을 가진 간선으로 표현된다. 단, 이 그래프에서 사이클은 존재하지 않는다 (사이클은 한 정점에서 시작해서 같은 정점으로 돌아오는 경로를..


💡 View Binding이란? 우리는 기존에 Layout에 있는 View에 접근하기 위해서는 아래와 같이 사용해야 했었다. // TextView 변수 선언 private lateinit var tvOne: TextView // TextView 변수와 activity_main의 tvOne id를 가지는 View와 연결 tvOne = findViewById(R.id.tvOne) Layout에 View과 많지 않다면 그렇게 귀찮은 일은 아니지만, View가 많을 경우 일일이 작성해야 하는 불편함이 있었다. 그래서 나온 것이 View Binding이다. View Binding은 XML Layout 파일에 대한 Binding Class를 자동으로 생성해 View와 상호작용한다. 그렇기 때문에 별도의 연결과정 없..


💡 개요 이전 포스팅에서 RecyclerView를 사용할 Layout에 추가하고, RecyclerView에 들어가는 Item을 만들었다. 또한, Data를 하나로 묶어서 관리하기 위한 DTO를 만들었다. 이어서 Adapter를 만들고 실제 Activity에 적용시켜보고자 한다. 💡 STEP 4 : Adapter 만들기 이제 본격적으로 Adapter를 만들어야 한다. Adapter는 간단하게 아이템을 RecyclerView에 바인딩시켜주기 위한 사전 작업이 이루어지는 객체이다. Adapter에 속한 각 함수에 대해 설명하자면 onCreateViewHolder는 ViewHolder 객체를 만들어주는 역할을 한다. onBindViewHolder는 생성된 ViewHolder에 Data를 Binding 해주는 역..