diff --git "a/0602/Programmers/Lv1/\354\230\210\354\202\260_kim.java" "b/0602/Programmers/Lv1/\354\230\210\354\202\260_kim.java" new file mode 100644 index 0000000..8914514 --- /dev/null +++ "b/0602/Programmers/Lv1/\354\230\210\354\202\260_kim.java" @@ -0,0 +1,22 @@ + +import java.util.Arrays; + +public class 예산_kim { + public static void main(String[] args) { + int[] d = {2,2,3,3}; + int budget = 10; + + Arrays.sort(d); // 오름차순으로 정렬 + int sum = 0; + int idx = 0; + while(idx budget) { // 부서별 신청금액의 합이 예산보다 크면 멈춤 + break; + } + idx++; + } + System.out.println(idx); + } + +} diff --git "a/0602/Programmers/Lv1/\355\217\260\354\274\223\353\252\254_kim.java" "b/0602/Programmers/Lv1/\355\217\260\354\274\223\353\252\254_kim.java" new file mode 100644 index 0000000..0b6d0db --- /dev/null +++ "b/0602/Programmers/Lv1/\355\217\260\354\274\223\353\252\254_kim.java" @@ -0,0 +1,20 @@ + + +import java.util.HashSet; +import java.util.Set; + +public class 폰켓몬_kim { + public static void main(String[] args) { + int[] nums = {3,3,3,2,2,2}; + Set set = new HashSet<>(); // 중복 제거해서 set에 저장 + for(int i = 0; i < nums.length; i++) { + set.add(nums[i]); + } + if((nums.length/2) > set.size()) { + System.out.println(set.size()); + }else { + System.out.println(nums.length/2); + } + } + +} diff --git "a/0602/Programmers/Lv2/\354\230\244\355\224\210\354\261\204\355\214\205\353\260\251_kim.java" "b/0602/Programmers/Lv2/\354\230\244\355\224\210\354\261\204\355\214\205\353\260\251_kim.java" new file mode 100644 index 0000000..4cf40e3 --- /dev/null +++ "b/0602/Programmers/Lv2/\354\230\244\355\224\210\354\261\204\355\214\205\353\260\251_kim.java" @@ -0,0 +1,39 @@ + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class Programmers_Lv2_오픈채팅방 { + public static void main(String[] args) { + String[] record = {"Enter uid1234 Muzi", "Enter uid4567 Prodo","Leave uid1234","Enter uid1234 Prodo","Change uid4567 Ryan"}; + String[][] records = new String[record.length][3]; // [0]: 출입, 수정 , [1]: 아이디 , [2]: 닉네임 + Map map = new HashMap<>(); // 해쉬맵 생성 + for(int i = 0; i < records.length; i++) { + String a = record[i]; + records[i] = a.split(" "); + if(records[i][0].equals("Leave")) { + continue; + } + // map에 아이디를 키로 닉네임을 value로 저장해서 change일 때 자동으로 닉네임 바뀜 + map.put(records[i][1], records[i][2]); + } + List list = new ArrayList<>(); // 메세지 저장할 리스트 + for(int i = 0; i < records.length; i++) { + if(records[i][0].equals("Enter")) { + list.add(map.get(records[i][1])+"님이 들어왔습니다."); + }else if(records[i][0].equals("Leave")) { + list.add(map.get(records[i][1])+"님이 나갔습니다."); + } + } + //ans 배열에 list 값 옮겨 담아서 반환 + String[] ans = new String[list.size()]; + for(int i = 0; i < list.size(); i++) { + ans[i] = list.get(i); + } + System.out.println(Arrays.toString(ans)); + + } + +} diff --git "a/0602/Programmers/Lv2/\354\271\264\354\271\264\354\230\244\355\224\204\353\240\214\354\246\210\354\273\254\353\237\254\353\247\201\353\266\201_kim.java" "b/0602/Programmers/Lv2/\354\271\264\354\271\264\354\230\244\355\224\204\353\240\214\354\246\210\354\273\254\353\237\254\353\247\201\353\266\201_kim.java" new file mode 100644 index 0000000..8d81387 --- /dev/null +++ "b/0602/Programmers/Lv2/\354\271\264\354\271\264\354\230\244\355\224\204\353\240\214\354\246\210\354\273\254\353\237\254\353\247\201\353\266\201_kim.java" @@ -0,0 +1,51 @@ + + +import java.util.Arrays; + +public class Programmers_Lv2_카카오프렌즈컬러링북 { + static int[] dr = { -1, 1, 0, 0 }; + static int[] dc = { 0, 0, -1, 1 }; + static boolean[][] visited; + static int max; + static int fill; + + public static void main(String[] args) { + int m = 6; + int n = 4; + max = 0; // 최대로 칠한 칸 수 + int count = 0; // 영역 수 + visited = new boolean[m][n]; + int[][] picture = { { 1, 1, 1, 0 }, { 1, 2, 2, 0 }, { 1, 0, 0, 1 }, { 0, 0, 0, 1 }, { 0, 0, 0, 3 }, + { 0, 0, 0, 3 } }; + + for (int i = 0; i < m; i++) { + for (int j = 0; j < n; j++) { + if (picture[i][j] != 0 && !visited[i][j]) { // 0이 아니고 방문하지 않았다면 + fill = 0; // 색칠한 칸의 수 체크 할 변수 + check(picture, i, j); + count++; // 영역 수 증가 + max = Math.max(max, fill); // 최대로 칠한 칸 수 max에 비교해 저장 + } + } + } + int[] ans = new int[2]; + ans[0] = count; // 영역 수 + ans[1] = max; // 최대로 칠한 칸의 수 + System.out.println(Arrays.toString(ans)); + + } + + private static void check(int[][] picture, int r, int c) { + visited[r][c] = true; + fill++; // 현재 색칠한 칸의 수 증가 + for (int d = 0; d < 4; d++) { + int nr = r + dr[d]; + int nc = c + dc[d]; + if(nr >= 0 && nr < picture.length && nc >= 0 && nc < picture[0].length) { + if(!visited[nr][nc] && picture[r][c]==picture[nr][nc]) { + check(picture, nr, nc); + } + } + } + } +}