숫자를 올림해서 나타낸다
Double 타입의 인자를 받아, 그 값을 올림한 결과를 Double 타입으로 반환한다
import kotlin.math.ceil
fun main() {
val num1 = 1.2
val num2 = 3.7
val num3 = 5.0
println(ceil(num1)) // 출력: 2.0
println(ceil(num2)) // 출력: 4.0
println(ceil(num3)) // 출력: 5.0
}
offer() 함수는 코틀린의 코루틴 라이브러리에서 제공하는 함수로, Channel 이라는 특별한 형태의 데이터 구조에 값을 추가하는 데 사용한다
Channel은 코루틴 간에 데이터를 안전하게 전달하는 데 사용되는 구조
Channel에 값을 추가하려 할 때 사용되며, Channel이 가득 찼거나 닫혔을 경우에는 실패하고 false를 반환한다
값이 성공적으로 추가되었다면 true를 반환한다
import kotlinx.coroutines.*
import kotlinx.coroutines.channels.*
fun main() = runBlocking {
val channel = Channel<Int>(3) // 용량이 3인 Channel 생성
val sender = launch {
repeat(10) {
println("Sending $it") // 데이터 전송을 시도하고 결과를 출력
if (channel.offer(it)) {
println("Sent $it")
} else {
println("Failed to send $it")
}
}
}
delay(1000) // 1초 동안 코루틴을 중지
sender.cancel() // sender 코루틴을 취소
}
channel.offer(it)를 통해 Channel에 값을 추가하려고 시도하며, 값이 성공적으로 추가되었는지 여부에 따라 다른 메시지를 출력한다
그 외에도 offer() 함수는 주로 큐(Queue) 또는 데크(Deque)와 같은 컬렉션에서 사용하며, 주어진 요소를 컬렉션의 끝에 추가하는 역할을 한다
offer(E e) 형태로, 특정 요소를 큐의 끝에 추가한다
추가에 성공하면 true를 반환하고, 실패하면 false를 반환한다
add() 메소드와 유사하나, add() 메소드는 큐의 용량이 가득 찼을 때 예외를 발생시키는 반면, offer() 메소드는 false를 반환하여 실패를 안전하게 처리한다
import java.util.LinkedList
class Solution {
fun solution(priorities: IntArray, location: Int): Int {
val que = LinkedList<Pair<Int, Int>>()
priorities.forEachIndexed { i, v -> que.offer(Pair(i, v)) }
var order = 0
while (true) {
val current = que.poll()
if (que.any { it.second > current.second }) que.offer(current)
else if (current.first == location) return ++order
else order++
}
}
}
여기서 offer는 linkedList에 값을 마지막에 추가하는데 쓴다
add와의 차이 점은 추가에 실패하면 add는 예외를 발생시키지만 offer는 false를 반환해 안정성이 더 높다
poll() 함수는 주로 큐(Queue) 또는 데크(Deque)와 같은 컬렉션에서 사용되며, 컬렉션의 첫 번째 요소를 제거하고 그 요소를 반환한다
큐가 비어 있을 경우에는 null을 반환한다
remove() 메소드와 유사하나, remove() 메소드는 큐가 비어 있을 때 예외를 발생시키는 반면, poll() 메소드는 null을 반환하여 실패를 안전하게 처리한다
import java.util.*;
public class Main {
public static void main(String[] args) {
Queue<Integer> queue = new LinkedList<>();
queue.offer(1);
queue.offer(2);
queue.offer(3);
System.out.println(queue.poll()); // 출력: 1
System.out.println(queue.poll()); // 출력: 2
System.out.println(queue.poll()); // 출력: 3
System.out.println(queue.poll()); // 출력: null (큐가 비어 있으므로 null 반환)
}
}