Meoru_tech
-
[프로그래머스] 위장 (Kotlin)문제풀이/프로그래머스 2021. 6. 28. 15:20
https://programmers.co.kr/learn/courses/30/lessons/42578?language=kotlin 코딩테스트 연습 - 위장 programmers.co.kr 내 풀이 풀이(1) class Solution { fun solution(clothes: Array): Int { var answer = 1 val sep = HashMap() for (cloth in clothes) { sep[cloth[1]]?.let { sep.put(cloth[1], it + 1) } ?: sep.put(cloth[1], 1) } for (i in sep) { answer *= (i.value + 1) } return (answer - 1) } } ※ let 함수란? 💡 [Kotlin/코틀린] l..
-
💡 [Kotlin/코틀린] let 함수가 뭐죠?| 프로그래밍 분야/Kotlin 2021. 6. 28. 15:19
let 함수의 정의 fun T.let(block: (T) -> R): R let 함수는 타입 T의 확장함수입니다. ※ 타입 T란? 따라서 모든 타입의 객체에 Chain Method(점(.)으로 이어나가는) 방식으로 사용할 수 있습니다. 반환 타입도 참조형 타입 R로 선언되어, 어떤 타입도 반환 타입도 가질 수 있으며, 반환값을 갖지 않을 수도 있습니다. (참조형 타입에 대한 설명은 위 링크에서 확인하실 수 있습니다.) let 함수의 특징 및 용례 let 함수는 람다식으로 중괄호를 채워 이용합니다. let 함수는 스스로의 객체를 인자로 받아 사용합니다. 또한, 중괄호 내부에서 해당 객체를 it 키워드로 호출할 수 있습니다. fun main() { val a:String = "m" // 먼저, let 함수를..
-
💡 [자바/코틀린] 제네릭? 타입 T? 자세히 알려주세요| 프로그래밍 분야/Kotlin 2021. 6. 28. 13:31
제네릭(generic)이란? 제네릭은 generalize, 즉 "일반화하다"에서 나온 개념입니다. 즉, 데이터의 타입을 일반화한다는 것을 의미합니다. 제네릭을 통해 클래스나 메서드에서 사용할 내부 데이터 타입을 컴파일 타임에 미리 지정하는 방법입니다. 이를 통한 장점은 크게 세 가지로 나뉩니다. 1. 객체의 타입 안정성 증가 2. 반환값에 대한 타입 변환 및 타입 검사 x 3. 모든 객체에 대한 확장성 기존의 방식 JDK 1.5 이전에서는 여러 타입을 사용하는 클래스나 메소드에서 인수나 반환값으로 최상위 객체인 Object 타입을 사용했습니다. 이 때 Object 객체를 다시 원하는 타입으로 변환해야 하며, 오류가 발생할 가능성도 존재합니다. 하지만 JDK 1.5부터 도입된 제네릭은 컴파일 시에 미리 타..
-
💡 [안드로이드/코틀린] lateinit var 초기화(할당) 여부 확인법| 프로그래밍 분야/Kotlin 2021. 6. 28. 09:02
"::변수명.isInitialized"로 확인이 가능합니다. (예시) private lateinit var sample:String fun main() { for (i in 1..2) { if (::sample.isInitialized) { sample = "이미 할당되었다면 이 문구로 재할당됨" } else { sample = "할당된 적이 없다면 이 문구로 할당됨" } println(sample) } } (출력 화면) 더블 콜론(::)은 리플렉션(reflection)을 위해 사용되며, 보통 "클래스명::class"로 사용되고, 액티비티를 넘겨주어 단말에서 사용할 필요가 있을 때에는 "클래스명::class.java"로 사용합니다. 참조 다만 변수 앞에 쓰인 더블 콜론(::)은 변수를 객체로 액세스하여 ..
-
💡 [Android/Kotlin] 뷰바인딩(viewBinding) 어떻게 쓰고, 왜 쓰는가? (ft. kotlin-android-extensions)| 프로그래밍 분야/안드로이드 2021. 6. 22. 22:58
💡 사용 방법 1) build.gradle(:app) 세팅 android { ... viewBinding { enabled = true } ... } 2) MainActivity.kt 세팅 (Inflate하려는 리소스파일의 이름 : example_res.xml) class MainActivity : AppCompatActivity() { private lateinit var binding: ExampleResBinding override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) binding = ExampleResBinding.inflate(layoutInflater) setContentView(bindi..
-
💡 [Kotlin] 예제를 통해 보는 기본 문법 - 변수, 상수(val, const val), 함수| 프로그래밍 분야/Kotlin 2021. 6. 22. 13:44
💡 예제 - Hello World 출력 class Tmp { companion object { const val GREETING:String = "World" } } fun main(){ val greeting:String greeting = "World" // greeting = "Meoru" // Tmp.GREETING = "Meoru" println("Hello " + greeting) println("Hello " + Tmp.GREETING) } [결과] Hello World Hello World 예제를 통해 알 수 있는 점 (vs Java) Java Kotlin main 함수 선언부 class 내부 최상위 레벨 (런타임) 상수 선언 final String greeting; val greeting..
-
💡 [Git bash/문제 해결] Restart after installing zip| 프로그래밍 분야/Unix-Linux 2021. 6. 22. 10:08
저처럼 Unix-Linux 터미널 환경에 익숙해진 분들이 윈도우에서 터미널을 대체할 수 있는 수단은 보통 두가지입니다. 1) Ubuntu 설치 => 실제 리눅스 환경 구현 및 커스터마이징 용이... 하지만 너무 무거움 2) Git bash 활용 => 개발자의 필수 툴인 Git을 설치할 때 같이 설치되고, 가벼우며 기본 기능 사용 가능 저는 평소 깃 관리를 위해 git bash를 자주 이용합니다. 오늘도 git bash를 사용하던 중, sdk manager를 설치해야 할 일이 생겨서 설치 도중 에러 발생. $ curl -s https://get.sdkman.io | bash (중략) Looking for a previous installation of SDKMAN... Looking for unzip.....
-
💡 42서울(42Seoul) 4기 본과정 합격 후기| 이모저모 2021. 6. 21. 21:53
💡 합격 발표 ✔ 피신 종료 후 7일 뒤, 15시 42분(그놈의 ㅋㅋㅋ)에 슬랙에 공지가 하나 올라왔습니다. (이노아카 학장님의 좋은 말씀. 요약하자면 고생많았고 프라이드를 가지길 바라고 앞으로도 잘해보자) 전 기수들의 후기들을 보면, 학장님의 응원메세지는 파이널시험 끝나면서 전달받고, 결과 고지 날짜도 알려주지 않고 제각각이었던 것 같습니다. 그러나 15시 42분에 저 공지를 본 피시너들은 모두 직감합니다. 아, 한시간 뒤에 발표구나. 직감은 맞아떨어졌다. 그놈의 42분 집착 ㅋㅋㅋ 아무튼 결과가 좋게 나와서 다행이었습니다. 취준 기간동안 수십번의 서탈과 면탈을 겪으며 멘탈이 나갈만큼 나간 상태였고, 이마저도 떨어졌으면..... 그래도 열심히 공부를 이어나갔겠지만, 정신적으로 굉장히 힘들었을 것 같습니..