https://www.acmicpc.net/problem/15721
15721번: 번데기
예를 들어 7명이 있고, 16번째 등장하는 “뻔”을 부른 사람의 번호를 알고 싶다면 입력은 7 16 0이다. 4명이 있고 6번째 등장하는 “데기”를 부른 사람의 번호를 알고 싶다면 입력은 4 6 1이며, 이
www.acmicpc.net
코드풀이
완전탐색 + 구현 문제입니다.
이 문제에서 유의해야할점은
문제조건의
- T번째 ‘뻔’ 또는 ‘데기’를 외치는 사람은 위 원에서 몇 번 사람인지를 구하여라.
여기서 T번쨰 '뻔' 또는 '데기'가 뻔이 몇번째 인가를 구하는 것인줄 모르고
뻔과 데기를 합친 후 뻔과 데기 중에서 T번째를 구하는것이라고 이해했어서 해당부분에 시간이 오래 걸렸습니다.
코드
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.*; public class Main { public static int A, T, CALL; public static int result = 0; public static boolean CALLFLAG = false; //false면 '뻔' True면 '데기' public static int cyclecnt = 2; //몇번쨰 주기인지 확인, 첫번쨰 주기부터 2번씩 하니 2로 설정 public static int BBUNCNT = 0; //뻔 횟수 - 뻔은 '0' public static int DAEGICNT = 0; //데기 횟수 - 대기는 '1' public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine()); A = Integer.parseInt(st.nextToken()); st = new StringTokenizer(br.readLine()); T = Integer.parseInt(st.nextToken()); st = new StringTokenizer(br.readLine()); CALL = Integer.parseInt(st.nextToken()); simulate(); System.out.println(result); } public static void simulate() { while(true) { //첫 4번은 '뻔' - '데기' - '뻔' - '데기' for(int i=0;i<4;i++) { if(i%2 == 0) { BBUNCNT += 1; } if(i%2 == 1) { DAEGICNT += 1; } //'뻔' 이 특정 번째에 맞다면 if(BBUNCNT == T && CALL == 0) { result = ( BBUNCNT + DAEGICNT - 1 ) % A; return ; } //'데기' 가 특정번째에 왔다면 else if(DAEGICNT == T && CALL == 1) { result = ( BBUNCNT + DAEGICNT - 1 ) % A; return ; } } // 2, 3, 4, 5, ... 이렇게 늘어난다. for(int i=0; i<cyclecnt; i++) { BBUNCNT += 1; //'뻔' 이 특정 번째에 맞다면 if(BBUNCNT == T && CALL == 0) { result = ( BBUNCNT + DAEGICNT - 1 ) % A; return; } } // 2, 3, 4, 5, ... 이렇게 늘어난다. for(int i=0; i<cyclecnt; i++) { DAEGICNT += 1; //'뻔' 이 특정 번째에 맞다면 if(DAEGICNT == T && CALL == 1) { result = ( BBUNCNT + DAEGICNT - 1 ) % A; return ; } } cyclecnt += 1; } } }
'알고리즘 > 백준' 카테고리의 다른 글
[백준] 1969 DNA - 완전탐색 + 구현 JAVA (0) | 2023.07.10 |
---|---|
[백준] 18511 큰 수 구성하기 - 완전탐색 + 문자열 JAVA (0) | 2023.07.09 |
[백준] 22864 피로도 - 그리디 + 완전탐색 JAVA (0) | 2023.07.08 |
[백준] 18312 시각 - 완전탐색 JAVA (0) | 2023.07.07 |
[백준] 19532 수학은 비대면강의입니다 - 완전탐색 JAVA (0) | 2023.07.07 |