본문 바로가기
♞ | 공부일지/♝ | TIL

[Android, 내일배움캠프] 공부일지(2024-05-18)

by immgga 2024. 5. 18.
오늘 공부한 내용 정리(2024년 5월 18일)

 

 

1. 코드카타 문제풀이

A. 직사각형 별 찍기

문제 내용

 

문제 풀이 방법

  • n x m의 별을 찍어서 출력한다.

 

해결 코드(스포 주의)

더보기
fun main(args: Array<String>) {
    val (a, b) = readLine()!!.split(' ').map(String::toInt)
    repeat(b) {
        repeat(a) {
            print("*")
        }
        println()
    }
}

 

풀이 과정

  • 세로 길이(b)를 바깥 repeat()으로, 가로길이를 내부 repeat()으로 구성함.
    가로 별 찍기가 끝날 때마다 줄 바꿈을 해주어야 하기 때문이다.

 

B. x만큼 간격이 있는 n개의 숫자 

문제 내용

 

문제 풀이 방법

  • x의 배수들을 n번만큼 리스트에 넣어서 return.

 

해결 코드(스포 주의)

더보기
fun solution(x: Int, n: Int): LongArray {
    val answer = mutableListOf<Long>()
    repeat(n) {
        answer.add(x.toLong() * (it+1).toLong())
    }

    return answer.toLongArray()
}

 

풀이 과정

  • n번 리스트에 넣어야 하기 때문에 repeat() 사용.
  • answer(mutablelist)에 x와 it+1(it은 0부터 시작하기 때문)의 곱을 넣어 줌.
    그냥 넣는 게 아니고 제한 조건으로 보면 int 범위를 벗어나는 경우가 있을 수 있기 때문에 x와 it + 1 모두 long으로 변환 후 list에 추가.
  • 모두 추가한 리스트를 return.

 

C. 그대로 출력하기(백준)

문제 내용

 

문제 풀이 방법

  • 입력받은 그대로 출력하는 코드를 작성함.
  • 입력이 최대 100줄까지 입력될 수 있음.

 

해결 코드(스포 주의)

더보기
import java.io.BufferedReader
import java.io.InputStreamReader

fun main() = with(BufferedReader(InputStreamReader(System.`in`))) {
    for (i in 0 until 100) {
        val text = readLine() ?: break
        println(text)
    }
}

 

풀이 과정

  • 입력이 최대 100줄까지 이루어질 수 있기에 100번 반복.
  • 100번 반복하게 되면 입력을 100번 받는 거 아닌가??
    이 문제를 풀기 위해서는 파일의 끝(EOF)을 처리하는 방법을 숙지해야 풀 수 있다.
    더 이상 입력받을 것이 없을 때의 처리 방법을 알아야 한다.
  • 코틀린(자바) BufferedReader의 경우에는 readLine()이 null을 return 한다.
    null을 return 하기 때문에 엘비스 연산자(?:)를 사용해 null인 경우 break로 프로그램을 종료할 수 있도록 만들었다.
  • https://www.acmicpc.net/board/view/28332

 


 

728x90