Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 25 additions & 0 deletions 0421/BOJ/P1003/P1003_kim.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package study0421;

import java.util.Scanner;

public class baekjoon_P1003_피보나치함수 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int tc = sc.nextInt();
for (int tn = 1; tn <= tc; tn++) {
int[][] save = new int[41][2];// N: 최대 40, [0]: 0의 개수 , [1] : 1의 개수
int num = sc.nextInt();
save[0][0] = 1;
save[0][1] = 0;
save[1][0] = 0;
save[1][1] = 1;

for(int i = 2; i <= num; i++) {
save[i][0] = save[i-1][0]+save[i-2][0];
save[i][1] = save[i-1][1]+save[i-2][1];
}
System.out.println(save[num][0]+" "+save[num][1]);
}
}

}
46 changes: 46 additions & 0 deletions 0421/BOJ/P1012/P1012_kim.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
package study0421;

import java.util.Scanner;

public class baekjoon_1012 {
static int[][] map;
static int m,n;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int tc = sc.nextInt();
for(int tn = 1; tn <= tc; tn++) {
m = sc.nextInt(); // 배추밭 가로길이
n = sc.nextInt(); // 배추밭 세로길이
int k = sc.nextInt(); // 배추의 개수
int ans = 0;
map = new int[m][n];
for(int i = 0; i < k; i++) {
map[sc.nextInt()][sc.nextInt()] = 1; // 배추 위치 표시
}
for(int i = 0; i < m; i++) {
for(int j = 0; j < n; j++) {
if(map[i][j]==0) continue;
search(i,j);
ans++;

}
}
System.out.println(ans);
}

}
static int[] dr= {-1, 1, 0, 0}; // 상하좌우
static int[] dc = {0, 0, -1, 1}; // 상하좌우
private static void search(int r, int c) {
map[r][c] = 0;
for(int k = 0; k < 4; k++) {
int nr = r + dr[k];
int nc = c + dc[k];
if(nr >=0 && nr < m && nc >= 0 && nc < n && map[nr][nc]==1) {
search(nr,nc);
}
}

}

}
54 changes: 54 additions & 0 deletions 0421/BOJ/P18111/P18111_kim.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
package study0421;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Scanner;
import java.util.StringTokenizer;

public class baekjoon_18111 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int n = Integer.parseInt(st.nextToken()); // 가로
int m = Integer.parseInt(st.nextToken()); // 세로
int b = Integer.parseInt(st.nextToken()); // 인벤토리 블록 수
int[][] map = new int[n][m];
int max = 0;
int min = Integer.MAX_VALUE;
for (int i = 0; i < n; i++) {
st = new StringTokenizer(br.readLine());
for (int j = 0; j < m; j++) {
map[i][j] = Integer.parseInt(st.nextToken());
max = Math.max(map[i][j], max);
min = Math.min(map[i][j], min);
}
}
int anstime = Integer.MAX_VALUE;
int height = 0;
// 땅의 높이가 될 수 있는 범위
for (int i = min; i <= max; i++) {
int block = b;
int time = 0;
for (int j = 0; j < n; j++) {
for (int k = 0; k < m; k++) {
if (map[j][k] > i) { // 깎아야 함
block += (map[j][k] - i); // 깎은 블록 인벤토리에 저장
time += (map[j][k] - i) * 2; // 깎는데 블록 하나당 2초씩 걸림
} else {
block -= (i - map[j][k]); // 쌓아야 하는 높이만큼 인벤토리에 블록 제거
time += (i - map[j][k]); // 쌓는데 1초씩 걸림
}
}
}
//인벤토리에 블록이 0 이상이여야만 평탄화가 잘 진행된 것! && 높이의 최댓값을 구하는 것이라 시간 비교에 등호가 들어간다.
if (block >= 0 && anstime >= time) {
anstime = time;
height = i;
}
}
System.out.println(anstime + " " + height);
}

}