Developing Myself Everyday
article thumbnail
자물쇠와 열쇠 - Kotlin

프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 고고학자인 "튜브"는 고대 유적지에서 보물과 유적이 가득할 것으로 추정되는 비밀의 문을 발견하였습니다. 그런데 문을 열려고 살펴보니 특이한 형태의 자물쇠로 잠겨 있었고 문 앞에는 특이한 형태의 열쇠와 함께 자물쇠를 푸는 방법에 대해 다음과 같이 설명해 주는 종이가 발견되었습니다. 잠겨있는 자물쇠는 격자 한 칸의 크기가 1 x 1인 N x N 크기의 정사각 격자 형태이고 특이한 모양의 열쇠는 M x M 크기인 정사각 격자 형태로 되어 있습니다. 자물쇠에는 홈이 파여 있고 열쇠 또한 홈과 돌기 부분이 ..

article thumbnail
Scope Function (범위 지정 함수) with let, run, with, apply, also
Android/Kotlin 2023. 6. 30. 12:59

📚 범위 지정 함수란? Kotlin의 표준 라이브러리에는 개체의 컨텍스트 내에서 코드 블록을 실행하는 것이 목적인 여러 범위 지정 함수들이 있다. 람다 식이 있는 개체에서 이러한 함수를 호출하면 임시 범위가 형성되고 이런 범위에서는 이름 없이 객체에 액세스할 수 있다. 이러한 범위 함수의 종류로는 let, run, with, apply, also의 다섯 가지가 있다. 기본적으로 범위 함수들은 동일한 목적을 가지고 작업을 수행한다. 다른 점은 이 개체가 블록 내에서 사용 가능하게 되는 방식이 전체 표현식의 결과이다. 이런 이유로 하나의 범위 함수를 고르는 것은 힘든 일이다. 이제부터 범위 기능과 해당 규칙의 차이점에 대한 자세한 설명을 제공하겠다. 범위 함수 요약 위의 테이블은 범위 함수의 차이점들을 나타..

article thumbnail
Singleton Pattern(싱글턴 패턴) by Java, Kotlin

싱글턴 패턴이란? 싱글턴 패턴은 객체지향 프로그래밍에서 사용되는 디자인 패턴 중 하나로, 애플리케이션에서 특정 클래스의 인스턴스가 단 하나만 생성되도록 보장하는 패턴이다. 즉, 해당 클래스의 인스턴스가 오직 하나뿐이며, 어디서든지 그 인스턴스에 접근하여 사용할 수 있도록 만들어 준다. 싱글턴 패턴을 사용하는 이유는 다음과 같다. 자원 공유: 여러 객체에서 하나의 인스턴스를 공유하여 사용할 수 있다. 이를 통해 자원을 효율적으로 사용할 수 있다. 객체의 생성 비용 최소화: 인스턴스가 한 번 생성된 이후에는 다시 생성하지 않기 때문에, 객체 생성 비용이 큰 경우에 사용하면 효율적이다. 인스턴스의 수 제한: 클래스의 인스턴스가 하나뿐이기 때문에, 불필요한 인스턴스 생성을 방지할 수 있다. 싱글톤 패턴을 구현하..

article thumbnail
Generics (제네릭)
Android/Kotlin 2023. 6. 29. 11:26

제네릭이란? 제네릭은 클래스, 인터페이스, 메서드에서 사용될 수 있으며, 타입 매개변수를 통해 일반적인 데이터 타입 대신 실제 타입을 지정할 수 있다. 이를 통해 코드를 보다 일반화할 수 있고, 재사용성을 높일 수 있다. T 일반적으로 사용되는 타입 매개변수 E 요소(Element)의 타입을 나타내는 매개변수. 주로 컬렉션(Collection)에서 사용 K 맵(Map)에서 키(Key)의 타입을 나타내는 매개변수 V 맵(Map)에서 값(Value)의 타입을 나타내는 매개변수 N 숫자(Number) 타입을 나타내는 매개변수 R 반환(Return) 타입을 나타내는 매개변수입 S, U, V 등 여러 개의 타입 매개변수가 필요한 경우, 추가적으로 사용될 수 있는 일반적인 알파벳 제네릭을 사용하지 않았을 경우 우리..

