티스토리 뷰

코드카타

 

가운데 글자 가져오기

 

문제

 

 

정답

class Solution {
    fun solution(s: String): String {
        val n = s.length
        if (n % 2 != 0) return s[n / 2].toString();
        return s[n / 2 - 1].toString() + s[n / 2].toString();
    }
}

정수의 나눗셈은 소수점 이하를 버린 결과를 반환한다. (5 / 2 > 2)

 

s[n]의 자료형은 char에 해당하고 solution함수는 String형을 반환하므로 

반환값을 String형으로 다 바꿔줘야 한다.

 

// 짝수 길이의 문자열에서 중간 두 문자 추출
s.substring(n / 2 - 1, n / 2 + 1)

subString을 사용해서 구현하면 좀 더 간결하게 문제를 해결할 수 있다.

 

 

 

수박수박수박수박수박수?

 

문제

 

 

정답

class Solution {
    fun solution(n: Int): String {
        var str: String = ""
        for (i in 1..n) {
            if (i % 2 != 0) str += "수"
            else str += "박"
        }
        return str
    }
}

for문 돌려서 i가 홀수면 "수"를 짝수면 "박"을 str에 더하면 된다.

 

 

 

내적

 

문제

 

 

정답

class Solution {
    fun solution(a: IntArray, b: IntArray): Int {
        var sum: Int = 0
        for (i in 0 until a.size) {
            sum += a[i] * b[i]
        }
        return sum
    }
}

두 배열의 크기는 같으니 (0 ~ 아무배열크기 - 1)만큼 for문 돌려서 문제 풀면 된다.

 

 

 

약수와 개수의 덧셈

 

문제

 

 

정답

class Solution {
    fun countDivisors(n: Int): Int {
        var count = 0
        for (i in 1..n) {
            if (n % i == 0) count += 1
        }
        return count
    }

    fun solution(left: Int, right: Int): Int {
        var res: Int = 0
        for (i in left..right) {
            val n = countDivisors(i)
            if (n % 2 == 0) res += i
            else res -= i
        }
        return res
    }
}

나같은 경우는 n의 약수를 구하는 함수를 따로 만들어서 썼다.

 

class Solution {
    fun solution(left: Int, right: Int): Int {
        return (left..right).map { i -> if ((1..i).filter { i % it == 0 }.size % 2 == 0) i else -i }.sum()
    }
}

다른 풀이를 찾아보니까 이런식으로 숏코딩도 가능하다.

 

여기서 i는 left ~ right 범위에서 현재 처리되고 있는 정수,

it은 i에 대해 1에서 i까지 범위 내에서 약수인지를 확인하는 각 숫자에 해당한다.

 

 

모르는 문법들 정리

fun main() {
    val a = 1
    val b = 3
    print((a..b).map { it }) // [1, 2, 3]
    print((a..b).map { i -> i + 1 }) // [2, 3, 4] 
}

(a..b).map { ... } → a ~ b 범위에 대해 맵 함수를 사용하여 각 요소에 대한 계산을 수행한다.

map { i  -> (계산식) } → 범위 내 각 요소 i에 대해 중괄호 내에 정의된 계산식를 적용한다.

 


 

안드로이드 개발환경 세팅

 

안드로이드 스튜디오 다운

 

Android 스튜디오 및 앱 도구 다운로드 - Android 개발자  |  Android Studio  |  Android Developers

Android Studio provides app builders with an integrated development environment (IDE) optimized for Android apps. Download Android Studio today.

developer.android.com

 

여기 들어가서 안드로이드 스튜디오 다운

 

 

프로젝트 생성

 

설치한 안드로이드 스튜디오 실행하고 'New Project' 위 아이콘 클릭

 

 

 

Empty Views Activity 선택 > Next 버튼

 

 

 

설정 > 휴대전화 정보 > 소프트웨어 정보로 들어가서

안드로이드 버전 몇을 사용 중인지 확인해준다.

 

내 폰은 13버전을 사용중인 걸 확인할 수 있다.

 

 

 

 

이름은 프로젝트 주제에 맞게 정해주면 되고 패키지 네임은 이름을 입력하면 자동으로 입력된다.

 

나같은 경우는 폴더를 찾기 쉽도록 저장위치를 바탕화면으로 설정해줬다.

API 레벨은 내 폰의 안드로이드 버전에 맞게 설정해주고 Finish 버튼을 눌러 프로젝트를 생성한다.

 

 

실행하기

 

게으른 일개미

개미는 오늘도 열심히 일을 하네🐜🐜

cruddbdbdeep.github.io

 

이거 따라서 쭉 따라해주면 된다.

 

 

 

위의 과정을 마치고 버전설정을 제데로 했다면 이렇게 휴대폰에서 실행가능하다고 뜰 것이다.

 

 

 

기기선택 드롭다운 버튼 옆 재생 버튼을 누르거나 

Run > Run 'app'을 누르거나 Shift + F10을 눌러서 디버깅을 할 수 있다.

 

 

실행오류 해결

 

이러고 실행시키면 API레벨을 최소 34이상으로 업데이트 하라고 오류가 뜬다.

 

 

 

build.gradel.kts파일을 연다.

 

 

 

compileSdk = 33 으로 되어있는걸 34로 바꾸고

 

 

 

Sync Now를 눌러서 변경사항을 적용시킨 후 다시 실행시키면 오류가 해결된다.

 

 

안녕하세요 출력하기

 

activity_main.xml 파일에서 앱의 레이아웃을 변경할 수 있다.

 

 

 

화면 배치를 스플릿으로 선택하면 코드작성화면은 좌측에 미리보기 화면은 우측에 배치해준다.

그리고 저 스택 모양 아이콘을 눌러서 Design을 선택해주면 흰화면 하나만 볼 수 있다.

 

 

 

글자 내용을 '안녕하세요'로 바꿔준다.

 

 

 

해당 아이콘을 누르면 변경사항이 디바이스(애뮬레이터)에 반영이 된다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함