티스토리 뷰
코드카타
가운데 글자 가져오기
문제
정답
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에 대해 중괄호 내에 정의된 계산식를 적용한다.
안드로이드 개발환경 세팅
안드로이드 스튜디오 다운
여기 들어가서 안드로이드 스튜디오 다운
프로젝트 생성
설치한 안드로이드 스튜디오 실행하고 'New Project' 위 아이콘 클릭
Empty Views Activity 선택 > Next 버튼
설정 > 휴대전화 정보 > 소프트웨어 정보로 들어가서
안드로이드 버전 몇을 사용 중인지 확인해준다.
내 폰은 13버전을 사용중인 걸 확인할 수 있다.
이름은 프로젝트 주제에 맞게 정해주면 되고 패키지 네임은 이름을 입력하면 자동으로 입력된다.
나같은 경우는 폴더를 찾기 쉽도록 저장위치를 바탕화면으로 설정해줬다.
API 레벨은 내 폰의 안드로이드 버전에 맞게 설정해주고 Finish 버튼을 눌러 프로젝트를 생성한다.
실행하기
이거 따라서 쭉 따라해주면 된다.
위의 과정을 마치고 버전설정을 제데로 했다면 이렇게 휴대폰에서 실행가능하다고 뜰 것이다.
기기선택 드롭다운 버튼 옆 재생 버튼을 누르거나
Run > Run 'app'을 누르거나 Shift + F10을 눌러서 디버깅을 할 수 있다.
실행오류 해결
이러고 실행시키면 API레벨을 최소 34이상으로 업데이트 하라고 오류가 뜬다.
build.gradel.kts파일을 연다.
compileSdk = 33 으로 되어있는걸 34로 바꾸고
Sync Now를 눌러서 변경사항을 적용시킨 후 다시 실행시키면 오류가 해결된다.
안녕하세요 출력하기
activity_main.xml 파일에서 앱의 레이아웃을 변경할 수 있다.
화면 배치를 스플릿으로 선택하면 코드작성화면은 좌측에 미리보기 화면은 우측에 배치해준다.
그리고 저 스택 모양 아이콘을 눌러서 Design을 선택해주면 흰화면 하나만 볼 수 있다.
글자 내용을 '안녕하세요'로 바꿔준다.
해당 아이콘을 누르면 변경사항이 디바이스(애뮬레이터)에 반영이 된다.
'내일배움캠프 > Android 사전캠프' 카테고리의 다른 글
사전캠프 TIL 8일차 (직사각형 별찍기, 최대공약수와 최대공배수 - Kotlin) (1) | 2024.05.02 |
---|---|
사전캠프 TIL 7일차 (BMI 계산기 UI 구현) (1) | 2024.05.01 |
사전캠프 TIL 5일차 (음양 더하기, 핸드폰 번호 가리기, 없는 숫자 더하기, 제일 작은 수 제거하기 - Kotlin) (0) | 2024.04.29 |
사전캠프 TIL 4일차 (하샤드 수, 두 정수 사이의 합, 콜라츠 추측, 서울에서 김서방 찾기, 나누어 떨어지는 숫자 배열 - Kotlin) (0) | 2024.04.25 |
사전캠프 TIL 3일차 (안드로이드 확장 라이브러리 알아보기) (0) | 2024.04.24 |