달리기 경주
callings에서 불린 이름들이 한번 나올때마다 순위를 한단계씩 올려준다.
각 배열을 순회해 callings의 요소들을 players와 비교해서 같으면 앞 인덱스의 값과 순서를 바꿔주는 식으로 풀었는데 입력값이 길 경우 시간초과가 나와 오답이 나온다.
찾아보니 Collection Map을 사용해서 풀어야할 것 같아 Map을 좀 더 공부해볼 계획이다.
나의 풀이
class Solution {
fun solution(players: Array<String>, callings: Array<String>): Array<String> {
var answer: Array<String> = arrayOf<String>()
var playersList = players.toMutableList()
for(i in callings.indices){
if(playersList.contains(callings[i])){
for(j in playersList.indices){
if(callings[i] == playersList[j]){
playersList[j] = playersList[j-1]
playersList[j-1] = callings[i]
break
}
}
}
}
return playersList.toTypedArray()
}
}
정답: 68.8 / 100
메소드: 이름이 붙은 로직
기본구조
fun 메소드이름(변수명:자료형, 변수명:자료형 ....) : 반환자료형 {
소스코드 로직
}
함수에서 Unit을 반환하는 것은 반환값이 없음을 의미하며, 주로 부작용(콘솔 출력, 전역 변수 수정, 로깅 등)을 가지는 경우에 사용된다고 한다.
객체지향 프로그래밍 Object Oriented Programming(OOP)
코틀린의 모든것이 클래스형태이므로 객체화할 수 있다.
5대키워드 : 클래스, 추상화, 캡슐화, 상속, 다형성
데이터클래스 - 정보(프로퍼티)만 가지고 있는 클래스 (변수, 상수)
data class 클래스이름 { 정보1 정보2 }
실드(sealed) 클래스 - 상속관련제한 클래스
오브젝트 클래스(object class)
클래스(설계도)를 실체화 할 때 최초로 실행할 로직을 작성, 인스턴스 초기화 메서드
사용
클래스를 한가지 형태로 실체화 할때는 주생성자 여러형태로 실체화 할 때는 보조 생성자
요약: 생성자는 실체화할때 최초로 실행되는 로직이다(인스턴스 초기화 메서드), 프로퍼티를 생성자마다 다르게 생성해야할때 부 생성자(constructor)를 쓴다.
요약: 클래스는 객체의 설계도이며, 클래스에서 생성된 객체가 메모리에 올라가면(실체화되면) 이를 인스턴스라고 한다.
interface 인터페이스이름 {
fun 메소드이름()
}
예를 들어 새를 상속 받을때 새는 보통 헤엄치는 행위가 없는데 오리처럼 물에 사는 새에대해 헤엄을 치는 기능을 넣어줘야한다면 부모 클래스에 추가하지 않고 인터페이스에 추가해준다.