Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- Two Pointer
- 가장 짧은 문자거리
- 뒤집은 소수
- 등수구하기
- 점수계산
- Pointer
- 백준
- 보이는 학생
- 자바
- java
- 아스키코드
- 두 배열 합치기
- 인프런
- 배열
- 모든행과열대각선의합
- 10992
- 최대 길이
- ArrayList
- 임시반장 정하기
- 격자판
- 누적 계산
- 공통원소 구하기
- GitHub #Commit #BaekJoon
- 코테준비
- 알고리즘
- 투 포인터
- 큰 수 출력하기
- 10991
- 연속부분수열
- array
Archives
- Today
- Total
ezhoon
[인프런] 05_06 공주 구하기 본문
📖 문제
- 첫 줄에 N과 K입력
- K번째는 N에서 제외
- 반복 후 마지막에 1명 남은 왕자 번호 출력
⚠️ 주의사항
- for문의 시작을 0부터가 아닌 1부터 시작으로 해야 합니다.
- 마지막에 1명 남았을 때는 answer에 값 전달해서 return 해야 합니다.
✍️ 이해
/**
* 1. 첫 줄에 N(왕자의 수)과 K(제외된 왕자) 입력
* 2. Queue에 n번째까지 저장
* 3. Queue빈 값일 때까지 반복
* 3-1. Queue에 poll값 집어 넣기
* 3-2. Queue poll한 후 size == 1 -> answer에 poll 값 대입
* 4. return answer;
*/
✏️ 풀이
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.LinkedList;
import java.util.Queue;
import java.util.StringTokenizer;
public class Main {
public int Solution(int n, int k) {
int answer = 0;
Queue<Integer> queue = new LinkedList<>();
for (int i = 1; i <= n; i++) {
queue.offer(i);
}
while (!queue.isEmpty()) {
for (int i = 1; i < k; i++) {
queue.offer(queue.poll());
}
queue.poll();
if (queue.size() == 1) answer = queue.poll();
}
return answer;
}
public static void main(String[] args) throws IOException {
Main T = new Main();
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
int n = Integer.parseInt(st.nextToken());
int k = Integer.parseInt(st.nextToken());
System.out.println(T.Solution(n, k));
}
}
'[Java] 인프런 문제풀이 > Stack, Queue (자료구조)' 카테고리의 다른 글
[인프런] 05-08 응급실 (0) | 2022.02.01 |
---|---|
[인프런] 05_07 교육과정 설계 (0) | 2022.01.31 |
[인프런] 05_05 쇠막대기 (0) | 2022.01.29 |
[인프런] 05_04 후위식 연산 (0) | 2022.01.28 |
[인프런] 05_02 괄호문자제거 (0) | 2022.01.27 |
Comments