일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- mysql hy000 에러
- 최소 힙 1927
- hash
- 프로그래머스 java
- map
- HashSet
- Stack
- 프로그래머스
- 백준 1197번 최소 스패닝 트리 - java
- 백준 1806번 부분합 java
- 18111번 마인크래프트 - java 구현
- toUpperCase
- HashMap
- 백준 3190번
- 백준 1647번 도시 분할 계획 - java
- kotlin
- dp
- 백준 2473번 세 용액 - java
- Java
- 백준 1043번 거짓말 - java 분리 집합
- 백준 1541
- 코틀린기초
- replace()
- StringBuilder
- ac 5430번
- 프로그래머스 자바
- StringTokenizer
- append
- 백준 2467번 용액 자바 - 이분탐색
- 백준 14938번 서강그라운드
Archives
- Today
- Total
말하는 컴공감자의 텃밭
백준 15721번 번데기 S5 - Brute force 본문
728x90
단순 구현문제이다.
다만 어이없게 실수해서 1시간 반을 헤맸다... 열받넹 ^<^
i ++ 어디감 ㅋㅋ
뻔 -> 0, 데기 -> 1
큐로 사람의 위치를 구현해줬다. 물론 % 연산으로도 가능하다.
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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 | import java.util.*; import java.io.*; public class Main {// Boj_15721_번데기 // 큐로 구현, 완전 탐색 input 10000이므로 static int answer, T, B, time_bb, time_dg; static Queue<Integer> que; static int[] action; public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int A = Integer.parseInt(br.readLine());// 사람 수 T = Integer.parseInt(br.readLine());// T번째 뻔, 데기 B = Integer.parseInt(br.readLine());// 0 -> 뻔, 1-> 데기 action = new int[A]; que = new LinkedList<>(); answer = 0; time_bb = 0; time_dg = 0; for (int i = 0; i < A; i++) { que.add(i); } game(); System.out.println(answer); } public static void game() { int idx = 2; loop1: while (true) { // 회차 int temp = 0; for (int i = 0; i < 2; i++) { // 뻔 데기 * 2 temp = cycle(); // System.out.println("뻔 "); time_bb++; if(chk()) { answer = temp; break loop1; } temp = cycle(); // System.out.println("데기 "); time_dg++; if(chk()) { answer = temp; break loop1; } } for (int i = 0; i < idx; i++) { // 뻔 * n temp = cycle(); // System.out.println("뻔 반복 "); time_bb++; if(chk()) { answer = temp; break loop1; } } for (int i = 0; i < idx; i++) { // 데기 * n temp = cycle(); // System.out.println("데기 반복"); time_dg++; if(chk()) { answer = temp; break loop1; } } idx ++; // System.out.println("회차 :" + (idx-1)); } return; } public static int cycle() { // 순환하도록 int front = que.poll(); que.add(front); // System.out.printf(front +"번째 사람 차례 "); return front; } public static boolean chk() { // 뻔, 데기 구분 if(B == 0 && T == time_bb) { // System.out.println("---뻔 " + time_bb+"번째"); return true; } if(B == 1 && T == time_dg) { // System.out.println("---데기 " + time_dg+"번째"); return true; } return false; } } | cs |
% 연산으로 사람 확인
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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 | import java.util.*; import java.io.*; public class Main {// Boj_15721_번데기 // 숫자 %연산으로 , 완전 탐색 input 10000이므로 static int answer, A, T, B, time_bb, time_dg; public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); A = Integer.parseInt(br.readLine());// 사람 수 T = Integer.parseInt(br.readLine());// T번째 뻔, 데기 B = Integer.parseInt(br.readLine());// 0 -> 뻔, 1-> 데기 answer = 0; time_bb = 0; time_dg = 0; game(); if (answer == 0) { answer = A - 1; } else { answer -= 1; } System.out.println(answer); } public static void game() { int idx = 2; loop1: while (true) { // 회차 for (int i = 0; i < 2; i++) { // 뻔 데기 * 2 // System.out.println("뻔"); time_bb++; if (chk()) { break loop1; } // System.out.println("데기"); time_dg++; if (chk()) { break loop1; } } for (int i = 0; i < idx; i++) { // 뻔 * n // System.out.println("뻔"); time_bb++; if (chk()) { break loop1; } } for (int i = 0; i < idx; i++) { // 데기 * n // System.out.println("데기"); time_dg++; if (chk()) { break loop1; } } idx++; } answer = (time_bb + time_dg) % A; return; } public static boolean chk() { // 뻔, 데기 구분 if (B == 0 && T == time_bb) { // System.out.println("---뻔 " + time_bb+"번째"); return true; } if (B == 1 && T == time_dg) { // System.out.println("---데기 " + time_dg+"번째"); return true; } return false; } } | cs |
728x90
'알고리즘 > Backjoon - Java' 카테고리의 다른 글
백준 1446번 지름길 S1 - DP, 다익스트라 (1) | 2024.01.31 |
---|---|
백준 11052번 카드구매하기 S1 - DP (0) | 2024.01.19 |
백준 1181번 단어정렬 S5 - Comparable 인터페이스 (1) | 2024.01.03 |
백준 12865번 평범한 배낭 G5 - DP (0) | 2023.12.19 |
백준 3085번 사탕 게임 S2 - 브루트포스 (0) | 2023.12.14 |
Comments