본문 바로가기

전체 글215

Level2 구명보트 ( 탐욕법 Greedy ) 🤔어떻게 하면 효율 적으로 태울지 limit이 100 이고 (제한인원 2명) 10 20 60 80 (정렬하고) 의 몸무게를 가진 손님이 있으면 어떻게 하면 딱 100kg에 딱 맞춰 태울까를 고민했었다. 하지만 생각을 해 보다 최소 보트의 수를 구하는 문제이기에 (10 80) 먼저 하나 ( 20 80 ) 을하나 똑같다. 그 이유는 정렬이 되어있고 + (제한인원이 2명이고) 탐욕적으로 최대 큰 수인 80에서 10을 선택하지 않으면 그 밑에 수는 80보다 작기에 100까지 최대 값을 설정할 수 없기 떄문이다. 그렇기에 탐욕적으로 큰사람 한명을 태우고 작은사람 한명이 가능하면 2명을 태워 나가고 불가능 하다면 1명을 태워 나간다. ⭐투포인터알고리즘⭐ public static int solution(int[] p.. 2023. 5. 21.
2023 한국장학재단 채용 전산직(it) 1차 면접 후기 면접후기 PT 면접 분위기 ( 매우 살벌 ) -> PT 주제는 일단 대중적인 주제이면서 굉장히 해결하기 어려운 주제가 나왔다. 한번쯤은 들어봤을법한 문제긴 하지만 이슈까지는 아닌 주제가 였다. 그래서 도저히 해결 방안이 생각이 안나 진짜 아무말 대잔치를 했다... 내가 생각해도 말이 안되긴 했는데 면접관님들이 너무 공격적으로 물어보셨다... (아니 50분동안 어떻게 해결하냐고요... 뭐 면접 컨셉이 좀 강하게 밀어붙이는 컨셉을 잡으신거 같다.) 그렇게 PT를 보고 '아 이건 탈락이다.' 라고 생각이 들었다. 각 면접관님마다 물어보는 파트가 달랐으며 자소서에 관한 내용도 묻기도 하며 그냥 골고루 물어보셨다. 토의 면접 분위기 ( 매우 화목 ) -> 토의는 PT면접과 다르게 면접관님들이 매우 웃어주시면서 긴.. 2023. 5. 19.
인프런 JAVA 알고리즘 정리(dp(동적계획법)) 1. 계단오르기 복잡한 문제를 -> 작은 문제로 시작하여 푼다. 계단이 1개일때 부터 2개 3개 4개... 로 풀이 1번째 계단을 가는 경우의 수 : 1 가지 2번째 계단을 가는 경우의 수 : 2가지 ( 1칸 1칸, 2칸 ) 3번째 계단을 가는 경우의 수 : 1번째 계단에서 올라오거나 or 2번째 계단에서 올라온다. -> 첫번째 계단 경우의 수 + 두번째 계단 경우의 수 4번째 계단을 가는 경우의 수 : 2번 째 경우의 수+ 3번 째 경우의 수 - 피보나치형식으로 구할수 있다. static int[] dy; public static void main(String[] args) { Main T = new Main(); Scanner kb = new Scanner(System.in); int n = kb.n.. 2023. 5. 17.
인프런 JAVA 알고리즘 정리(Greedy Algorithm 1~8번) 1. 씨름 선수 키 몸무게가 있고 자신보다 키 몸무게 둘다 큰 사람이 없다면 선택 -> (183, 65) - 키가 제일 큼 -> (180, 70) - 자신보다 키가 큰 사람중 자신보다 몸무게 큰 사람이 없음 -> (170, 72) - 자신보다 키가 큰 사람중 자신보다 몸무게 큰 사람이 없음 1. 사람을 키순으로 정렬한다. ( 첫번째 사람은 일단 키가 제일 크니 픽) 2. 그 뒤로 몸무게가 앞 사람보다 크다면 픽 ( 앞사람보다 키는 작지만 몸무게는 제일 높다는 소리) public static void main(String[] args) { Scanner sc = new Scanner(System.in); int num = sc.nextInt(); ArrayList arr = new ArrayList(); .. 2023. 5. 14.
인프런 JAVA 알고리즘 정리(DFS, BFS 활용 8~15번) AccessDenied Access Denied 7VKㄹㄷ7ㄹㄹBS6FQ704K885 qIEAFwzuh+2t2fNXlzFm6QdvDF27FjvRN9nj2hacWFKfOatXaZ3PPoFx/vSRNTt10d60TRXD/nw= 8. ⭐수열 추측하기⭐ // 1부터 N 까지의 숫자가 한 개씩 적혀있는데 그 숫자를 추측해라. // N이 4라고 하고 마지막 값이 16이 주어진다면 맨 위의 숫자는? 여러 값이 있다면 가장 앞에 오는 것을 출력 조합을 먼저 구하고 -> 순열를 바꿔가며 재귀를 돈다. 4 의 값 (3*1) + (1*3) + (2*3) + (4*1) = 16 규칙이 존재 4자리수면 1 3 3 1 을 곱하는 최종 결과라는... 5자리면 1 4 6 4 1 1. 1 3 3 1 b { 1, 3, 3, 1 } 2... 2023. 5. 13.
(MySQL LEVEL-2) 재구매가 일어난 상품과 회원 리스트 구하기 - 프로그래머스 USER_ID 가 재구매한 상품이 있는지 있다면 USER_ID와 PRODUCT_ID를 출력 위 테이블에서는 1번 유저가 3번,4번을 재구매 했고 2번이 4번을 재구매했다. 이와 같은 결과를 출력해라 이 문제를 풀기 앞서 알아야 하는 개념 GROUP BY 그룹바이는 컬럼리스트중 같다면 하나의 그룹으로 만들어 준다. - 위의 테이블에서 GROUP BY USER_ID로 처리하게 된다면 1 2 3 의 그룹으로 묶인다. 하지만 저 문제에서는 하나의 컬럼이 아닌 두 개의 컬럼이 밑에서 중복이 된다면 그 두 개의 컬럼을 기준으로 중복된 값만 묶이길 원한다. 그렇다면 GROUP BY뒤에 2개의 컬럼을 설정해 주면 된다. 답 SELECT USER_ID, PRODUCT_ID FROM ONLINE_SALE GROUP BY .. 2023. 5. 12.
(MySQL LEVEL-2) 자동차 평균 대여 기간 구하기 - 프로그래머스 이 테이블에서 CAR_ID 별로 평균 대여일이 7일 이상인 CAR_ID를 대여일이 내림차순으로 출력하고 대여일이 같은게 있다면 CAR_ID를 내림차순으로 출력해라 이 문제를 풀기 앞서 알아야 하는 함수 DATEDIFF( 날짜, 날짜 ) 두 날짜사이의 일 수를 계산 ROUND( 숫자, 숫자위치) 숫자의 어느지점에서 반올림을 할 지 뒤에 숫자를 적는다. SUM 합 GROUP으로 묶은 합 (집계함수) COUNT 갯수 GROUP으로 묶은 개수 (집계함수) 답 SELECT CAR_ID,ROUND(SUM(DATEDIFF(END_DATE, START_DATE)+1)/COUNT(END_DATE),1) AS AVERAGE_DURATION FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY GROUP B.. 2023. 5. 11.
인프런 JAVA 알고리즘 정리(DFS, BFS 활용 1~7번) 1. 합이 같은 부분집합(DFS : 아마존 인터뷰) // 배열 {1, 3, 5, 6, 7, 10}이 입력되된다면 2 집합으로 나누었을 때 같은 합이 있냐? // { 1, 3, 5, 7 } == { 6, 10 }이 나올 수 있으므로 같은 합이 있다 -> YES 출력 // DFS를 알고리즘을 사용해서 각각의 숫자를 사용할때와 안할때를 비교해서 최종 합이 같은지 비교 public String DFS(int L, int[] arr){ if(L == n){ int sum=0; for(int x : result) sum+=x; int total_t = total-sum; System.out.println(sum); // *현재까지 사용한 값과 사용하지 않은 값의 합이 같으면 YES 리턴* if(sum==total_.. 2023. 5. 11.
인프런 JAVA 알고리즘 정리(DFS, BFS 기초 7~14번) 7. 이진트리 레벨탐색 (BFS) - 최단거리 (목적지 까지 몇번만에 갈 수 있는지) - for문이 끝나면 레벨 증가 - Queue queue = new LinkedList(); 8. 송아지 찾기 (BFS) - 최단거리 - 앞으로 1, 뒤로 1, 앞으로 5칸 갈 수 있다면 송아지 위치까지의 최단거리는? - 나의 위치 4 송아지 위치 5 -> 앞으로 한칸으로 1번 최단거리 - 나의 위치 5 송아지 위치 11 -> 앞으로 한칸 + 앞으로 5칸 2번 최단거리 public static int BFS(int me, int song){ int count = 0; ch = new int[10004]; ch[me] = me; Queue queue = new LinkedList(); queue.add(me); while.. 2023. 5. 5.