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 | 31 |
Tags
- 낙관적 락
- 자바
- 다중 서버
- thundering herd
- Entity Manager
- JPA
- 예외처리
- 백준
- 벌크헤드패턴
- id생성
- session인증
- 슬라이스 테스트
- 트라이 자료구조
- 캐시 스탬피드
- 타임아웃
- 이진탐색
- prg패턴
- queue
- DP
- ddl-auto
- java
- 외부 서비스 장애
- 알고리즘
- 비관적 락
- expired key
- 베타락
- 이분탐색
- BFS
- 스택
- Stack
Archives
- Today
- Total
Coding 01
백준[9184]번 : 신나는 함수 실행 ( JAVA ) 본문
https://www.acmicpc.net/problem/9184
9184번: 신나는 함수 실행
입력은 세 정수 a, b, c로 이루어져 있으며, 한 줄에 하나씩 주어진다. 입력의 마지막은 -1 -1 -1로 나타내며, 세 정수가 모두 -1인 경우는 입력의 마지막을 제외하면 없다.
www.acmicpc.net
Code
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;
public class Main {
static int w(int[][][] arr,int a,int b,int c) {
for(int i=0;i<=a;i++) {
for(int j=0;j<=b;j++) {
for(int k=0;k<=c;k++) {
if(i == 0 || j == 0 || k == 0) {
arr[i][j][k] = 1;
}
else if(i < j && j < k) {
arr[i][j][k] = arr[i][j][k-1] + arr[i][j-1][k-1] - arr[i][j-1][k];
}
else {
arr[i][j][k] = arr[i-1][j][k] + arr[i-1][j-1][k] + arr[i-1][j][k-1] - arr[i-1][j-1][k-1];
}
}
}
}
return arr[a][b][c];
}
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int[][][] arr = new int[21][21][21];
// 조건에 따라 20보다 크면 w(20,20,20)을 반환하기에 배열 크기 초기화
w(arr,20,20,20);
while(true) { // -1,-1,-1 일 경우 반복문 종료
StringTokenizer st = new StringTokenizer(br.readLine());
int a = Integer.parseInt(st.nextToken());
int b = Integer.parseInt(st.nextToken());
int c = Integer.parseInt(st.nextToken());
if(a == -1 && b == -1 && c == -1) {
break;
}
bw.write(String.format("w"+"("+"%d,"+" %d,"+" %d"+") = ",a,b,c));
// String.format으로 출력 형식을 정할 수 있다.
if(a <= 0 || b <= 0 || c <=0) {
bw.write(1+"\n");
continue; // 다시 반복문의 처음으로 이동
}
if(a > 20 || b > 20 || c > 20) {
a = 20;
b = 20;
c = 20;
}
bw.write(arr[a][b][c]+"\n");
}
br.close();
bw.close();
}
}
계속해서 문제가 틀려서 결국 다른 사람의 코드를 보고 코드를 완성했다.
이런 건 항상 다른 사람 코드 보면 쉽게 느껴진다.
문제 조건을 잘 생각하고 반복되는 부분이 어디인지 생각을 잘해야 되겠다고 느꼈다.
'백준' 카테고리의 다른 글
백준[11723]번 : 집합 ( JAVA ) (0) | 2023.08.01 |
---|---|
백준[1904]번 : 01타일 ( JAVA ) (0) | 2023.07.30 |
백준[2748]번 : 피보나치 수 2 ( JAVA ) (2) | 2023.07.29 |
백준[24416]번 : 알고리즘 수업 - 피보나치 수 1 ( JAVA ) (0) | 2023.07.27 |
백준[11286]번 : 절댓값 힙 ( JAVA ) (0) | 2023.07.25 |