article thumbnail
PCB (Process Control Block, 프로세스 제어 블록)

PCB란? PCB는 운영 체제에서 프로세스를 관리(Process Management) 하기 위해 사용되는 데이터 구조이다. 운영체제는 하드웨어 자원을 관리하고 프로그램들을 지원해주는 역할을 한다. 커널은 이 운영체제의 핵심으로 프로그램과 하드웨어의 중간다리 역할을 한다. 위의 그림을 보게 되면 커널에는 Data Structure for Hardware(하드웨어의 데이터 구조)와 PCB가 있는 것을 알 수 있다. 그리고 프로세스와 하드웨어를 관리하기 위한 데이터가 담겨있는 이런 데이터 구조체를 통틀어 metadata(메타데이터)라고 부른다. PCB는 각 프로세스에 대해 운영 체제가 생성하고 유지하며, 해당 프로세스에 대한 정보를 저장한다. PCB가 가지는 정보 PCB가 가지는 정보는 아래와 같다. PCB를..

article thumbnail
JVM과 커널의 동작
Android/Java 2023. 6. 26. 15:31

🏴 커널이란? 운영체제에 공부를 하다보면 커널이라는 것을 접하게 된다 커널을 간단하게 설명하자면 운영체제의 메모리에 상주해 있는 프로그램이라고 할 수 있다. 커널은 응응 프로그램들이 자원에 접근할 때 사용되는데, 이 때 위의 그림과 같은 과정을 거치게 된다. 쉘이란 이런 프로그램들이 메모리에 로딩되고 언제 메모리에서 해제되는지 관리해주는 프로그램이다. 다만 쉘이 직접 메모리에 관여한다면 여러 프로그램들이 꼬이게 되어 엉뚱한 곳에 데이터를 읽거나 쓰는 상황이 발생할 수 있다. 그래서 쉘은 I/O를 할 때 커널에게 요청을 하고 커널은 이를 받아드려 해당하는 I/O를 대신 진행해준다. 이런 요청을 System Call (시스템 콜)이라고 한다. 이 때 사용되는 것이 위의 그램에 존재하는 mode bit 이다...

가장 긴 팰린드롬 - Kotlin

프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 앞뒤를 뒤집어도 똑같은 문자열을 팰린드롬(palindrome)이라고 합니다. 문자열 s가 주어질 때, s의 부분문자열(Substring)중 가장 긴 팰린드롬의 길이를 return 하는 solution 함수를 완성해 주세요. 예를들면, 문자열 s가 "abcdcba"이면 7을 return하고 "abacde"이면 3을 return합니다. 제한사항 문자열 s의 길이 : 2,500 이하의 자연수 문자열 s는 알파벳 소문자로만 구성 나의 풀이 이 문제에서 주어진 문자열의 길이가 2500으로 비교적 짧은 길이이..

입국 심사 - Kotlin (이분 탐색)

프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 n명이 입국심사를 위해 줄을 서서 기다리고 있습니다. 각 입국심사대에 있는 심사관마다 심사하는데 걸리는 시간은 다릅니다. 처음에 모든 심사대는 비어있습니다. 한 심사대에서는 동시에 한 명만 심사를 할 수 있습니다. 가장 앞에 서 있는 사람은 비어 있는 심사대로 가서 심사를 받을 수 있습니다. 하지만 더 빨리 끝나는 심사대가 있으면 기다렸다가 그곳으로 가서 심사를 받을 수도 있습니다. 모든 사람이 심사를 받는데 걸리는 시간을 최소로 하고 싶습니다. 입국심사를 기다리는 사람 수 n, 각 심사관이 한 명..