Language
-
코루틴 실행순서를 간단하게 테스트해 보았습니다. 코루틴의 개념은 다루지 않습니다!class MainActivity : AppCompatActivity() { private val mainActivityViewModel: MainActivityViewModel by viewModels() override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) mainActivityViewModel.testCoroutine() }} [1] 하나의 코루틴스코프 내에 실행 순서private const v..
[Kotlin] Coroutine 실행 순서 살펴보기코루틴 실행순서를 간단하게 테스트해 보았습니다. 코루틴의 개념은 다루지 않습니다!class MainActivity : AppCompatActivity() { private val mainActivityViewModel: MainActivityViewModel by viewModels() override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) mainActivityViewModel.testCoroutine() }} [1] 하나의 코루틴스코프 내에 실행 순서private const v..
2024.07.02 -
📌 [Item 15] 리시버를 명시적으로 참조하라. ✅ 리시버가 명확하지 않다면, 명시적으로 리시버를 적어서 명확하게 하는 것이 좋다. 레이블 없이 리시버를 사용하면 가장 가까운 리시버외부에 있는 리시버를 사용하려면, 레이블을 사용 예시)apply 스코프 내부에 레이블 없이 사용된 리시버는 create()메서드의 반환값을 가리킨다. (this?.name)그리고 외부 리시버를 사용하기 위해 레이블을 붙여 사용하는 것을 확인할 수 있다. (this@Node.name) 출력: Created parent-child in parent 어떤 리시버를 활용하는지 의미를 명확하게 하면 코드의 안정성과 가독성을 향상할 수 있다.리시버를 제거하여 코드를 짧게 만든다고 해서 무조건 좋은 것은 아니다. 📌 [I..
[Effective Kotlin] 2장 가독성 : Item 15번 ~ 18번📌 [Item 15] 리시버를 명시적으로 참조하라. ✅ 리시버가 명확하지 않다면, 명시적으로 리시버를 적어서 명확하게 하는 것이 좋다. 레이블 없이 리시버를 사용하면 가장 가까운 리시버외부에 있는 리시버를 사용하려면, 레이블을 사용 예시)apply 스코프 내부에 레이블 없이 사용된 리시버는 create()메서드의 반환값을 가리킨다. (this?.name)그리고 외부 리시버를 사용하기 위해 레이블을 붙여 사용하는 것을 확인할 수 있다. (this@Node.name) 출력: Created parent-child in parent 어떤 리시버를 활용하는지 의미를 명확하게 하면 코드의 안정성과 가독성을 향상할 수 있다.리시버를 제거하여 코드를 짧게 만든다고 해서 무조건 좋은 것은 아니다. 📌 [I..
2024.05.12 -
◼️ Kotlin코틀린은 JetBrains에서 개발하고 보급.자바와 달리 문장 끝에 세미콜론(;)은 옵션Google IO 2017에서 Android 공식 언어로 추가 발표변수는 Nullable과 NotNull로 나뉨 ◼️ 코틀린의 장점자료형에 대한 오류를 미리 잡을 수 있음 (컴파일러가 타입을 검증한다.)자바와 비교했을때 NullPointer Exception에서 비교적 자유로움데이터형 선언 시 Null 가능한 형식과 불가능한 형식 지원자바와 완벽하게 상호호환됨자바와 비교했을 때 간결하고 효율적인 프로그래밍이 가능함수형 프로그래밍과 객체 지향 프로그래밍이 모두 가능세미콜론 생략 가능 ◼️ 참고코틀린은 JVM위에서 동작한다.자바는 class안에 main 메서드를 선언해야 한다. 하지만 코틀린은 clas..
[Kotlin] 자료형 | 자료형 변환 | 스마트 캐스트◼️ Kotlin코틀린은 JetBrains에서 개발하고 보급.자바와 달리 문장 끝에 세미콜론(;)은 옵션Google IO 2017에서 Android 공식 언어로 추가 발표변수는 Nullable과 NotNull로 나뉨 ◼️ 코틀린의 장점자료형에 대한 오류를 미리 잡을 수 있음 (컴파일러가 타입을 검증한다.)자바와 비교했을때 NullPointer Exception에서 비교적 자유로움데이터형 선언 시 Null 가능한 형식과 불가능한 형식 지원자바와 완벽하게 상호호환됨자바와 비교했을 때 간결하고 효율적인 프로그래밍이 가능함수형 프로그래밍과 객체 지향 프로그래밍이 모두 가능세미콜론 생략 가능 ◼️ 참고코틀린은 JVM위에서 동작한다.자바는 class안에 main 메서드를 선언해야 한다. 하지만 코틀린은 clas..
2024.05.12 -
◼️ Kotlin코틀린은 JetBrains에서 개발하고 보급.자바와 달리 문장 끝에 세미콜론(;)은 옵션Google IO 2017에서 Android 공식 언어로 추가 발표변수는 Nullable과 NotNull로 나뉨 ◼️ 코틀린의 장점자료형에 대한 오류를 미리 잡을 수 있음 (컴파일러가 타입을 검증한다.)자바와 비교했을때 NullPointer Exception에서 비교적 자유로움데이터형 선언 시 Null 가능한 형식과 불가능한 형식 지원자바와 완벽하게 상호호환됨자바와 비교했을 때 간결하고 효율적인 프로그래밍이 가능함수형 프로그래밍과 객체 지향 프로그래밍이 모두 가능세미콜론 생략 가능 ◼️ 참고코틀린은 JVM위에서 동작한다.자바는 class안에 main 메서드를 선언해야 한다. 하지만 코틀린은 class없..
[Kotlin] 자료형 | 자료형 변환 | 스마트 캐스트◼️ Kotlin코틀린은 JetBrains에서 개발하고 보급.자바와 달리 문장 끝에 세미콜론(;)은 옵션Google IO 2017에서 Android 공식 언어로 추가 발표변수는 Nullable과 NotNull로 나뉨 ◼️ 코틀린의 장점자료형에 대한 오류를 미리 잡을 수 있음 (컴파일러가 타입을 검증한다.)자바와 비교했을때 NullPointer Exception에서 비교적 자유로움데이터형 선언 시 Null 가능한 형식과 불가능한 형식 지원자바와 완벽하게 상호호환됨자바와 비교했을 때 간결하고 효율적인 프로그래밍이 가능함수형 프로그래밍과 객체 지향 프로그래밍이 모두 가능세미콜론 생략 가능 ◼️ 참고코틀린은 JVM위에서 동작한다.자바는 class안에 main 메서드를 선언해야 한다. 하지만 코틀린은 class없..
2024.05.04 -
📌 infix 확장 함수Kotlin에서 infix 확장함수는 특정 타입의 메서드를 더 읽기 쉽고 자연스러운 문법으로 호출할 수 있게 해주는 기능입니다. infix 함수는 한 쌍의 객체 사이에 중위 연산자처럼 사용될 수 있으며, 단일 파라미터를 받습니다. 이를 통해 코드를 더 간결하고 직관적으로 작성할 수 있습니다. infix 확장함수 정의 방법infix 함수를 정의하기 위해서는 몇 가지 규칙이 있습니다.멤버 함수 또는 확장 함수여야 합니다. 단 하나의 파라미터를 가져야 합니다. infix 키워드로 시작해야 합니다. 사용 시 주의 사항infix 함수는 가독성을 높이는 목적으로 사용되며, 남발할 경우 코드의 명시성을 해칠 수 있으므로 적절한 상황에서 사용하는 것이 중요합니다. 함수가 단 하나의 인자만 받는..
[Kotlin] infix & top level function📌 infix 확장 함수Kotlin에서 infix 확장함수는 특정 타입의 메서드를 더 읽기 쉽고 자연스러운 문법으로 호출할 수 있게 해주는 기능입니다. infix 함수는 한 쌍의 객체 사이에 중위 연산자처럼 사용될 수 있으며, 단일 파라미터를 받습니다. 이를 통해 코드를 더 간결하고 직관적으로 작성할 수 있습니다. infix 확장함수 정의 방법infix 함수를 정의하기 위해서는 몇 가지 규칙이 있습니다.멤버 함수 또는 확장 함수여야 합니다. 단 하나의 파라미터를 가져야 합니다. infix 키워드로 시작해야 합니다. 사용 시 주의 사항infix 함수는 가독성을 높이는 목적으로 사용되며, 남발할 경우 코드의 명시성을 해칠 수 있으므로 적절한 상황에서 사용하는 것이 중요합니다. 함수가 단 하나의 인자만 받는..
2024.04.28 -
📌 [Item 11] 가독성을 목표로 설계하라✅ 인식 부하 감소가독성이란 코드를 읽고 얼마나 빠르게 이해할 수 있는지를 의미합니다. 사람에 따라 가독성에 대한 관점은 다르지만, 뇌가 프로그램의 작동 방식을 이해하는 과정을 더 짧게 만드는것을 가독성이 좋은 코드라고 말할 수 있습니다.숙력된 개발자만을 위한 코드는 좋은 코드가 아니다.일반적이지 않고 ‘굉장히 창의적인’ 구조는 유연하지 않고, 지원도 제대로 받지 못한다. ✅ 극단적이 되지 않기let과 같이 잘 모르고 사용하면, 예상하지 못한 결과가 나올 수 있습니다. 누군가는 let을 절대로 사용하지 말라고 합니다. 그러나 let을 적제 적소에 잘 사용한다면 더 좋은 코드를 만들 수 있습니다. 📌 [Item 12] 연산자 오버로드를 할 때는 의미에 맞게 ..
[Effective Kotlin] 2장 가독성 : Item 11번 ~14번📌 [Item 11] 가독성을 목표로 설계하라✅ 인식 부하 감소가독성이란 코드를 읽고 얼마나 빠르게 이해할 수 있는지를 의미합니다. 사람에 따라 가독성에 대한 관점은 다르지만, 뇌가 프로그램의 작동 방식을 이해하는 과정을 더 짧게 만드는것을 가독성이 좋은 코드라고 말할 수 있습니다.숙력된 개발자만을 위한 코드는 좋은 코드가 아니다.일반적이지 않고 ‘굉장히 창의적인’ 구조는 유연하지 않고, 지원도 제대로 받지 못한다. ✅ 극단적이 되지 않기let과 같이 잘 모르고 사용하면, 예상하지 못한 결과가 나올 수 있습니다. 누군가는 let을 절대로 사용하지 말라고 합니다. 그러나 let을 적제 적소에 잘 사용한다면 더 좋은 코드를 만들 수 있습니다. 📌 [Item 12] 연산자 오버로드를 할 때는 의미에 맞게 ..
2024.04.28 -
📌 [Item 6] 사용자 정의 오류보다는 표준 오류를 사용하라제목 처럼 사용자 정의 오류를 사용하기 보단, 가능한 표준 라이브러리를 사용하는 것이 좋다. ✅ 표준 라이브러리를 권장하는 이유많은 개발자들이 더 쉽고 빠르게 이해할 수 있다. 그러므로 재사용성도 더 좋아집니다. ✅ 표준 라이브러리 예외IllegalArgumentException과 IllegalStateException : require와 check를 사용해 throw 할 수 있는 예외다.IndexOutOfBoundsException : 인덱스 파라미터의 값이 범위를 벗어났을때 나타냅니다. 보통 ArrayList.get(Int)를 사용할 때 throw 된다.ConcurrentModificationException : 동시 수정을 금지했는데..
[Effective Kotlin] 1장 안전성 : Item 6번 ~ 10번📌 [Item 6] 사용자 정의 오류보다는 표준 오류를 사용하라제목 처럼 사용자 정의 오류를 사용하기 보단, 가능한 표준 라이브러리를 사용하는 것이 좋다. ✅ 표준 라이브러리를 권장하는 이유많은 개발자들이 더 쉽고 빠르게 이해할 수 있다. 그러므로 재사용성도 더 좋아집니다. ✅ 표준 라이브러리 예외IllegalArgumentException과 IllegalStateException : require와 check를 사용해 throw 할 수 있는 예외다.IndexOutOfBoundsException : 인덱스 파라미터의 값이 범위를 벗어났을때 나타냅니다. 보통 ArrayList.get(Int)를 사용할 때 throw 된다.ConcurrentModificationException : 동시 수정을 금지했는데..
2024.04.28 -
📌 [Item 1] 가변성을 제한하라✅ var 보다는 val을 사용하여 가변성을 줄이자!var읽고 쓰기가 모두 가능한 프로퍼티val읽기 전용 프로퍼티지만, 변경할 수 없음을 의미하는 것은 아니다.완전 불변이 필요하다면 final 프로퍼티를 사용하는 것이 좋다.✅ val & 스마트 캐스트타입 캐스트가 불가능한 경우 val name: String? = "dong" val surname: String = "hyeok" val fullName: String? get( ) = name?.let{ "$it $surname"} fun main() { // 타입 캐스트가 불가능하기 때문에 fullName!!...
[Effective Kotlin] 1장 안전성 : Item 1번 ~ 5번📌 [Item 1] 가변성을 제한하라✅ var 보다는 val을 사용하여 가변성을 줄이자!var읽고 쓰기가 모두 가능한 프로퍼티val읽기 전용 프로퍼티지만, 변경할 수 없음을 의미하는 것은 아니다.완전 불변이 필요하다면 final 프로퍼티를 사용하는 것이 좋다.✅ val & 스마트 캐스트타입 캐스트가 불가능한 경우 val name: String? = "dong" val surname: String = "hyeok" val fullName: String? get( ) = name?.let{ "$it $surname"} fun main() { // 타입 캐스트가 불가능하기 때문에 fullName!!...
2024.04.23 -
알고리즘의 시간복잡도는 프로그램의 입력값과 연산 수행 시간의 상관관계를 나타내는 척도이다. 알고리즘의 시간복잡도는 주로 빅-오 표기법을 사용하여 나타내며, 이 빅-오 표기법은 계수와 낮은 차수의 항을 제외시키는 방법으로 표현할 때, 시간복잡도를 점근적으로 묘사한다고 말한다. ex) 약 크기 n의 모든 입력에 대한 알고리즘에 필요한 시간이 최대 (어떤 n0보다 크지 않은 모든 n에 대하여) 5n^3 + 3n의 식을 가진다면, 이 알고리즘의 점근적 시간 복잡도는 O(n^3)이라고 할 수 있다. List Set Dictionary 참고자료 https://www.ics.uci.edu/~pattis/ICS-33/lectures/complexitypython.txt List와 Set의 탐색 속도 차이 두 방식 모두..
[Python] - List, Set, Dict 시간 복잡도(Big-O)알고리즘의 시간복잡도는 프로그램의 입력값과 연산 수행 시간의 상관관계를 나타내는 척도이다. 알고리즘의 시간복잡도는 주로 빅-오 표기법을 사용하여 나타내며, 이 빅-오 표기법은 계수와 낮은 차수의 항을 제외시키는 방법으로 표현할 때, 시간복잡도를 점근적으로 묘사한다고 말한다. ex) 약 크기 n의 모든 입력에 대한 알고리즘에 필요한 시간이 최대 (어떤 n0보다 크지 않은 모든 n에 대하여) 5n^3 + 3n의 식을 가진다면, 이 알고리즘의 점근적 시간 복잡도는 O(n^3)이라고 할 수 있다. List Set Dictionary 참고자료 https://www.ics.uci.edu/~pattis/ICS-33/lectures/complexitypython.txt List와 Set의 탐색 속도 차이 두 방식 모두..
2022.12.25 -
17269번: 이름궁합 테스트 시윤이는 좋아하는 이성이 생기면 가장 먼저 이름궁합부터 본다. 이름궁합을 보는 방법은 간단하다. 먼저 이름을 알파벳 대문자로 적는다. 각 알파벳 대문자에는 다음과 같이 알파벳을 적는데 www.acmicpc.net N, M = map(int, input().split()) A, B = input().split() alp = [3,2,1,2,4,3,1,3,1,1,3,1,3,2,1,2,2,2,1,2,1,1,1,2,2,1] AB = "" min_str = min(N,M) for i in range(min_str): AB += A[i]+B[i] AB+=A[min_str:]+B[min_str:] num_lst=[alp[ord(i)-ord('A')] for i in AB] for i i..
[백준] 17269 - 이름궁합 테스트 (python)17269번: 이름궁합 테스트 시윤이는 좋아하는 이성이 생기면 가장 먼저 이름궁합부터 본다. 이름궁합을 보는 방법은 간단하다. 먼저 이름을 알파벳 대문자로 적는다. 각 알파벳 대문자에는 다음과 같이 알파벳을 적는데 www.acmicpc.net N, M = map(int, input().split()) A, B = input().split() alp = [3,2,1,2,4,3,1,3,1,1,3,1,3,2,1,2,2,2,1,2,1,1,1,2,2,1] AB = "" min_str = min(N,M) for i in range(min_str): AB += A[i]+B[i] AB+=A[min_str:]+B[min_str:] num_lst=[alp[ord(i)-ord('A')] for i in AB] for i i..
2022.06.19 -
10539번: 수빈이와 수열 수빈이는 심심해서 수열을 가지고 놀고 있다. 먼저, 정수 수열 A를 쓴다. 그리고 그 아래에 정수 수열 A의 해당 항까지의 평균값을 그 항으로 하는 정수 수열 B를 쓴다. 예를 들어, 수열 A가 1, 3, www.acmicpc.net N, lst = input(),list(map(int,input().split())) res =[lst[0]] for i in range(1,int(N)): res.append(lst[i]*(i+1)-sum(res)) for i in res: print(i, end=' ') Tip) end = ' ' 옵션을 사용하여 한 줄에 결과가 공백을 사이에 두고 출력하도록 했습니다.
[백준] 10539 - 수빈이와 수열 (python)10539번: 수빈이와 수열 수빈이는 심심해서 수열을 가지고 놀고 있다. 먼저, 정수 수열 A를 쓴다. 그리고 그 아래에 정수 수열 A의 해당 항까지의 평균값을 그 항으로 하는 정수 수열 B를 쓴다. 예를 들어, 수열 A가 1, 3, www.acmicpc.net N, lst = input(),list(map(int,input().split())) res =[lst[0]] for i in range(1,int(N)): res.append(lst[i]*(i+1)-sum(res)) for i in res: print(i, end=' ') Tip) end = ' ' 옵션을 사용하여 한 줄에 결과가 공백을 사이에 두고 출력하도록 했습니다.
2022.06.19 -
15969번: 행복 모든 서브태스크에서 2 ≤ N ≤ 1,000이고 입력되는 학생들의 점수는 0 이상 1,000 이하의 정수이다. www.acmicpc.net N, lst = input(),list(map(int,input().split())) print(max(lst)-min(lst))
[백준] 15969 - 행복 (python)15969번: 행복 모든 서브태스크에서 2 ≤ N ≤ 1,000이고 입력되는 학생들의 점수는 0 이상 1,000 이하의 정수이다. www.acmicpc.net N, lst = input(),list(map(int,input().split())) print(max(lst)-min(lst))
2022.06.19