-
[백준] 1021 회전하는 큐 #JAVAAlgorithm Solving/BAEKJOON 2021. 1. 31. 14:34
BAEKJOON [1021] 회전하는 큐?
코드
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.LinkedList; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int n,m; int target, targetIdx; int moveCnt=0; StringTokenizer st; st = new StringTokenizer(br.readLine()); n = Integer.parseInt(st.nextToken()); m = Integer.parseInt(st.nextToken()); st = new StringTokenizer(br.readLine()); LinkedList<Integer> lnk = new LinkedList<Integer>(); for (int i = 1; i <= n; i++) { lnk.add(i); } for (int i = 0; i < m; i++) { target = Integer.parseInt(st.nextToken()); targetIdx = lnk.indexOf(target); //2번으로 돌릴지 3번으로 돌릴지 결정하자 if(targetIdx <= lnk.size()/2) { //2번으로 돌리자. for (int j = 0; j < targetIdx; j++) { int temp = lnk.pop(); lnk.add(temp); moveCnt++; } }else {//3번으로 돌리자. for (int j = 0; j < lnk.size()-targetIdx; j++) { int temp = lnk.pollLast(); lnk.push(temp); moveCnt++; } } lnk.pop(); } System.out.println(moveCnt); } }
풀이
- 덱 말고 연결리스트를 사용했다.
- 덱은 왼쪽, 오른쪽으로 이동할지 최적의 방향을 찾기가 어려웠다.
- indexOf 함수로 내가 찾으려는 값의 위치를 파악하여 좌우 이동을 결정한다.
잘못된 코드나 내용이 있다면 댓글을 남겨주세요. 즉시 수정하도록 하겠습니다! :)
'Algorithm Solving > BAEKJOON' 카테고리의 다른 글
[해커랭크] Two Strings #JAVA (0) 2021.02.01 [백준] 1300 K번째 수 #JAVA (0) 2021.02.01 [백준] 6198 옥상 정원 꾸미기 #JAVA (0) 2021.01.31 [백준] 2493 탑 #JAVA (0) 2021.01.30 [백준] 1874 스택 수열 #JAVA (0) 2021.01.30