inblog logo
|
silver
    알고리즘문제풀기

    [알고리즘문제풀기] 공 던지기

    silver's avatar
    silver
    Jan 19, 2025
    [알고리즘문제풀기] 공 던지기
    Contents
    문제내가 작성한 정답다른 사람들의 정답

    문제

    school.programmers.co.kr
    https://school.programmers.co.kr/learn/courses/30/lessons/120843

    내가 작성한 정답

    class Solution { public int solution(int[] numbers, int k) { return numbers[(2*(k-1))%numbers.length]; } }

    다른 사람들의 정답

    class Solution { public int solution(int[] numbers, int k) { return (k-1)*2 % numbers.length+1; } }

    Queue 이용

    import java.util.*; class Solution { public int solution(int[] numbers, int k) { int answer = 0; Queue<Integer> queue = new LinkedList<>(); for(int num : numbers) queue.add(num); int cnt = 1; // queue.poll()은 큐의 맨 앞 요소를 제거하고 반환. // queue.add(queue.poll())는 이 요소를 큐의 맨 뒤로 이동시킴. // 두 번의 poll()을 통해 두 개의 요소를 큐의 뒤로 이동시키고, cnt를 증가시킨다. while(cnt!=k){ queue.add(queue.poll()); queue.add(queue.poll()); cnt++; } answer = queue.poll(); return answer; } }
     
    💡

    Queue

    Java에서 Queue 인터페이스는 Java Collections Framework의 일부로, 큐 데이터 구조를 구현하는 데 사용된다. Queue는 FIFO(First In, First Out) 원칙을 따르며, 다양한 큐 구현체가 제공된다. 가장 일반적으로 사용되는 구현체는 LinkedList, ArrayDeque, PriorityQueue 등이다.
    1. Queue 인터페이스의 주요 메서드
        • add(E e): 큐의 맨 뒤에 요소를 추가한다. 큐가 가득 차면 IllegalStateException을 발생시킨다.
        • offer(E e): 큐의 맨 뒤에 요소를 추가한다. 큐가 가득 차면 false를 반환한다.
        • remove(): 큐의 맨 앞 요소를 제거하고 반환한다. 큐가 비어 있다면 NoSuchElementException을 발생시킨다.
        • poll(): 큐의 맨 앞 요소를 제거하고 반환합니다. 큐가 비어 있으면 null을 반환합니다.
        • peek(): 큐의 맨 앞 요소를 반환하지만 제거하지 않습니다. 큐가 비어 있으면 null을 반환합니다.isEmpty(): 큐가 비어 있는지를 확인합니다.
        • LinkedList : 이중 연결 리스트로 구현된 자료구조로, 요소의 삽입과 삭제가 빠르며, 임의 접근은 느림. List, Queue, Deque 인터페이스를 구현함.
        • ArrayDeque: 동적 배열을 기반으로 한 큐로, 스택과 큐 모두로 사용할 수 있습니다. 성능이 뛰어나고, null 요소를 허용하지 않습니다.
        • PriorityQueue: 우선순위 큐로, 요소가 자연 순서 또는 제공된 비교자에 따라 정렬됩니다. FIFO가 아닌 우선순위에 따라 요소가 제거됩니다.
         
    Share article

    silver

    RSS·Powered by Inblog