백준 1021 회전하는 큐
LinkedList indexOf(), pollFirst(),pollLast(),offerFirst(),offerLast() 등의 메서드도 있다. deque 도 LinkedList로 구현 가능하다.
언쩃든 이게 첫번쨰에 올떄까지 오른쪽으로 이동해야하는거 아닌가?
q.첫번쨰는 어떻게봐? peek(0)이 target이 될떄까지?
그냥 차이만큼 이동시킬수있떤데
원소의 idx값이 이동하면서 변했다. idx값이니까 이를 이용해서 풀려고했지만 풀수도 있겠지만 그냥 indexOf()로 값 위치 구해서 푸는게 더 쉬운것 같기도 하다.. 내가 확인한 답에서 그렇게 풀어서 그런건가?
내가 뽑아야 하는 원소의 값이 주어졌는데 이 위치는 내가 전에 옮겼던거에 따라 위치가 계속 달라져서 이 원소의 값으로 위치를 알려면 계속 값을 바꿔줘야하는데 이 값의 위치를 가지고 하게 되면 내가 계산할때만 구하면 되니까.. 더 좋은가?
내가 얼마나 이동시켜야 할까?를 잘 못 찾았는데 이거를 문제로 작게 정의해서 메서드 나눠서 구현하는것처럼 나눠서 풀었으면 더 좋았을 듯 ,..
변수 관계 설정할떄 가능한 변수를 모두 리스트한다음에 조합해서 만들어보는거지...이걸 적어가면서 해보면
targetIdx, q.size(), halfIdx, seq(i)
더 빨리 할수 있지 않았을까
메서드처럼 하나하나 문제를 나눠서 풀어보자
예시 보면서 어떤 과정으로 하는건지 파악하는건 잘했지만
이를 좀 기록했으면 좋았을것같기도 의사코드로
큐 사이즈가 홀수였다면, 크기 절반
그 인덱스와 절반 까지의 차 target - half
근데 절반을 어떻게 알아? 이동할떄마다 절반을 이동시키간ㄴ?
왼쪽으로 한칸 -> half +1
right -> half -1계속 옮기다가 half가 범위 0~ N넘어갈수도 있는거? 그러면 %연산해줘야하나 +n % N?
이렇게 할수있었을까 근데 일단 pollFIrst()같은것도 몰랐거든 ..