programmers lv3
[프로그래머스, 42884] 단속카메라 (java)
https://school.programmers.co.kr/learn/courses/30/lessons/42884 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr메모리: 58.3 MB, 시간: 9.76 ms사용 알고리즘: 탐욕법(Greedy) routes를 나가는 시간 기준 오름차순으로 정렬한다.가장 먼저 나가는 차량의 나가는 시간을 out에 저장하고, out에 cctv를 설치해 준다.다음 차량 배열들을 확인한다.out 이전에 들어오는 차량들은 out에 설치된 cctv와 만나게 되므로 그냥 보낸다.(routes가 나가는 시간 오름차순으로 정렬되어 있기 때문에..
[프로그래머스, 12987] 숫자 게임 (java)
https://school.programmers.co.kr/learn/courses/30/lessons/12987 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr메모리: 63.1 MB, 시간: 112.35 ms사용 알고리즘: 정렬 A와 B의 점수를 모두 오른차순으로 정렬한 후, A 배열을 순회하며 항상 최선의 경우를 찾는다.항상 최선의 경우란, 아직 출전하지 않은 B팀의 점수 중 현재 확인 중인 A팀의 점수보다 큰 수 중 가장 작은 점수가 출전하는 것이다.만약 그런 점수를 찾을 수 없다면, 아직 확인하지 않은 남은 A팀의 점수들도 찾을 수 없다는 뜻이므로 br..
[프로그래머스, 42898] 등굣길 (java)
https://school.programmers.co.kr/learn/courses/30/lessons/42898 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr메모리: 51.9 MB, 시간: 0.99 ms사용 알고리즘: 동적계획법(Dynamic Programming) 처음 문제를 풀 때는 BFS로 풀었다.BFS로 사방탐색을 하는 것처럼 이방탐색을 해줬다.(오른쪽, 아래쪽으로만 이동이 가능하니 이방탐색) 정확성 테스트는 모두 통과할 수 있었는데 효율성 테스트는 모두 시간초과가 났다. 그래서 다른 방법을 고민해 봤는데, 생각해 보니 오른쪽, 아래쪽으로만 이동이..
[프로그래머스, 43163] 단어 변환 (java)
https://school.programmers.co.kr/learn/courses/30/lessons/43163 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr메모리: 72.4 MB, 시간: 0.69 ms사용 알고리즘: 너비 우선 탐색(BFS) 단어를 하나의 노드로 보고, 단어끼리 하나의 글자만 다르면 간선으로 연결되어 있다고 본다.begin에서 시작해서, 한 글자만 다른 단어들로 이동하면서(bfs) target을 찾아간다.import java.util.*;class Solution { // 변환을 몇 번 거쳐 만든 단어인지 정보를 저장하고 있는..
[프로그래머스, 12927] 야근 지수 (java)
https://school.programmers.co.kr/learn/courses/30/lessons/12927 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr메모리: 86.4 MB, 시간: 217.07 ms사용 알고리즘: 자료구조 무조건 작업량이 많은 작업의 크기를 줄이는 것이 유리하다.따라서 PriorityQueue에 내림차순으로 정렬하여, 현재 작업량이 가장 많이 남은 작업을 꺼내서 1씩 처리하는 과정을 n번 거치면 최소값을 구할 수 있다.import java.util.*;class Solution { public long solution(int ..
[프로그래머스, 43162] 네트워크 (java)
https://school.programmers.co.kr/learn/courses/30/lessons/43162 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr메모리: 93.4 MB, 시간: 0.45 ms사용 알고리즘: 유니온 파인드 먼저 유니온 파인드로 네트워크들을 모두 연결해 준다.이후 유니온 파인드에서 사용한 parent 배열을 순회한다.어느 한 네트워크에서 최고 조상인 parent[i] == i를 찾는다면 answer++ 해준다.class Solution { static int[] parent; public int soluti..
[프로그래머스, 43105] 정수 삼각형 (java)
https://school.programmers.co.kr/learn/courses/30/lessons/43105 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr메모리: 61.2 MB, 시간: 9.99 ms사용 알고리즘: 동적계획법 (Dynamic Programming), DFS dfs로 왼쪽 대각선으로 갔을 경우와 오른쪽 대각선으로 갔을 경우 중 더 큰 경우를 선택한다. 그런데 자신의 왼쪽에 있던 노드가 오른쪽 대각선으로 가는 경우와 자신이 왼쪽 대각선으로 가는 경우가 동일하니, 앞에서 이미 경우의 수를 구해놨다면 다시 구하지 않고 미리 저장해 둔 값을 사용..
[프로그래머스, 42628] 이중우선순위큐 (java)
https://school.programmers.co.kr/learn/courses/30/lessons/42628 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr메모리: 129 MB, 시간: 85.33 ms사용 알고리즘: 자료구조 큐에서 최댓값, 최솟값을 꺼내 리턴해주는 getMaxNum()과 getMinNum()을 메소드로 구현했다. 명령어 실행 중에는 큐가 비어있어도 리턴값을 아무거나 줘도 상관없지만,명령어 실행이 끝나고 마지막 최댓값, 최솟값을 구할 때 큐가 비어있으면 [0,0]을 리턴해야 되기 때문에큐가 비어있을 때 두 메소드의 리턴값을 무엇으로 할지가..
[프로그래머스, 164668] 조건에 맞는 사용자와 총 거래금액 조회하기 (mysql)
https://school.programmers.co.kr/learn/courses/30/lessons/164668 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.krSELECT user.user_id, user.nickname, SUM(board.price) AS total_salesFROM used_goods_board as boardINNER JOIN used_goods_user as userON board.writer_id = user.user_idWHERE board.status = 'DONE'GROUP BY board.writer_idHAVING SUM..
[프로그래머스, 157341] 대여 기록이 존재하는 자동차 리스트 구하기 (mysql)
https://school.programmers.co.kr/learn/courses/30/lessons/157341 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.krSELECT car_idFROM car_rental_company_carWHERE car_type = '세단'AND car_id IN ( SELECT car_id FROM car_rental_company_rental_history WHERE start_date >= '2022-10-01' AND start_date