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

silver's avatar
Jan 19, 2025
[알고리즘문제풀기] 공 던지기

문제

내가 작성한 정답

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