Team-BingBong / algorithm-study

0 stars 0 forks source link

[2월 2주차] 표현 가능한 이진트리 2023 KAKAO BLIND RECRUITMENT #3

Open eunbc opened 5 months ago

eunbc commented 5 months ago

필수 문제

표현 가능한 이진트리

코드 💻
```java ```


자율 문제

[문제1]()

코드 💻
```java ```


[문제2]()

코드 💻
```java ```

park0jae commented 5 months ago

필수 문제

표현 가능한 이진트리

코드 💻
```java ```


자율 문제

백준 - 오리

코드 💻
```java import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { private static final char[] DUCK = {'q','u','a','c','k'}; static char[] arr; public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); arr = br.readLine().toCharArray(); solve(); } private static void solve() { if(arr.length % 5 != 0) { System.out.println(-1); return; } int len = arr.length; int cnt = 0; while(len != 0) { int duckIdx = 0; int idx = 0; boolean check = false; int[] tmp = new int[5]; while(idx < arr.length) { if(arr[idx] == DUCK[duckIdx]) { tmp[duckIdx++] = idx; if(duckIdx == 5) { check = true; len -= 5; duckIdx = 0; for(int i=0; i<5; i++) { arr[tmp[i]] = 'O'; } } } idx++; } if(check) cnt++; else break; } System.out.println(len == 0 ? cnt : -1); } } ```


프로그래머스 - 귤 고르기

코드 💻
```java import java.util.*; class Solution { public int solution(int k, int[] tangerine) { int answer = 0; Arrays.sort(tangerine); Map map = new HashMap<>(); for(int i=0; i keySet = new ArrayList<>(map.keySet()); keySet.sort((o1,o2) -> map.get(o2).compareTo(map.get(o1))); for(int i : keySet){ k -= map.get(i); answer++; if(k <= 0) break; } return answer; } } ```

eunbc commented 4 months ago

필수 문제

표현 가능한 이진트리

코드 💻
```java ```


자율 문제

백준 - 동전1

코드 💻
```java import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.util.*; public class Main { static int n,k; static int[] coin; static int[] dp = new int[10001]; public static void main(String[] args) throws IOException { Scanner sc = new Scanner(System.in); n = sc.nextInt(); k = sc.nextInt(); coin = new int[n]; for(int i=0; i 동전을 사용해서 i원을 만드는 경우의 수 dp[0] = 1; for(int i=0; i


백준 - 삼각그래프

코드 💻
```java import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.util.*; public class Main { static int N; static long[][] graph; static long[][] dp; public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st; int now = 0; while(true) { N = Integer.parseInt(br.readLine()); if(N==0) return; graph = new long[N][3]; dp = new long[N][3]; for(int i=0; i

byulcode commented 4 months ago

필수 문제

표현 가능한 이진트리

코드 💻
```java class Solution { public int[] solution(long[] numbers) { int[] answer = new int[numbers.length]; for (int i = 0; i < numbers.length; i++) { String binary = convertToBinary(numbers[i]); boolean flag = check(binary, 0, binary.length()-1); if (flag) { answer[i] = 1; } else { answer[i] = 0; } } return answer; } // 포화이진트리 생성 메서드 public String convertToBinary(long num) { String binary = Long.toBinaryString(num); int h = 0; int nodes = 1; while (nodes < binary.length()) { h++; nodes += (int)Math.pow(2, h); } return "0".repeat(nodes - binary.length()) + binary; } public boolean check(String binary, int start, int end) { if (start == end) return true; // 리프노드에서 호출한 경우 int root = (start + end) / 2; if (binary.charAt(root) == '0') { for (int i = start; i < root; i++) { if (binary.charAt(i) == '1') return false; } for (int i = root + 1; i <= end; i++) { if (binary.charAt(i) == '1') return false; } } return check(binary, start, root - 1) && check(binary, root + 1, end); } } ```


자율 문제

유기농 배추

코드 💻
```java class Solution { public int[] solution(long[] numbers) { int[] answer = new int[numbers.length]; for (int i = 0; i < numbers.length; i++) { String binary = convertToBinary(numbers[i]); boolean flag = check(binary, 0, binary.length()-1); if (flag) { answer[i] = 1; } else { answer[i] = 0; } } return answer; } // 포화이진트리 생성 메서드 public String convertToBinary(long num) { String binary = Long.toBinaryString(num); int h = 0; int nodes = 1; while (nodes < binary.length()) { h++; nodes += (int)Math.pow(2, h); } return "0".repeat(nodes - binary.length()) + binary; } public boolean check(String binary, int start, int end) { if (start == end) return true; // 리프노드에서 호출한 경우 int root = (start + end) / 2; if (binary.charAt(root) == '0') { for (int i = start; i < root; i++) { if (binary.charAt(i) == '1') return false; } for (int i = root + 1; i <= end; i++) { if (binary.charAt(i) == '1') return false; } } return check(binary, start, root - 1) && check(binary, root + 1, end); } } ```

[문제2]()

코드 💻
```java ```