728x90
반응형
2024.07.17기준 - 실버4
백준, BEAKJOON, BOJ, JAVA, 자바
풀이
이 문제는 입력된 인원 수를 조건에 맞춰 0보다 같거나 작게 만드는 문제입니다.
1. 입력 받은 수를 통해 창의인재관에 있는 인원이 전부 융합인재관에갈 수 없다면, -1을 출력했습니다.
// 모든 학생이 융합인재관으로 갈 수 없다면
if (n != 1 && m == 1 && k == 1) {
sb.append(-1).append("\n");
continue;
}
2. 갈 수 있다면, 우산의 수와 하나의 우산에 들어갈 인원 수를 곱해 창의인재관의 인원 수에서 빼주었고,
3. 창의인재관 수가 0보다 같거나 작다면 전부 이동한 것으로 간주해 break를 걸어주고
4. 아니라면 다시 1명이 모든 우산을 창의인재관으로 이동해 인원수를 +1해주었습니다.
count = 0;
while (true) {
count++;
n -= m * k;
if (n <= 0) { // 모든 인원이 이동하면 break
break;
} else { // 한 명이 다시 창의인재관을 이동
count++;
n++;
}
}
코드
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringBuilder sb = new StringBuilder();
int t = Integer.parseInt(br.readLine()); // 테스트 케이스 개수
int n, m, k, count;
StringTokenizer st;
while (t-- > 0) {
st = new StringTokenizer(br.readLine());
n = Integer.parseInt(st.nextToken()); // 창의인재관에 있는 학생 수
m = Integer.parseInt(st.nextToken()); // 창의인재관에 있는 우산 수
k = Integer.parseInt(st.nextToken()); // 하나의 우산 최대 인원 수
// 모든 학생이 융합인재관으로 갈 수 없다면
if (n != 1 && m == 1 && k == 1) {
sb.append(-1).append("\n");
continue;
}
count = 0;
while (true) {
count++;
n -= m * k;
if (n <= 0) { // 모든 인원이 이동하면 break
break;
} else { // 한 명이 다시 창의인재관을 이동
count++;
n++;
}
}
sb.append(count).append("\n");
}
bw.write(sb.toString());
bw.flush();
bw.close();
br.close();
}
}
728x90
반응형
'코딩테스트 일기 (BAEKJOON)' 카테고리의 다른 글
BAEKJOON / 백준 - JAVA 31867번 홀짝홀짝 (0) | 2024.07.19 |
---|---|
BAEKJOON / 백준 - JAVA 26043번 식당 메뉴 (0) | 2024.07.18 |
BEAKJOON / 백준 - JAVA 30502번 미역은 식물 아닌데요 (0) | 2024.07.17 |
BEAKJOON / 백준 - JAVA 1991번 트리 순회 (2) | 2024.07.16 |
BAEKJOON / 백준 - JAVA 12760번 최후의 승자는 누구? (0) | 2024.07.16 |