일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 스택 자바 코드
- android retrofit login
- 2022 플러터 설치
- 멤버변수
- 서비스 vs 쓰레드
- rxjava hot observable
- 안드로이드 레트로핏 사용법
- 객체
- 안드로이드 유닛테스트란
- 스택 큐 차이
- 안드로이드 유닛 테스트
- 큐 자바 코드
- 자바 다형성
- jvm 작동 원리
- 안드로이드 유닛 테스트 예시
- rxjava disposable
- 서비스 쓰레드 차이
- Rxjava Observable
- ANR이란
- 안드로이드 라이선스 종류
- 안드로이드 os 구조
- 플러터 설치 2022
- 안드로이드 라이선스
- 안드로이드 레트로핏 crud
- ar vr 차이
- 2022 플러터 안드로이드 스튜디오
- 클래스
- android ar 개발
- rxjava cold observable
- jvm이란
- Today
- Total
목록알고리즘 문제 풀이/백준 (30)
나만을 위한 블로그

시간과 분이 입력으로 주어지면 그 시간에서 45분 이전의 시간을 구해야 한다.우리가 시간을 계산할 때 어떻게 계산하는지를 생각해 본다. 10시 10분에서 45분 이전의 시간이 뭔지 질문받으면 분침을 뒤로 돌리는 상상을 하는 대신, 어떤 순서로 시간을 계산할까?먼저 10에서 45를 뺀다. 그러면 -35라는 음수가 나오는데, 음수인 시간은 존재하지 않기 때문에 앞에 있는 시간에서 60분을 가져온다.즉 10에서 1시간(60분)을 가져와서 -35에 더해 분을 구한다. 시간은 10 - 1 = 9가 되고, 결과적으로 9시 25분이라는 시간을 얻는다.그리고 2번째 입출력 예시를 보면 입력이 0시 30분인 경우 출력이 23시 45분이라 이 예외처리도 해야 한다. fun main() { var (hour, min)..

입력받은 문자열에 toInt()를 걸면 바로 아스키 값을 얻을 수 있다.이 때 주의할 것은 readln() 뒤에 반드시 first()를 붙여야 한다. 그렇지 않으면 for input string 에러가 발생하면서 아스키 값을 구할 수 없다. fun main() { val target = readln().first() println(target.toInt())} 또는 code 프로퍼티를 사용해서도 같은 값을 구할 수 있다. fun main() { val target = readln().first() println(target.code)} toInt()가 deprecated되어서 대안으로 쓸 수 있으니 편한 걸 사용하면 되겠다.

주어진 문자열에서 각 알파벳들의 등장 위치를 구하는 문제인데 아스키 값을 사용하면 쉽게 풀 수 있다.알파벳 문자들은 컴퓨터 내부에서 숫자로 표현된다. 이 숫자가 아스키 값(ascii value)이라 불리는데, 위치를 구하고자 하는 알파벳에서 'a'를 빼면 그 알파벳의 위치를 알 수 있다. 이를 정수 배열에 적용하면 이 문제와 같이 알파벳 위치 별 등장 여부를 확인하거나, 등장 횟수를 카운트할 때 활용할 수 있다. fun main() { val word = readln() val positions = IntArray(26) { -1 } for (i in word.indices) { val char = word[i] val alphabetIndex = char - '..

입력받은 1~8까지의 숫자가 오름차순인지 내림차순인지, 아니면 둘 중 어디에도 해당하지 않는지 확인해서 각 경우 별 문자열을 출력한다면 풀 수 있긴 하다. fun main() { val num = readln().split(" ").map { it.toInt() } val ascendingList = mutableListOf() for (i in 1 .. 8) { ascendingList.add(i) } val descendingList = mutableListOf() for (i in 8 downTo 1) { descendingList.add(i) } when (num) { ascendingList -> println("a..

입력받은 2가지 숫자를 24시간 표현에 맞게 고쳐서 출력하면 된다. fun main() { var (hour, min) = readln().split(" ").map { it.toInt() } min -= 45 if (min 입력받은 숫자 중 첫 번째가 시, 두 번째가 분이라고 생각한다. 이 때 45분 이른 시간을 구해야 하기 때문에 min에서 45를 뺀다.이 때 min이 음수가 될 수 있다. 10을 입력받은 경우 10 - 45 = -35기 때문에 이 음수를 양수로 보정하는 처리가 필요하다.우리가 시간을 계산할 때 계산 과정을 생각해 보자. 10시 10분에서 45분 빠른 시간을 구한다면 우선 10에서 1을 빼고, 그 후 10에서 45를 뺀 다음 60을 더한다. 10 - 45 + 60이 ..

먼저 장황하게 풀면 아래와 같다. fun main() { val list = arrayListOf() repeat(3) { list.add(readln().toInt()) } val reduceNum = list.reduce { acc, i -> acc * i } val intArr = Array(10) { 0 } reduceNum.toString().mapIndexed { index: Int, c: Char -> when (c) { '0' -> intArr[0] += 1 '1' -> intArr[1] += 1 '2' -> intArr[2] += 1 '3' -> intA..

입력받은 9개의 숫자를 담아둘 공간이 필요하니 정수 리스트가 하나 필요하다. 그리고 readln()을 9번 실행해야 하니 9번 반복해서 실행하고, 숫자를 리스트에 담으면 9개의 숫자가 리스트에 모두 들어갈 것이다.그럼 그 중에서 최대값인 원소와 그 원소의 인덱스를 찾아서 출력하면 된다. fun main() { val list = arrayListOf() repeat(9) { list.add(readln().toInt()) } val max = list.max() val index = list.indexOf(max) + 1 println("$max $index")} 코틀린에서 반복할 때 사용하는 키워드는 대표적으로 for, while이 있지만 repeat라는 함..

문제에서 말하는 대로 코드를 짜면 아래와 같다. fun main() { val nums = readln().split(" ").map { it.toInt() } var answer = 0 nums.forEachIndexed { index, i -> answer += i * i } println(answer % 10)}

1000번 문제를 풀었다면 이 문제도 풀 수 있다.숫자 2개를 입력받고 비교해서 조건에 맞는 기호를 출력하면 된다. fun main() { val (A, B) = readln().split(" ").map { it.toInt() } when { A println(" B -> println(">") A == B -> println("==") }} "=="를 출력하는 조건은 else로 바꿔도 된다. fun main() { val (A, B) = readln().split(" ").map { it.toInt() } when { A println(" B -> println(">") else -> println("==") }}

앞뒤에 공백이 있을 수 있으니 trim()으로 전체 문자열 양 옆의 공백을 제거하고, split()으로 나눈다.그러나 split() 후 결과를 그대로 출력하는 코드를 제출하면 84% 이후에서 틀렸다고 표시된다. fun main() { val a = readln().trim().split(" ") print(a.size)} 정규식을 써도 동일하다. fun main() { val a = readln().trim().split("\\s+".toRegex()) print(a.size)} 아래와 같이 제출해야 정답으로 인정된다. fun main() { val a = readln().trim().split("\\s+".toRegex()).filter { it != "" } print..