오늘 공부한 내용 정리(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
'♞ | 공부일지 > ♝ | TIL' 카테고리의 다른 글
[Android, 내일배움캠프] 공부일지(2024-05-28) (0) | 2024.05.28 |
---|---|
[Android, 내일배움캠프] 공부일지(2024-05-27) (0) | 2024.05.27 |
[Android, 내일배움캠프] 공부일지(2024-05-17) (0) | 2024.05.17 |
[Android, 내일배움캠프] 공부일지(2024-05-16) (0) | 2024.05.16 |
[Android, 내일배움캠프] 공부일지(2024-05-15) (0) | 2024.05.15 |