본문 바로가기

전체 글231

[BaekJoon][Kotlin] 1236번 - 성 지키기 https://www.acmicpc.net/problem/1236문제영식이는 직사각형 모양의 성을 가지고 있다. 성의 1층은 몇 명의 경비원에 의해서 보호되고 있다. 영식이는 모든 행과 모든 열에 한 명 이상의 경비원이 있으면 좋겠다고 생각했다.성의 크기와 경비원이 어디있는지 주어졌을 때, 몇 명의 경비원을 최소로 추가해야 영식이를 만족시키는지 구하는 프로그램을 작성하시오.입력첫째 줄에 성의 세로 크기 N과 가로 크기 M이 주어진다. N과 M은 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 성의 상태가 주어진다. 성의 상태는 .은 빈칸, X는 경비원이 있는 칸이다.출력첫째 줄에 추가해야 하는 경비원의 최솟값을 출력한다.예제 입력 1 복사4 4................예제 출력 1 복사4.. 2024. 12. 9.
[Kotlin] 객체 선언(Object Declaration) , 동반 객체(Companion Object) 코틀린 클래스 안에는 정적인 멤버가 없다. 자바 static 키워드를 지원하지 않는다.그 대신 코틀린에서는 패키지 수준의 최상위 함수와 객체 선언을 활용한다.대부분의 경우 최상위 함수를 활용하는 편을 더 권장한다. 그러나 최상위 함수는 특정 클래스의 private 멤버에 접근할 수 없기 때문에, 클래스 내부에 정의된 static 멤버가 다른 클래스 멤버와 상호작용해야 하는 경우에는 적합하지 않다.static 을 최상위 함수로 대체할 수 없는 경우에는 object 를 고려한다. 객체 선언(Object Declaration) : 싱글톤클래스 선언과 그 클래스에 속한 단일 인스턴스의 생성을 동시에 처리해주기 때문에, 싱글톤에 사용하기 적합하다.클래스 전체가 하나의 싱글톤 객체로 선언되고, 처음 사용될 때까지 .. 2024. 12. 9.
[Kotlin] 범위 지정 함수(Scope function) Scope function객체의 이름을 사용하지 않고, 객체에 접근이 가능하게 하는 함수특정 객체에 대한 작업을 블록 안에 넣어 실행할 수 있도록 하는 함수 (feat. kotlinworld)FunctionObject referenceReturn valueIs extension functionletitLambda resultYesrunthisLambda resultYesrun-Lambda resultNo: called without the context objectwiththisLambda resultNo: takes the context object as an argumentapplythisObject referenceYesalsoitObject referenceYes it람다식 내부에서 사용되는 암시.. 2024. 12. 9.
[Kotlin] 타입 연산자(is, as), 널 처리 연산자 타입여러 종류의 데이터를 식별하는 분류로, 어떤 값이 가능한지와 그 타입에 대해 수행할 수 있는 연산의 종류를 결정한다. 타입 체크is와 !is 연산자를 사용하여 런타임에 객체가 주어진 타입인지 확인할 수 있다.스마트 캐스트(Smart Cast) : 컴파일러가 불변 값에 대해 is 검사를 추적하여 필요할 때 자동으로 (안전하게) 캐스팅을 수행하는 기능 타입 캐스팅as 연산자를 사용하여 데이터 타입을 다른 데이터 타입으로 변환할 수 있다.캐스팅은 주로 상속 관계에 있는 클래스들 간에 사용된다.상위 클래스의 객체를 하위 클래스 타입으로 변환하거나, 하위 클래스의 객체를 상위 클래스 타입으로 변환하는 데 활용된다. 업캐스팅하위 클래스의 인스턴스를 상위 클래스 타입으로 변환하는 것항상 안전하며, 명시적으로 캐스.. 2024. 12. 8.
[Kotlin] Kotlin 이란 Kotlin자바 플랫폼에서 돌아가는 새로운 프로그래밍 언어간결하고 실용적이며, 자바 코드와의 *상호운용성을 중시한다.상호운용성 : 하나의 시스템이 동일 또는 이기종의 다른 시스템과 아무런 제약이 없이 서로 호환되어 사용할 수 있는 성질목적 : 현재 자바가 사용되고 있는 모든 용도에 적합하면서도 더 간결하고 생산적이며 안전한 대체 언어를 제공하는 것자바와 마찬가지로 코틀린도 정적 타입 지정 언어다.널이 될 수 있는 타입을 지원함에 따라 *컴파일 시점에 널 포인터 예외(NullPointerException)가 발생할 수 있는지 여부를 검사할 수 있어서 좀 더 프로그램의 신뢰성을 높일 수 있다.컴파일 시점(Compile Time) : 사람이 읽을 수 있는 형태의 소스 코드를 컴퓨터가 읽을 수 있는 형태의 기계.. 2024. 12. 8.
[Kotlin] 객체 지향 프로그래밍(Object-Oriented Programming) 프로그래밍 방식1. 명령형 프로그래밍(Imperative Programming, IP)프로그래밍의 상태와 상태를 변경하는 구문의 관점에서 연산을 설명하는 방식무엇(What)을 ‘어떻게(How)’ 할 것인지에 집중한다.1-1. 절차지향 프로그래밍(Procedural Programming, PP) : 문제를 순차적으로 처리하여 프로그램을 만드는 방식 (C, C++)절차지향 프로그래밍은 함수를 구조화할 뿐 데이터 자체를 구조화하지 못하기 때문에, 소프트웨어의 규모가 커지거나 변화가 생기면 각각의 함수에 의존하는 부분을 매번 고쳐야 하는 등 작업이 복잡해져 스파게티 코드를 유지보수하는 데 어려움을 겪는다.1-2. 객체지향 프로그래밍(Object-Oriented Programming, OOP) : 객체들 간의 상.. 2024. 12. 8.
[CS] 응집도(Cohesion)와 결합도(Coupling) 모듈(Module)크기와 상관없이 클래스나 패키지, 라이브러리 등 프로그램을 구성하는 임의의 요소프로그램을 구성하는 시스템을 기능 단위로 독립적인 부분으로 분리한 것단순히 규모가 큰 것을 작게 여러 개로 나눈 조각이 아니라, 하나 이상의 논리적인 기능을 수행하기 위한 명령어들의 집합 응집도(Cohesion)모듈에 포함된 내부 요소들이 하나의 책임/ 목적을 위해 연결되어 있는 연관된 정도응집도가 높으면, 변경 대상과 범위가 명확해지는 장점이 있어서 코드를 수정하기 쉬워진다.높은 응집도 : A 모듈 안에 a 라는 기능을 위해 모여있고 긴밀하게 연결되어 협력하고 있다.낮은 응집도 : A 모듈이 아닌 곳에 a 기능들이 흩어져 있다던가 또는 A 모듈에 a 기능 외에 b, c, d 기능들도 섞여서 복잡하게 구현되어.. 2024. 12. 8.