BOJ_15721_번데기
2021. 12. 7. 11:31ㆍ백준 알고리즘(BOJ)
1
구분: 구현, 시뮬레이션
언어: Java
전략:
- 고정적인 부분(뻔 - 데기 - 뻔 - 데기)과 변화하는 부분(뻔(xN번) - 데기(xN번))을 분리
- 구해야 하는 것이 '뻔'인지 '데기'인지 잘 구분하여 개수를 세고, 도달하였는지 체크
- 도달 하였다면 전체 '뻔' 개수와 '데기' 개수를 더하여 총 몇 번 순선이 돌았는지 확인
- 전체 사람 수 만큼 나누고, 1을 뺌(사람의 번호가 0부터 시작)
2. 코드
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int t = scanner.nextInt();
int type = scanner.nextInt();
int round = 1; //몇번째 회차인가
int ffun = 0; //뻔의 개수
int degi = 0; //데기의 개수
//뻔 - 0, 데기 - 1
loop:while(true) {
//매번 개수를 세고, 조건에 맞는t에 도달하였는지 체크한다
//고정적인 부분
for(int i = 0; i<4; i++) {
if(i%2==0) {
ffun++;
}
else {
degi++;
}
if(type==0) {
if(ffun == t) {
break loop;
}
}
else {
if(degi == t) {
break loop;
}
}
}
//가변적인 부분
for(int i = 0; i<=round; i++) {
ffun++;
if(type == 0 && ffun == t)
break loop;
}
for(int i = 0; i<=round; i++) {
degi++;
if(type == 1 && degi ==t)
break loop;
}
round++;
}//loop
//전체 몇번째 사람인지 구한다
int total = ffun + degi;
int ans = total % n;
//사람의 번호가 0부터 시작하기 때문에 1을 뺸다
//맨 마지막 번호의 사람
if(ans == 0) {
System.out.println(n-1);
}
else {
System.out.println(ans-1);
}
}
}
3.
간단한 구현 문제였지만 오랜만에 문제를 푸는거다 보니 좀 버벅 거렸다
꾸준히 문제를 풀어야 할 것이다!!!!
'백준 알고리즘(BOJ)' 카테고리의 다른 글
BOJ_14620_꽃길 (0) | 2021.12.10 |
---|---|
BOJ_16439_치킨치킨치킨 (0) | 2021.12.07 |
BOJ_11725_트리의 부모 찾기 (0) | 2021.11.19 |
BOJ_16938_캠프 준비 (0) | 2021.11.12 |
BOJ_11279_최대 힙 (0) | 2021.11.11 |